Photovoltaik Anlage mit Grafana Dashboards überwachen

Photovoltaik Anlage mit Grafana Dashboards überwachen

Im Sommer 2023 haben wir eine Photovoltaikanlage installiert und uns von Matthias Klein inspirieren lassen, um ein umfassendes Monitoring-System einzurichten. In diesem Blog-Artikel teilen wir unsere Erfahrungen bei der Einbindung unserer SolarEdge-Anlage in unser Smart Home. Wir mussten mit verschiedenen Anwendungen auf die Daten zugreifen, darunter das PV-Monitoring, evcc für das Überschussladen und unsere Smart-Home-Software openHAB. Dabei haben wir interessante Lösungen gefunden, um die Daten effizient zu verarbeiten und in eine InfluxDB 2 Datenbank zu schreiben. Unser Ziel war es, ein leistungsstarkes Dashboard zu erstellen, das uns nicht nur die aktuellen PV-Daten anzeigt, sondern auch effiziente Berechnungen ermöglicht. Erfahre in diesem Artikel, wie wir diese Herausforderungen gemeistert haben und welche Optimierungen wir vorgenommen haben, um die Leistung unseres Monitoring-Systems zu steigern.

Der Start

Im Sommer 2023 haben wir eine Photovoltaikanlage angeschafft. Im Artikel Energiewende im Mehrfamilienhaus haben wir bereits über die “juristischen” Aspekte dieser Anlage gesprochen. Als Smart-Home-Nerd war von Anfang an klar, dass die PV-Anlage mit einem umfassend Monitoring versehen werden soll. Dazu haben wir uns von Matthias Klein InfluxDB 2.x - Dashboard für eine PV-Anlage inspirieren lassen. Unser Dashboard basiert auf dem was in diesem Blog erklärt wurde. Was wir hier besonders elegant finden ist, dass die einzelnen Messwerte der PV-Anlage alle mit dem gleichen Zeitstempel in das Influx Measurement geschrieben werden. So hat man mit der Pivot-Anweisung alle Werte zu einem Zeitstempel in einer “Zeile” zusammenfassen und sehr elegant damit rechnen, z.B. aus dem Zukauf und dem aktuellen (stündlich unterschiedlichen) Strompreis die Kosten für den Zukauf.

Influx Begrifflichkeiten

Begriff Erklärung
Time Series Data (Zeitreihendaten) Daten, die mit Zeitstempeln versehen sind und normalerweise in aufeinanderfolgenden Zeitpunkten erfasst werden.
Buckets (Eimer) Ein virtuelles Aufbewahrungsbehälter oder Speicherplatz für Zeitreihendaten in InfluxDB. Daten werden in Buckets organisiert.
Measurements (Messungen) Eine logische Kategorie oder ein Name, der verwendet wird, um verwandte Zeitreihendaten in einem Bucket zu organisieren.
Fields (Felder) Die eigentlichen Datenwerte in einem Datensatz, die als Gleitkommazahlen oder Zeichenketten vorliegen können.
Tags (Schlüssel) Schlüssel-Wert-Paare, die verwendet werden, um Datenpunkte zu kennzeichnen und zu filtern. Tags sind Metadaten und werden häufig für die Indexierung genutzt.
Queries (Abfragen) SQL-ähnliche Abfragen, die verwendet werden, um Daten aus InfluxDB abzurufen, zu filtern und zu aggregieren.
Continuous Queries (Fortlaufende Abfragen) Dauerhafte Abfragen, die automatisch Daten aggregieren und in einem anderen Bucket speichern.

Der Aufbau

In unserem Smart Home betreiben wir eine SolarEdge-Anlage, deren Wechselrichter über Modbus-TCP an unser System angebunden ist. Allerdings ergibt sich hier ein kleines Dilemma: Der Wechselrichter kann nur eine Modbus-TCP-Verbindung gleichzeitig verarbeiten, doch wir benötigen die Daten an verschiedenen Stellen. Neben dem PV-Monitoring müssen auch evcc für das Überschussladen und die Smart-Home-Software openHAB auf diese Daten zugreifen. Das bedeutet, dass wir mindestens drei separate Modbus-TCP-Verbindungen zum Wechselrichter herstellen müssten. Doch es gibt eine elegante Lösung.

Die PV-Überschuss-Steuerung evcc bietet einen Modbus-Proxy, der die Verbindung zum Wechselrichter herstellt und gleichzeitig als Modbus-TCP-Server fungiert, um Modbus-Anfragen an den Wechselrichter weiterzuleiten. In Anbetracht dessen, dass wir bereits einen MQTT-Server in Betrieb haben, kam uns die Idee, die Daten der PV-Anlage auf den MQTT-Broker zu veröffentlichen. Auf diese Weise können alle anderen Nutzer diese Daten bequem über MQTT abrufen. Für die Veröffentlichung der Wechselrichterdaten nutzen wir MDBD.

In openHAB haben wir entsprechende Items für die Wechselrichterdaten erstellt und sie über das MQTT-Plugin verbunden. Das ermöglicht es uns, diese Daten in der Benutzeroberfläche von openHAB anzuzeigen und auch Automatisierungen zu programmieren.

Für unser PV-Dashboard werden die Daten der Solaranlage in regelmäßigen Abständen in eine InfluxDB 2-Datenbank geschrieben. Anstelle des Standard-Persistenzmechanismus von openHAB haben wir ein kleines Python-Skript erstellt. Dies war erforderlich, um sicherzustellen, dass alle zusammengehörigen Daten gleichzeitig mit dem gleichen Zeitstempel in die Datenbank geschrieben werden.

Nachdem die Daten in der Datenbank gespeichert sind, haben wir zunächst das Dashboard von Matthias Kleine eins zu eins nachgebaut. Allerdings haben wir auch einige Skripte angepasst, um die Leistung zu steigern.

  1. Statt ein Skript pro Datenreihe anzulegen, haben wir alle Datenreihen in einem Skript zusammengefasst, was zu einer erheblichen Verbesserung der Aktualisierungsgeschwindigkeit des Diagramms führt.

  2. Auch für die “KPIs” werden alle Kennzahlen in einem Skript berechnet.

  3. Das “Ausdünnen” der Daten erfolgt mithilfe von Aufgaben, die die Daten in ein separates Bucket schreiben. Anstatt bereits Aggregate (z.B. auf Stundenbasis) zu erstellen, werden die Daten in der Aufgabe nur ausgedünnt. Für alle Messwerte, die auf “Zählerständen” basieren, wird immer nur ein Wert (der erste oder letzte) in das andere Bucket übertragen. Die Differenzen werden dann in Grafana berechnet.

  4. Bei der Ausführung der Aufgaben berechnen wir auch keine Zwischenwerte. Dies erfolgt weiterhin in Grafana.