PV-Monitoring auf eigenem Linux-Server
Sobald die eigene Photovoltaik-Anlage auf dem Dach ist, möchte man ganz genau sehen, wann wie viel Strom erzeugt wird und welcher Anteil davon davon selbst verbraucht oder eingespeist wird.
Ich habe mich nicht mit der Qualität, Aktualität und Genauigkeit der vom Wechselrichter-Hersteller bereitgestellten Lösung zufrieden gegeben und wollte eine Monitoring-Lösung für meine PV-Anlage auf einem lokalen Linux-Server selbst betreiben.
Dieser Artikel beschreibt die Vorgehensweise mit folgenden Bestandteilen
- Betriebsystem Debian Linux
- Scriptingsprache Python 3
- Datenlogger SMA EM
- TimeSeries-Datenbank InfluxDB
- Visualisierungssoftware Grafana
Zunächst benötigt man eine Hardware, auf der die Software-Komponenten laufen können. Ich habe mich gegen einen Raspberry Pi entschieden, da ich keine guten Erfahrungen mit der Langlebigkeit von SD-Karten habe und den Server auch noch für andere, etwas leistungshungrige Aufgaben benötige.
Die Wahl ist dann auf einen Dell Optiplex 3020 Micro Ultra Mini PC mit Core i5 Prozessor, 8GB RAM und 256GB SSD gefallen. Diesen konnte ich gebraucht für 200 € erwerben (April 2021).
Aber sicherlich tut es auch etwas schwächere Hardware. Ich gehe davon aus, dass man für 100 € einen Rechner gebraucht kaufen kann, der die Monitoring-Lösung betreiben kann.
Wichtig ist, dass der Rechner 24/7 laufen wird. Er sollte also stromsparend, leise und wartungsfrei sein. Passive Kühlung wäre ein Plus, geht aber auf Kosten der Leistungsfähigkeit.
Als Betriebssystem habe ich Debian 10 (“Buster”) gewählt und dabei nur das Minimalsystem ohne grafische Oberfläche gewählt. Sicherlich kann auch ein anderes Linux-System zum Einsatz kommen.
Als Datenlogger kommt die in Python geschriebene Software SMA-EM zum Einsatz. Diese wird wie folgt installiert:
apt install git
apt install python3 python3-pip cl-py-configparser
mkdir /opt/smaemd/
mkdir /etc/smaemd/
cd /opt/smaemd/
git clone https://github.com/datenschuft/SMA-EM.git .
cp systemd-settings /etc/systemd/system/smaemd.service
Wir möchten den Wechselrichter mit dem Protokoll Modbus auslesen, also benötigen wir noch dieses Python-Paket:
sudo pip3 install pymodbus
Kernstück ist die Konfigurationsdatei von SMA-EM, die manuell auf dem Pfad /etc/smaed/config angelegt werden muss:
[SMA-EM]# serials of sma-ems the daemon should take notice# seperated by spaceserials=SERIALNUMBER# features could filter serials to, but wouldn't see serials if these serials was not defines in SMA-EM serials# list of features to load/run#features=simplefswriter sample pvdata mqtt remotedebug symcon influxdbfeatures=pvdata influxdb[DAEMON]pidfile=/run/smaemd.pid# listen on an interface with the given ip# use 0.0.0.0 for any interfaceipbind=0.0.0.0# multicast ip and port of sma-datagrams# defaultsmcastgrp=239.12.255.254mcastport=9522statusdir=# each feature/plugin has its own section# called FEATURE-[featurename]# the feature section is required if a feature is listed in [SMA-EM]features
[FEATURE-pvdata]# How frequently to send updates over (defaults to 20 sec)min_update=10#debug outputdebug=0# inverter connection# ['host', 'port', 'modbus_id', 'manufacturer']inverters = [['IPADRESSE', '502', '3', 'SMA']]#['address', 'type', 'format', 'description', 'unit', 'value']#registers = [['30953', 'S32', 'FIX1', 'Device_Temperature', 'C']]registers = [['30057', 'U32', 'RAW', 'serial', ''],['30201','U32','ENUM','Status',''],['30051','U32','ENUM','DeviceClass',''],['30053','U32','ENUM','DeviceID',''],['40631', 'STR32', 'UTF8', 'Device Name', ''],['30775', 'S32', 'FIX0', 'AC Power', 'W'],['30813', 'S32', 'FIX0', 'AC apparent power', 'VA'],['30977', 'S32', 'FIX3', 'AC current', 'A'],['30783', 'S32', 'FIX2', 'AC voltage', 'V'],['30803', 'U32', 'FIX2', 'grid frequency', 'Hz'],['30773', 'S32', 'FIX0', 'DC power', 'W'],['30771', 'S32', 'FIX2', 'DC input voltage', 'V'],['30777', 'S32', 'FIX0', 'Power L1', 'W'],['30779', 'S32', 'FIX0', 'Power L2', 'W'],['30781', 'S32', 'FIX0', 'Power L3', 'W'],['30953', 'S32', 'FIX1', u'device temperature', u'\xb0C'],['30517', 'U64', 'FIX3', 'daily yield', 'kWh'],['30513', 'U64', 'FIX3', 'total yield', 'kWh'],['30521', 'U64', 'FIX0', 'operation time', 's'],['30525', 'U64', 'FIX0', 'feed-in time', 's'],['30975', 'S32', 'FIX2', 'intermediate voltage', 'V'],['30225', 'S32', 'FIX0', 'Isolation resistance', u'\u03a9'],['30581', 'U32', 'FIX0', u'energy from grid', 'Wh'],['30583', 'U32', 'FIX0', u'energy to grid', 'Wh'],['30865', 'S32', 'FIX0', 'Power from grid', 'W'],['30867', 'S32', 'FIX0', 'Power to grid', 'W']][FEATURE-influxdb]# influxhost=localhostport=8086db=SMAtimeout=5user=password=debug=0# How frequently to send updates over (defaults to 20 sec)min_update=10#emdatameasurement=SMAEMfields=cosphi,psupply,qsupply,ssupply,pconsume,qconsume,sconsume,pconsumecounter,qconsumecounter,sconsumecounter,psupplycounter,qsupplycounter,ssupplycounter#pvdatapvmeasurement=SMAWRpvfields=AC Power,AC apparent power,AC current,AC voltage,grid frequency,DC input voltage,daily yield,total yield,device temperature
Wenn ein Homemanager des Herstellers SMA ausgelesen werden soll, muss SERIALNUMBER mit der Seriennummer des Home Managers ersetzt werden.
Um einen Wechselrichter per Modbus auszulesen, muss IPADRESSE mit der tatsächlichen IP-Adresse des Wechselrichters ersetzt werden.
Der Rest der Konfigurationsdatei muss nicht, kann aber bei Bedarf angepasst werden.
der Homemanager und Wechselrichter müssen beide mit dem Linux-Server im selben lokalen Netzwerk sein.
Der Wechselrichter muss den Modbus-Server aktiviert haben.
Die obige Config passt für den Smart Home Manager 2.0 und den Wechselrichter Sunny Tripower 15000TL-30. Beides sind Produkte der Firma SMA.
Wenn ein anderer Wechselrichter ausgelesen werden soll, müssen evtl. die Modbus-Register angepasst werden.
Als nächstes installieren wir eine Datenbank, damit die von SMA-EM gesammelten Daten dauerhaft gespeichert werden können und später von der Visualisierungsschicht gelesen werden können. Als Datenbank wählen wir InfluxDB.
Installationsquelle zu apt hinzufügen:
wget -qO- https://repos.influxdata.com/influxdb.key | gpg --dearmor > /etc/apt/trusted.gpg.d/influxdb.gpg
export DISTRIB_ID=$(lsb_release -si); export DISTRIB_CODENAME=$(lsb_release -sc)
echo "deb [signed-by=/etc/apt/trusted.gpg.d/influxdb.gpg] https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" > /etc/apt/sources.list.d/influxdb.list
Installieren und starten:
sudo apt-get update && sudo apt-get install influxdb
sudo systemctl unmask influxdb.service
sudo systemctl start influxdb
Jetzt muss in InfluxDB noch eine Datenbank angelegt werden:
Einfach das Kommandozeilentool influx aufrufen und anschließen die DB anlegen:
> CREATE DATABASE SMA
Jetzt können wir den Datenlogger starten:
sudo systemctl daemon-reload
sudo systemctl enable smaemd.service
sudo systemctl start smaemd.service
Es sollen jetzt halbminütlich Daten ausgelesen und in die Datenbank geschrieben werden. Man kann das sehen indem man wieder influx startet und folgende Kommandos eingibt:
> use SMA> select * from SMAWR> select * from SMAEM
Falls die Einträge fehlen, lohnt es sich mal in der Config-Datei überall debug=1 stellen und den Dienst manuell zu starten und den Kommandozeilen-Output zu analysieren.
sudo python3 /opt/smaemd/sma-em-measurement.py
Wenn alles bis hierhin geklappt hat, sollten für die Tabellen SMAWR und SMAEM jeweils eine Zeile pro Messung auftauchen. Jetzt können wir uns an die Visualisierung mit Grafana machen
Installationsquelle hinzufügen:
sudo apt-get install -y apt-transport-https
sudo apt-get install -y software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
Installieren und starten:
sudo apt-get update
sudo apt-get install grafana
sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl status grafana-server
Grafana startet auf Port 3000. Man kann das Webinterface also direkt öffnen, wenn man im Browser http://<IP-Adresse des Linux-Servers>:3000 öffnet.
Wenn man im Grafana-Webinterface angemeldet ist, muss zunächst die Datenquelle hinzugefügt werden. Dazu im Menü Configurations -> Data Sources wählen. Dann Add data source und InfluxDB auswählen.
Als URL http://localhost:8086 eintragen. Der Rest kann so bleiben.
Dann kann man folgendes, von mir erstelltes Dashboard importieren. Dazu auf das +Icon im seitlichen Menü klicken und Import wählen. Folgendes in das Feld Import via panel json reinpasten:
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"id": 1,
"links": [],
"panels": [
{
"datasource": null,
"fieldConfig": {
"defaults": {
"color": {
"mode": "continuous-GrYlRd"
},
"mappings": [],
"max": 15000,
"min": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
}
]
},
"unit": "watt"
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 3,
"x": 0,
"y": 0
},
"id": 20,
"options": {
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"showThresholdLabels": false,
"showThresholdMarkers": true,
"text": {}
},
"pluginVersion": "7.5.4",
"targets": [
{
"groupBy": [
{
"params": [
"$__interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"measurement": "SMAWR",
"orderByTime": "ASC",
"policy": "default",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"AC apparent power"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": []
}
],
"title": "AC Scheinleistung",
"type": "gauge"
},
{
"datasource": null,
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "watt"
},
"overrides": [
{
"matcher": {
"id": "byName",
"options": "PV-Erzeugung"
},
"properties": [
{
"id": "color",
"value": {
"fixedColor": "green",
"mode": "fixed"
}
}
]
},
{
"matcher": {
"id": "byName",
"options": "Einspeisung"
},
"properties": [
{
"id": "color",
"value": {
"fixedColor": "yellow",
"mode": "fixed"
}
}
]
}
]
},
"gridPos": {
"h": 4,
"w": 3,
"x": 3,
"y": 0
},
"id": 26,
"options": {
"displayMode": "gradient",
"orientation": "horizontal",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"showUnfilled": true,
"text": {}
},
"pluginVersion": "7.5.4",
"targets": [
{
"alias": "PV-Erzeugung",
"groupBy": [
{
"params": [
"$__interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"measurement": "SMAEM",
"orderByTime": "ASC",
"policy": "default",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"pvpower"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": []
},
{
"alias": "Einspeisung",
"groupBy": [
{
"params": [
"$__interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"hide": false,
"measurement": "SMAEM",
"orderByTime": "ASC",
"policy": "default",
"refId": "B",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"psupply"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": []
}
],
"title": "Produktion",
"type": "bargauge"
},
{
"datasource": null,
"fieldConfig": {
"defaults": {
"color": {
"fixedColor": "blue",
"mode": "fixed"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "watt"
},
"overrides": [
{
"matcher": {
"id": "byName",
"options": "Eigenverbrauch"
},
"properties": [
{
"id": "color",
"value": {
"fixedColor": "green",
"mode": "fixed"
}
}
]
},
{
"matcher": {
"id": "byName",
"options": "Netzbezug"
},
"properties": [
{
"id": "color",
"value": {
"fixedColor": "red",
"mode": "fixed"
}
}
]
}
]
},
"gridPos": {
"h": 4,
"w": 3,
"x": 6,
"y": 0
},
"id": 24,
"options": {
"displayMode": "gradient",
"orientation": "horizontal",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"showUnfilled": true,
"text": {}
},
"pluginVersion": "7.5.4",
"targets": [
{
"alias": "Direktverbrauch",
"groupBy": [
{
"params": [
"$__interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"measurement": "SMAEM",
"orderByTime": "ASC",
"policy": "default",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"pdirectusage"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": []
},
{
"alias": "Netzbezug",
"groupBy": [
{
"params": [
"$__interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"hide": false,
"measurement": "SMAEM",
"orderByTime": "ASC",
"policy": "default",
"refId": "B",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"pconsume"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": []
}
],
"title": "Verbrauch",
"type": "bargauge"
},
{
"datasource": null,
"fieldConfig": {
"defaults": {
"color": {
"fixedColor": "green",
"mode": "fixed"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "kwatth"
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 3,
"x": 9,
"y": 0
},
"id": 28,
"options": {
"colorMode": "value",
"graphMode": "none",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"text": {},
"textMode": "auto"
},
"pluginVersion": "7.5.4",
"targets": [
{
"groupBy": [
{
"params": [
"$__interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"measurement": "SMAWR",
"orderByTime": "ASC",
"policy": "default",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"daily yield"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": []
}
],
"title": "Tagesertrag",
"type": "stat"
},
{
"datasource": null,
"fieldConfig": {
"defaults": {
"color": {
"fixedColor": "red",
"mode": "fixed"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "light-red",
"value": null
},
{
"color": "dark-red",
"value": 20
}
]
},
"unit": "kwatth"
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 3,
"x": 12,
"y": 0
},
"id": 14,
"options": {
"colorMode": "value",
"graphMode": "none",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"text": {},
"textMode": "auto"
},
"pluginVersion": "7.5.4",
"targets": [
{
"groupBy": [
{
"params": [
"$__interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"measurement": "SMAEM",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT spread(\"pconsumecounter\") FROM \"SMAEM\" WHERE $timeFilter fill(null)",
"rawQuery": true,
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"pconsume"
],
"type": "field"
},
{
"params": [],
"type": "spread"
}
]
],
"tags": []
}
],
"title": "Bezogen",
"type": "stat"
},
{
"datasource": null,
"fieldConfig": {
"defaults": {
"color": {
"fixedColor": "yellow",
"mode": "fixed"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "dark-green",
"value": null
},
{
"color": "yellow",
"value": 100
}
]
},
"unit": "kwatth"
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 3,
"x": 15,
"y": 0
},
"id": 12,
"options": {
"colorMode": "value",
"graphMode": "none",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"text": {},
"textMode": "auto"
},
"pluginVersion": "7.5.4",
"targets": [
{
"groupBy": [
{
"params": [
"$__interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"measurement": "SMAEM",
"orderByTime": "ASC",
"policy": "default",
"query": "SELECT spread(\"psupplycounter\") FROM \"SMAEM\" WHERE $timeFilter fill(null)",
"rawQuery": true,
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"psupply"
],
"type": "field"
},
{
"params": [],
"type": "spread"
}
]
],
"tags": []
}
],
"title": "Eingespeist",
"type": "stat"
},
{
"datasource": null,
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "light-blue",
"value": null
},
{
"color": "purple",
"value": 60
}
]
},
"unit": "celsius"
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 3,
"x": 18,
"y": 0
},
"id": 16,
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"text": {},
"textMode": "auto"
},
"pluginVersion": "7.5.4",
"targets": [
{
"groupBy": [
{
"params": [
"$__interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"measurement": "SMAWR",
"orderByTime": "ASC",
"policy": "default",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"device temperature"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": []
}
],
"title": "Temperatur",
"type": "stat"
},
{
"datasource": null,
"fieldConfig": {
"defaults": {
"color": {
"fixedColor": "purple",
"mode": "fixed"
},
"decimals": 1,
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "hertz"
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 3,
"x": 21,
"y": 0
},
"id": 18,
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"text": {},
"textMode": "auto"
},
"pluginVersion": "7.5.4",
"targets": [
{
"groupBy": [
{
"params": [
"$__interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"measurement": "SMAWR",
"orderByTime": "ASC",
"policy": "default",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"grid frequency"
],
"type": "field"
},
{
"params": [],
"type": "last"
}
]
],
"tags": []
}
],
"timeFrom": null,
"timeShift": null,
"title": "Grid Frequency",
"type": "stat"
},
{
"aliasColors": {
"Eigenverbrauch": "blue",
"Netzbezug": "dark-red"
},
"bars": true,
"dashLength": 10,
"dashes": false,
"datasource": null,
"fieldConfig": {
"defaults": {},
"overrides": []
},
"fill": 5,
"fillGradient": 0,
"gridPos": {
"h": 7,
"w": 24,
"x": 0,
"y": 4
},
"hiddenSeries": false,
"id": 4,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 0,
"nullPointMode": "null",
"options": {
"alertThreshold": true
},
"percentage": false,
"pluginVersion": "7.5.4",
"pointradius": 2,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"alias": "Netzbezug",
"groupBy": [
{
"params": [
"$__interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"measurement": "SMAEM",
"orderByTime": "ASC",
"policy": "default",
"refId": "Netzbezug",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"pconsume"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": []
},
{
"alias": "Eigenverbrauch",
"groupBy": [
{
"params": [
"$__interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"hide": false,
"measurement": "SMAEM",
"orderByTime": "ASC",
"policy": "default",
"refId": "Eigenverbrauch",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"pdirectusage"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": []
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Verbrauch",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
},
{
"aliasColors": {
"AC Power vom WR": "dark-green",
"Einspeisung": "semi-dark-yellow"
},
"bars": true,
"dashLength": 10,
"dashes": false,
"datasource": null,
"description": "",
"fieldConfig": {
"defaults": {},
"overrides": []
},
"fill": 5,
"fillGradient": 0,
"gridPos": {
"h": 8,
"w": 24,
"x": 0,
"y": 11
},
"hiddenSeries": false,
"id": 2,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 0,
"nullPointMode": "null",
"options": {
"alertThreshold": true
},
"percentage": false,
"pluginVersion": "7.5.4",
"pointradius": 2,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"alias": "AC Power vom WR",
"groupBy": [
{
"params": [
"$__interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"measurement": "SMAWR",
"orderByTime": "ASC",
"policy": "default",
"refId": "AC Power",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"AC Power"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": []
},
{
"alias": "Einspeisung",
"groupBy": [
{
"params": [
"$__interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"hide": false,
"measurement": "SMAEM",
"orderByTime": "ASC",
"policy": "default",
"refId": "Supply",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"psupply"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": []
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Erzeugung",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
}
],
"refresh": "10s",
"schemaVersion": 27,
"style": "dark",
"tags": [],
"templating": {
"list": []
},
"time": {
"from": "now/d",
"to": "now/d"
},
"timepicker": {},
"timezone": "",
"title": "SMA",
"uid": "EJzvn0XGk",
"version": 19
}
Fertig ist das Dashboard!