Monitoring, Ertragskontrolle & Apps

Grafana Dashboards für PV-Monitoring aufbauen

Grafana Dashboard für Balkonkraftwerk einrichten: Installation per Docker, Datenquellen anbinden, Panels gestalten und fertige Dashboard-Vorlagen nutzen.

    Grafana Dashboards für PV-Monitoring aufbauen

    Du hast OpenDTU am Laufen, die Daten fließen in InfluxDB, und jetzt willst du mehr als nur Zahlen in einer Tabelle sehen? Grafana macht aus deinen trockenen Messdaten richtig schicke Dashboards mit Leistungskurven, Tageserträgen, Monatsvergleichen und allem, was das Daten-Herz begehrt. Und das Beste: Grafana ist Open Source und kostenlos.

    TL;DR

    • Grafana ist ein Open-Source-Visualisierungstool, das Daten aus InfluxDB, Home Assistant und anderen Quellen als interaktive Dashboards darstellt
    • Installation am einfachsten per Docker (auf Raspberry Pi, NAS oder Mini-PC), dauert 5 Minuten
    • Fertige Dashboard-Vorlagen für OpenDTU und PV-Monitoring gibt es auf grafana.com/dashboards zum Import
    • Die wichtigsten Panels: Leistungskurve (Time Series), Tagesertrag (Stat), Monatsvergleich (Bar Chart), Amortisationsrechner (Gauge)
    • Grafana läuft komplett lokal, keine Cloud-Abhängigkeit, kein Account-Zwang

    Was Grafana kann und warum es sich lohnt

    Grafana ist ein Visualisierungstool für Zeitreihendaten. Klingt technisch, bedeutet aber einfach: Es nimmt Messwerte, die sich über die Zeit ändern (wie die Leistung deines Balkonkraftwerks), und stellt sie als Diagramme, Balken, Gauges und Zahlen dar.

    Der entscheidende Unterschied zu den Monitoring-Apps der Hersteller: Grafana ist infinit anpassbar. Du bestimmst, welche Daten wo und wie dargestellt werden. Du kannst verschiedene Datenquellen kombinieren (Solarertrag aus InfluxDB plus Wetterdaten von einer API plus Strompreise aus einer Tabelle). Und du kannst Dashboards bauen, die genau die Fragen beantworten, die dich interessieren.

    Ein typisches PV-Dashboard zeigt auf einen Blick: aktuelle Leistung in Watt, Tagesertrag in kWh, Monatsverlauf als Balkendiagramm, Jahresvergleich, Leistungskurve der letzten 24 Stunden mit beiden Modulen einzeln und die berechnete Ersparnis in Euro. Alles auf einer Seite, live aktualisiert.

    Voraussetzungen: Was du vorher brauchst

    Bevor du Grafana installierst, müssen die Daten irgendwo gespeichert sein. Grafana selbst speichert keine Messdaten, es liest sie nur aus einer Datenquelle. Die gängigsten Setups für Balkonkraftwerk-Monitoring:

    Setup 1: OpenDTU + MQTT + InfluxDB + Grafana. Das ist der Klassiker. OpenDTU liest den Wechselrichter aus, schickt die Daten per MQTT an Telegraf, Telegraf schreibt sie in InfluxDB, und Grafana liest aus InfluxDB. Klingt nach vielen Komponenten, lässt sich aber mit Docker in 15 Minuten aufsetzen.

    Setup 2: Home Assistant + Grafana. Wenn du Home Assistant nutzt, kannst du Grafana direkt an die Home-Assistant-Datenbank anbinden. Weniger Komponenten, aber etwas weniger Flexibilität bei den Abfragen.

    Setup 3: Shelly + MQTT + InfluxDB + Grafana. Statt OpenDTU nutzt du die MQTT-Daten eines Shelly Plug S. Funktioniert genauso, nur mit weniger Detaildaten (keine Modulebene).

    Als Hardware brauchst du einen kleinen Server, der 24/7 läuft. Die Optionen:

    • Raspberry Pi 4 oder 5: Der Klassiker. 4 GB RAM reichen, 8 GB sind komfortabler. Kosten: 40-70 Euro. Stromverbrauch: 3-5 Watt.
    • NAS (Synology, QNAP): Wenn du schon ein NAS hast, kann Grafana dort als Docker-Container laufen. Kein zusätzliches Gerät nötig.
    • Mini-PC: Ein gebrauchter Thin Client oder Intel NUC bietet mehr Leistung als ein Pi, verbraucht aber auch 10-15 Watt.
    • Alter Laptop: Klappt auch, ist aber in Sachen Stromverbrauch ineffizient für den 24/7-Betrieb.

    Installation mit Docker: Der schnellste Weg

    Docker ist die einfachste Art, Grafana (und InfluxDB und Telegraf gleich mit) zu installieren. Docker packt jede Software in einen isolierten Container, sodass du dir keine Sorgen um Abhängigkeiten oder Konfigurationskonflikte machen musst.

    Docker auf dem Raspberry Pi installieren

    Wenn Docker noch nicht auf deinem Pi läuft:

    curl -fsSL https://get.docker.com -o get-docker.sh
    sudo sh get-docker.sh
    sudo usermod -aG docker $USER
    

    Danach einmal abmelden und wieder anmelden, damit die Gruppenrechte greifen.

    Docker Compose für den kompletten Stack

    Erstelle eine Datei docker-compose.yml mit folgendem Inhalt:

    version: "3"
    services:
      influxdb:
        image: influxdb:2.7
        ports:
          - "8086:8086"
        volumes:
          - influxdb-data:/var/lib/influxdb2
        environment:
          - DOCKER_INFLUXDB_INIT_MODE=setup
          - DOCKER_INFLUXDB_INIT_USERNAME=admin
          - DOCKER_INFLUXDB_INIT_PASSWORD=changeme123
          - DOCKER_INFLUXDB_INIT_ORG=solar
          - DOCKER_INFLUXDB_INIT_BUCKET=pv_data
          - DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=mein-geheimer-token
    
      telegraf:
        image: telegraf:latest
        depends_on:
          - influxdb
        volumes:
          - ./telegraf.conf:/etc/telegraf/telegraf.conf:ro
    
      grafana:
        image: grafana/grafana:latest
        ports:
          - "3000:3000"
        volumes:
          - grafana-data:/var/lib/grafana
        depends_on:
          - influxdb
    
    volumes:
      influxdb-data:
      grafana-data:
    

    Starte alles mit:

    docker compose up -d
    

    Nach einer Minute sind InfluxDB, Telegraf und Grafana bereit. Grafana erreichst du unter http://<IP-deines-Pi>:3000. Der Standard-Login ist admin/admin, beim ersten Login wirst du aufgefordert, das Passwort zu ändern.

    Grafana konfigurieren: Die erste Datenquelle

    Bevor du Dashboards baust, musst du Grafana sagen, woher die Daten kommen.

    InfluxDB als Datenquelle hinzufügen

    1. In Grafana: Menü > Connections > Data Sources > Add data source
    2. Wähle "InfluxDB"
    3. Unter "Query Language" wähle "Flux" (für InfluxDB 2.x)
    4. URL: http://influxdb:8086 (wenn alles im gleichen Docker-Netzwerk läuft)
    5. Organisation: solar (wie oben konfiguriert)
    6. Token: mein-geheimer-token
    7. Default Bucket: pv_data
    8. Klicke "Save & Test"

    Wenn die Verbindung steht, siehst du eine grüne Bestätigung. Ab jetzt kann Grafana auf alle Daten in InfluxDB zugreifen.

    Dein erstes Dashboard: Die wichtigsten Panels

    Jetzt wird es kreativ. Ein gutes PV-Dashboard beantwortet die Fragen, die du dir jeden Tag stellst: Wie viel produziert mein Balkonkraftwerk gerade? Was kam heute zusammen? Wie läuft dieser Monat im Vergleich?

    Panel 1: Aktuelle Leistung (Stat-Panel)

    Das Stat-Panel zeigt eine einzelne Zahl groß und prominent an, perfekt für die aktuelle Leistung in Watt.

    Erstelle ein neues Dashboard (Dashboards > New Dashboard > Add Visualization). Wähle den Panel-Typ "Stat". Im Query-Editor schreibst du eine Flux-Abfrage:

    from(bucket: "pv_data")
      |> range(start: -5m)
      |> filter(fn: (r) => r._measurement == "solar")
      |> filter(fn: (r) => r._field == "ac_power")
      |> last()
    

    Unter "Panel Options" gibst du dem Panel einen Titel ("Aktuelle Leistung"), wählst die Einheit "Watt" und stellst Schwellenwerte ein: grün ab 100 W, gelb ab 50 W, rot unter 50 W. So siehst du auf einen Blick, ob die Sonne scheint.

    Panel 2: Tagesertrag (Stat-Panel)

    Ein zweites Stat-Panel zeigt den heutigen Gesamtertrag in kWh:

    from(bucket: "pv_data")
      |> range(start: today())
      |> filter(fn: (r) => r._measurement == "solar")
      |> filter(fn: (r) => r._field == "daily_yield")
      |> last()
    

    Panel 3: Leistungskurve (Time Series)

    Das Herzstück jedes PV-Dashboards ist die Leistungskurve: ein Liniendiagramm, das zeigt, wie sich die Leistung über den Tag entwickelt hat. Wähle den Panel-Typ "Time Series" und nutze diese Abfrage:

    from(bucket: "pv_data")
      |> range(start: -24h)
      |> filter(fn: (r) => r._measurement == "solar")
      |> filter(fn: (r) => r._field == "ac_power")
      |> aggregateWindow(every: 5m, fn: mean)
    

    Im Panel siehst du jetzt die typische Glockenkurve eines Sonnentags: morgens ansteigend, mittags auf dem Peak, nachmittags abfallend. Wenn du die Leistung pro Moduleingang getrennt darstellen willst (was für die Fehlersuche extrem hilfreich ist), fügst du eine zweite Query hinzu, die nach dem jeweiligen Kanal filtert.

    Panel 4: Monatsvergleich (Bar Chart)

    Ein Balkendiagramm, das die Monatserträge nebeneinander stellt, gibt dir den Überblick über saisonale Schwankungen und hilft beim Jahresvergleich:

    from(bucket: "pv_data")
      |> range(start: -12mo)
      |> filter(fn: (r) => r._measurement == "solar")
      |> filter(fn: (r) => r._field == "daily_yield")
      |> aggregateWindow(every: 1mo, fn: sum)
    

    Panel 5: Amortisationsrechner (Gauge)

    Ein Gauge-Panel kann dir anzeigen, wie weit dein Balkonkraftwerk auf dem Weg zur Amortisation ist. Dafür berechnest du den Gesamtertrag in kWh, multiplizierst mit deinem Strompreis und setzt das Ergebnis ins Verhältnis zu deinen Anschaffungskosten. Die konkreten Werte konfigurierst du als Variablen im Dashboard.

    Fertige Dashboard-Vorlagen nutzen

    Du musst nicht jedes Panel selbst bauen. Auf grafana.com/dashboards gibt es hunderte fertige Vorlagen, die du importieren kannst. Suche nach "OpenDTU" oder "Solar PV" und du findest Dashboards, die bereits optimierte Abfragen, schöne Farben und sinnvolle Layouts haben.

    Besonders empfehlenswert:

    • "OpenDTU [Flux]" (Dashboard ID 18819): Speziell für OpenDTU-Daten aus InfluxDB, mit allen relevanten Panels vorgebaut.
    • "PV Power Ahoy" (Dashboard ID 16850): Für AhoyDTU-Nutzer.
    • "Solar PV System" (Dashboard ID 18753): Ein allgemeines PV-Dashboard mit Leistungskurven, Ertragsstatistiken und Vergleichsansichten.

    Zum Importieren: In Grafana unter Dashboards > Import die Dashboard-ID eingeben und deine Datenquelle zuweisen. In 30 Sekunden hast du ein fertiges Dashboard, das du dann nach deinen Wünschen anpassen kannst.

    Fortgeschrittene Tricks

    Wenn die Basics stehen, gibt es ein paar Kniffe, die dein Dashboard auf das nächste Level heben.

    Variablen für flexible Zeiträume

    Grafana-Variablen erlauben es dir, per Dropdown den Zeitraum zu wechseln (letzte 24h, letzte Woche, letzter Monat) oder zwischen verschiedenen Wechselrichtern umzuschalten, wenn du mehrere hast. Unter Dashboard Settings > Variables definierst du die Variablen und verwendest sie in deinen Abfragen.

    Annotations für besondere Ereignisse

    Annotations sind Markierungen in der Zeitachse, die besondere Ereignisse kennzeichnen: "Module gereinigt", "Neuen Wechselrichter installiert", "Sturm mit Hagel". So siehst du auf einen Blick, warum der Ertrag an einem bestimmten Tag anders war als erwartet.

    Alerting: Benachrichtigungen bei Problemen

    Grafana kann dich per E-Mail, Telegram oder Slack benachrichtigen, wenn ein Messwert einen Schwellwert über- oder unterschreitet. Beispiel: "Wenn die Tagesproduktion an einem Wochentag unter 0,5 kWh bleibt, schicke eine Telegram-Nachricht." Das ist dein automatischer Wächter, der aufpasst, wenn du nicht hinschaust.

    Calculated Fields: Ersparnis in Euro

    Mit Grafana Transformations kannst du aus dem kWh-Ertrag direkt die Euro-Ersparnis berechnen. Multipliziere den Ertrag mit deinem Strompreis (z.B. 0,35 Euro/kWh), und du siehst nicht nur die technischen Daten, sondern auch den finanziellen Nutzen. Das ist motivierender als reine kWh-Werte und hilft bei der Frage, ob sich das Balkonkraftwerk lohnt.

    Dashboard-Design: Lesbar statt überladen

    Ein häufiger Anfängerfehler ist, alles auf ein Dashboard zu packen. 20 Panels, winzige Schrift, jeder Messwert irgendwo untergebracht. Das sieht beeindruckend aus, ist aber im Alltag unbrauchbar.

    Besser: Halte dein Haupt-Dashboard schlank. Die aktuelle Leistung, der Tagesertrag, die Leistungskurve und vielleicht noch der Monatsertrag. Das sind vier bis fünf Panels, die du auf einen Blick erfasst. Für Details erstellst du separate Dashboards: eines für Langzeitvergleiche, eines für die technischen Details auf Modulebene, eines für die Finanzen.

    Nutze sinnvolle Farben: Grün für gute Werte, Gelb für Aufmerksamkeit, Rot für Probleme. Aber sparsam, nicht jedes Panel braucht eine Ampel. Und wähle Schriftgrößen, die du auch aus zwei Metern Entfernung lesen kannst, falls du das Dashboard auf einem Wanddisplay zeigen willst.

    Grafana auf dem Wanddisplay

    Apropos Wanddisplay: Ein alter Tablet-PC oder ein günstiger Monitor mit einem Raspberry Pi macht dein Grafana-Dashboard zum Energiemonitor im Flur oder in der Küche. Grafana bietet einen Kiosk-Modus, der die Menüleisten ausblendet und nur das Dashboard zeigt. Mit dem Auto-Refresh (alle 30 Sekunden) hast du eine Live-Anzeige deiner Solarproduktion.

    Das ist technisch nicht nötig, macht aber erstaunlich viel Spaß. Es gibt wenige Dinge, die so befriedigend sind, wie an einem sonnigen Tag im Vorbeigehen zu sehen, dass das Balkonkraftwerk gerade 600 Watt liefert.

    Wenn etwas nicht funktioniert

    Die häufigsten Probleme beim Grafana-Setup:

    Keine Daten im Dashboard: Prüfe, ob InfluxDB Daten enthält (über das InfluxDB-Webinterface auf Port 8086). Wenn ja, stimmt die Abfrage in Grafana nicht. Wenn nein, liegt das Problem bei Telegraf oder der MQTT-Verbindung.

    Dashboard lädt langsam: Bei großen Zeiträumen (mehrere Monate) kann die Abfrage träge werden. Nutze aggregateWindow() in den Flux-Abfragen, um die Datenmenge zu reduzieren. Statt jeden Messpunkt anzuzeigen, berechnest du 5-Minuten- oder 15-Minuten-Durchschnitte.

    Zeitzone stimmt nicht: Grafana nutzt standardmäßig die Browser-Zeitzone. Wenn die Zeitachse verschoben aussieht, prüfe unter Dashboard Settings > Time Options die Zeitzone und stelle sie auf "Europe/Berlin".

    Mehrere Datenquellen kombinieren: Das volle Bild

    Das Schöne an Grafana ist, dass du verschiedene Datenquellen in einem einzigen Dashboard kombinieren kannst. Neben den PV-Daten aus InfluxDB kannst du:

    Wetterdaten einbinden

    Über die OpenWeatherMap-API (kostenlos für 1.000 Abfragen pro Tag) holst du dir Temperatur, Bewölkung, Sonnenstunden und Niederschlag. In Grafana konfigurierst du die API als JSON-Datenquelle und kannst dann die Wetterdaten neben deinen PV-Daten darstellen. Das macht Ertragsvergleiche viel aussagekräftiger: Du siehst auf einen Blick, ob ein schwacher Tag am Wetter oder an einem technischen Problem lag.

    Strompreise visualisieren

    Wenn du einen dynamischen Stromtarif hast (Tibber, aWATTar, Rabot Charge), kannst du die stündlichen Strompreise in Grafana anzeigen. Das ergibt spannende Korrelationen: Wann war dein Solarstrom mehr wert als der Netzstrom? Wie viel hättest du am Spotmarkt verdient? Und wann hätte es sich gelohnt, Strom aus dem Netz zu ziehen statt eigenen zu verbrauchen?

    Verbrauchsdaten integrieren

    Wenn du einen Shelly Pro 3EM oder einen IR-Lesekopf am Stromzähler hast, fließen auch deine Verbrauchsdaten über MQTT in InfluxDB. In Grafana erstellst du dann ein Panel, das Produktion und Verbrauch übereinanderlegt. Die Fläche zwischen beiden Kurven zeigt dir visuell, wie viel du selbst nutzt (Eigenverbrauch, Kurve Produktion über Verbrauch) und wie viel du aus dem Netz ziehst (Netzbezug, Kurve Verbrauch über Produktion).

    Grafana-Alerting: Dein automatischer Wächter

    Grafana hat ein eingebautes Alerting-System, das dich aktiv informiert, wenn etwas nicht stimmt. Du definierst Regeln, Grafana prüft sie regelmäßig und benachrichtigt dich über verschiedene Kanäle.

    Alert-Regeln für PV-Monitoring

    Sinnvolle Alert-Regeln für ein Balkonkraftwerk:

    Wechselrichter offline: "Wenn der letzte Datenpunkt älter als 30 Minuten ist und es zwischen 8 und 20 Uhr ist, sende einen Alert." Das erkennt Totalausfälle des Wechselrichters oder der Kommunikation.

    Tagesertrag zu niedrig: "Wenn der Tagesertrag um 18 Uhr unter 1 kWh liegt und die Einstrahlung laut Wetterservice über 3 kWh/m2 war, sende einen Alert." Das erkennt Minderertrag an eigentlich sonnigen Tagen.

    Asymmetrische Module: "Wenn die Tagesleistung von Modul 1 weniger als 70 % der Tagesleistung von Modul 2 beträgt, sende einen Alert." Das erkennt Probleme an einem einzelnen Modul.

    Benachrichtigungskanäle

    Grafana kann Alerts über verschiedene Kanäle senden:

    • E-Mail: Klassisch, zuverlässig, aber nicht sofort im Blick
    • Telegram: Schnell, kostenlos, Nachrichten kommen als Chat-Message
    • Slack/Discord: Wenn du ohnehin einen dieser Dienste nutzt
    • Webhook: Für individuelle Integrationen, z.B. eine Lampe, die rot leuchtet

    Telegram ist für die meisten Balkonkraftwerk-Betreiber der beste Kanal: kostenlos, schnell und die Nachricht ist sofort auf dem Handy. Die Einrichtung dauert 10 Minuten (Telegram-Bot erstellen, Token in Grafana eintragen).

    Performance-Optimierung: Schnelle Dashboards

    Nach ein paar Monaten mit hochauflösenden Daten kann Grafana träge werden, wenn du Zeiträume von mehreren Wochen oder Monaten abfragst. Hier ein paar Tipps für schnelle Dashboards.

    Aggregation in den Abfragen

    Statt jeden einzelnen Datenpunkt der letzten 30 Tage anzuzeigen (das können Millionen sein), nutze aggregateWindow() in deinen Flux-Abfragen. Für einen Monatsüberblick reichen 15-Minuten-Durchschnitte, für einen Jahresüberblick Tagessummen. Das reduziert die Datenmenge um den Faktor 100-1000 und macht die Darstellung flüssig.

    Dashboard-Variablen für Zeiträume

    Nutze Grafana-Variablen, um den Aggregationsintervall automatisch an den gewählten Zeitraum anzupassen: Letzte 24h = 1-Minuten-Auflösung, letzte Woche = 5-Minuten-Auflösung, letzter Monat = 15-Minuten-Auflösung, letztes Jahr = 1-Stunden-Auflösung. Das geht über eine Template-Variable in der Flux-Query.

    Caching aktivieren

    In den Grafana-Einstellungen kannst du Query-Caching aktivieren. Damit werden wiederholte Abfragen aus dem Cache beantwortet statt jedes Mal InfluxDB zu fragen. Besonders bei Dashboards, die sich nur alle 5 Minuten aktualisieren, spart das Ressourcen und beschleunigt die Darstellung.

    Grafana in der Praxis: Was Nutzer daraus machen

    Die Grafana-Community hat beeindruckende PV-Dashboards geschaffen. Auf grafana.com/dashboards findest du hunderte Vorlagen, und in den OpenDTU-GitHub-Discussions teilen Nutzer Screenshots und JSON-Exports ihrer Dashboards.

    Ein besonders populäres Layout: Oben eine Reihe mit Stat-Panels (aktuelle Leistung, Tagesertrag, Monatsertrag, Gesamtertrag in Euro). Darunter die große Leistungskurve der letzten 24h mit beiden Modulen. Daneben ein Gauge, das den Eigenverbrauchsanteil zeigt. Unten ein Balkendiagramm der Monatserträge im Jahresvergleich. Alles auf einer Seite, live aktualisiert.

    Das Schöne: Einmal erstellt, läuft das Dashboard jahrelang ohne Wartung. Du investierst einen Nachmittag in die Gestaltung und hast danach ein Monitoring-System, das dir jeden Tag Freude macht.

    Grafana hat eine steile Lernkurve in den ersten Stunden, aber sobald du das Prinzip verstanden hast (Datenquelle + Abfrage + Visualisierung), wird es intuitiv. Und das Ergebnis ist ein Monitoring-System, das keine Hersteller-App auch nur annähernd bieten kann.