Praxisnahe Tutorials, auf die du zählen kannst.
Einsteiger Guide für Home Assistant

InfluxDB & Grafana in Home Assistant: Langzeitdaten speichern & auswerten

Hier zeige ich dir, wie du in Home Assistant mit InfluxDB eine Langzeitdatenspeicherung aufbauen kannst. Anschließend schauen wir uns noch an, wie du diese Daten mit Grafana analysieren und in wunderschönen Dashboards & Panelen darstellen kannst 🙌

Dabei habe ich, zumindest sowie ich das beurteilen kann, keine Wünsche offen gelassen, was grundlegende Benutzung, aber auch die erweiterte Panelerstellung in Grafana anbelangt 🚀

Hinweis (Stand Oktober 2026): Das Video ist von 2023. Seitdem hat sich einiges getan: Add-ons heißen seit Home Assistant 2026.2 Apps, die InfluxDB-Integration richtest du seit 2026.3 über die Oberfläche ein, und die InfluxDB-App heißt jetzt „InfluxDB v1“. Die Einrichtung findest du deshalb hier im Beitrag noch einmal Schritt für Schritt auf aktuellem Stand. Der Grafana-Teil aus dem Video funktioniert vom Prinzip her genauso, einzelne Menüs in Grafana sehen inzwischen aber anders aus.

InfluxDB, Recorder & Langzeitstatistik: Was ist was?

Bevor es losgeht, kurz zur Einordnung, weil hier gerne einiges durcheinander geht:

  • Recorder (Verlauf): Home Assistant speichert jede Zustandsänderung in seiner eigenen Datenbank, standardmäßig aber nur 10 Tage. Diesen Wert stark hochzudrehen ist keine gute Idee, weil die Datenbank dann groß und langsam wird.
  • Langzeitstatistik: Für Sensoren mit Zustandsklasse (z.B. Temperatur, Leistung, Zählerstände) legt Home Assistant zusätzlich Stundenwerte an und behält die dauerhaft. Darauf bauen das Energie-Dashboard und die Statistik-Karte auf. Für viele Auswertungen reicht das schon. Wenn dort mal ein Ausreißer drin ist: Statistiken in Home Assistant korrigieren.
  • MariaDB: Ist nur ein anderer Datenbank-Unterbau für den Recorder, also kein Ersatz für InfluxDB. Mehr dazu: In Home Assistant MariaDB installieren.
  • InfluxDB: Eine zweite Datenbank, die parallel zur Home-Assistant-Datenbank läuft und sie nicht ersetzt. Sie speichert die Zustände der Entitäten, die du auswählst, in voller Auflösung und so lange, wie du willst. Und zwar ab dem Zeitpunkt der Einrichtung, rückwirkend gibt es nichts.
  • Grafana: Das Werkzeug, mit dem du die Daten aus InfluxDB abfragst und in Dashboards darstellst.

Voraussetzungen

Home Assistant muss bereits installiert sein. Für die Apps brauchst du Home Assistant OS, bei einer Container-Installation müsstest du InfluxDB und Grafana als eigene Container betreiben.

Bei der Hardware solltest du nicht zu knapp planen: InfluxDB ist eine zweite Datenbank, die ständig schreibt. Einen Raspberry Pi 3 würde ich dafür nicht nehmen, ein Raspberry Pi 4 geht, aber nur mit angeschlossener SSD, sonst ist die SD-Karte irgendwann hinüber. Besser ist ein (gebrauchter) sparsamer Mini-PC, da steckt ohnehin eine SSD drin.

Vorgestellte Apps

  • InfluxDB (im App Store als „InfluxDB v1“)
  • Grafana

Kurzer Hinweis in eigener Sache

Viele hätten vermutlich für ein Video diesen Umfangs & dieser Art einen Kurs auf Udemy oder Masterclass gemacht. Für die Erstellung habe ich mich mehrere Wochen intensiv mit dem Thema Grafana außeinandergesetzt… Und das alles in meiner Freizeit.

Ich bin ein Fan von freien Informationen, würde mich aber auch über Unterstützung freuen, wenn du es dir leisten kannst.

Falls sich das nach einer Option für dich anhört, kannst du gerne mal hier vorbeischauen: https://www.buymeacoffee.com/simon42official

Besten Dank im Voraus 🎉

InfluxDB

InfluxDB-App installieren

  1. Einstellungen → Apps öffnen und unten rechts in den App Store wechseln.
  2. Nach InfluxDB suchen und die App InfluxDB v1 öffnen. Sie kommt aus dem Community-Repository, das schon eingebunden ist. Alternativ springst du über diesen My-Home-Assistant-Link direkt hin.
  3. Auf Installieren klicken.
  4. Auf der Info-Seite die Schalter setzen. Im Video habe ich alles aktiviert, ob du automatische Updates willst, entscheidest du selbst.
  5. Noch nicht starten, erst die Konfiguration aus dem nächsten Abschnitt eintragen.

Konfiguration der App

Kommt unter envvars im Reiter Konfiguration der App. Damit schaltest du die interne Monitoring-Datenbank von InfluxDB ab, die du für Home Assistant nicht brauchst und die sonst nur zusätzlich mitschreibt:

- name: INFLUXDB_MONITOR_STORE_ENABLED
  value: "false"

Speichern, dann auf dem Reiter Info die App starten und im Protokoll nachschauen, ob sie sauber hochfährt.

InfluxDB v1, 2.x oder 3?

Hinweis (Stand Oktober 2026): Die App liefert InfluxDB 1.x (aktuell 1.13.1) zusammen mit der Weboberfläche Chronograf und Kapacitor, nicht InfluxDB 2 oder 3. Deshalb heißt sie seit Version 6.0.0 auch „InfluxDB v1“. Ende August 2026 wurde die App kurzzeitig als End-of-Life markiert und aus dem Store genommen, wer sie installiert hatte, bekam eine Reparaturmeldung. Seit Mitte September ist sie wieder im App Store und wird wieder gepflegt.

Die Home-Assistant-Integration kann neben 1.x auch in InfluxDB 2.x und InfluxDB 3 (Core/Enterprise) schreiben. Das ist interessant, wenn du InfluxDB sowieso schon woanders betreibst, zum Beispiel auf einem eigenen Server. Dann wählst du bei der Einrichtung „InfluxDB v2.x / v3“ und gibst Organisation, Bucket und Token an. Bei InfluxDB 3 funktionieren Flux-Abfragen nicht. Alles in diesem Beitrag, inklusive der Grafana-Dashboards weiter unten, bezieht sich auf InfluxDB 1.x mit InfluxQL.

Datenbank und Benutzer anlegen

Öffne die Weboberfläche der App (über die Seitenleiste oder Benutzeroberfläche öffnen). Das ist Chronograf. Links findest du InfluxDB Admin:

  1. Reiter Databases → Create Database und als Namen home_assistant eingeben. Genau so geschrieben, das ist auch der Name, den Home Assistant vorschlägt.
  2. Die Retention Policy autogen mit unendlicher Dauer lässt du am besten so. Die Datenbank wächst damit zwar über die Zeit, InfluxDB ist aber recht sparsam, auf einer SSD reicht der Platz in der Regel für viele Jahre. Wenn du die Dauer begrenzen willst, ändere die Duration von autogen direkt am Anfang (z.B. 1000d) und leg keine zusätzliche Policy an, sonst wird die Verbindung mit Grafana unnötig kompliziert.
  3. Reiter Users → Create User: Namen vergeben (im Video hainfluxuser), ein sicheres Passwort ausdenken, anlegen und bei Permissions „ALL“ setzen.

Die Daten liegen in der App und landen damit auch in deinen Home-Assistant-Backups, die wachsen also mit. Mehr dazu: Home Assistant Backup & Restore.

Home Assistant mit InfluxDB verbinden

Seit Home Assistant 2026.3 richtest du die Verbindung über die Oberfläche ein. Benutzername und Passwort gehören nicht mehr in die configuration.yaml.

  1. Einstellungen → Geräte & Dienste → Integration hinzufügen und nach InfluxDB suchen.
  2. Als Version InfluxDB v1.x auswählen.
  3. URL: http://a0d7b954-influxdb:8086 (das ist der interne Hostname der App).
  4. Benutzername und Passwort: der Benutzer, den du gerade in Chronograf angelegt hast.
  5. Datenbank: home_assistant.
  6. Absenden. Kommt ein Fehler, stimmen meistens Benutzer, Passwort oder der Datenbankname nicht.

Filter, Tags & Co. in der configuration.yaml

Welche Entitäten in InfluxDB landen und wie sie dort abgelegt werden, legst du weiterhin per YAML fest. Richte dafür zuerst die Integration wie oben ein und ergänze erst danach den Block. Findet Home Assistant beim Start einen influxdb:-Block, aber noch keine eingerichtete Integration, versucht es, die Verbindung aus der YAML zu übernehmen. Ohne Zugangsdaten klappt das nicht und du bekommst eine Reparaturmeldung.

Doku für alle Konfigurationsparameter: https://www.home-assistant.io/integrations/influxdb/

influxdb:
  max_retries: 3
  tags:
    source: HA
  tags_attributes:
    - friendly_name
  default_measurement: state
  exclude:
    entities:
      - zone.home
    domains:
      - persistent_notification
      - person
  include:
    domains:
      - sensor
      - binary_sensor
      - sun
      - light
      - cover
    entities:
      - weather.home

Was die einzelnen Einträge machen:

  • tags: Alle Werte bekommen den Tag source: HA, das hilft bei der Organisation der Daten.
  • tags_attributes: Neben der Entitäts-ID wird auch der Anzeigename übertragen, damit findest du deine Sensoren in Grafana deutlich leichter.
  • default_measurement: InfluxDB legt die Daten nach Einheit ab (°C, W, kWh …). Entitäten ohne Einheit landen mit state gesammelt unter „state“, statt dass jede ihr eigenes Measurement bekommt.
  • exclude und include: Nicht mit der Bazooka einfach alles speichern, sondern überlegen, was du wirklich auswerten willst. Mit den Domains sensor und binary_sensor ist das meiste Relevante schon dabei. Einzelne Entitäten nimmst du wie weather.home zusätzlich auf. Die Liste ist ein Beispiel, pass sie an dein System an.
  • max_retries: Bei Netzwerkfehlern versucht Home Assistant das Schreiben bis zu dreimal erneut.

Danach unter Einstellungen → Werkzeuge → YAML (früher „Entwicklerwerkzeuge“) die Konfiguration prüfen und Home Assistant neu starten.

Du hast noch den alten Block aus dem Video mit username und password in der configuration.yaml? Dann übernimmt Home Assistant die Verbindung beim Neustart automatisch in die Integration und meldet unter Einstellungen → Reparaturen, dass die YAML-Verbindungsdaten entfernt werden. Nimm dann die Verbindungs-Schlüssel raus (username, password und, falls vorhanden, host, port, database, api_version, ssl), lass den Rest wie oben stehen und starte neu.

Prüfen, ob Daten ankommen

Schau nach dem Neustart unter Einstellungen → System → Protokolle, ob dort Fehler zu InfluxDB auftauchen. Dann in Chronograf links auf Explore und home_assistant.autogen öffnen. Dort siehst du die Measurements nach Einheit, also zum Beispiel °C, kWh oder state, und darunter deine Entitäten. Ist da etwas drin, läuft die Übertragung.

Grafana

Grafana-App installieren

  1. Im App Store nach Grafana suchen (oder direkt über diesen My-Home-Assistant-Link) und installieren.
  2. Auf der Info-Seite die Schalter nach Wunsch setzen und die App starten.
  3. Über die Seitenleiste oder Benutzeroberfläche öffnen aufrufen. Siehst du „502 Bad Gateway“, ist Grafana noch nicht ganz hochgefahren, dann einfach kurz warten.

Über die Seitenleiste meldet dich die App automatisch als Admin an, ein eigenes Login brauchst du dafür nicht.

InfluxDB als Datenquelle in Grafana hinzufügen

  1. In Grafana über das Menü Connections → Data sources öffnen und eine neue Datenquelle vom Typ InfluxDB hinzufügen.
  2. Query language: InfluxQL.
  3. URL: http://a0d7b954-influxdb:8086. Im Video habe ich stattdessen die IP-Adresse von Home Assistant mit Port 8086 genommen, das geht auch.
  4. Database: home_assistant.
  5. User und Password: dein InfluxDB-Benutzer. Du kannst denselben nehmen wie für Home Assistant oder in Chronograf einen eigenen Benutzer für Grafana anlegen.
  6. Auf Save & test klicken. Grafana sollte dir jetzt bestätigen, dass die Datenquelle funktioniert.

Danach am besten ein paar Minuten warten, damit überhaupt ein paar Messwerte da sind. Wie du dann Dashboards, Panels und Abfragen baust, zeige ich ausführlich im Video oben.

URL zum Einbetten in Dashboards

Im Grafana-Dashboard oben auf den Teilen-Button klicken und den Link kopieren. Den fügst du in Home Assistant in eine Webseite-Karte ein, zum Beispiel auf einem eigenen Dashboard in der Panel-Ansicht. Hinten an die URL kommen die Parameter für den Zeitraum und den Kiosk-Modus. Der Ingress-Teil und die Dashboard-ID sind bei dir natürlich andere.

Diese Parameter hängst du hinten an die kopierte URL an (Zeitraum: letzter Tag, dazu der Kiosk-Modus ohne Grafana-Menüs):

&from=now-1d&to=now&kiosk=tv

Komplett sieht die URL dann zum Beispiel so aus:

http://XXX.XXX.XXX.XXX:8123/api/hassio_ingress/SsHp2UdJ3E5ag0lSUX0T2EltPUEKPeDsASE1WHR78gk/d/DJm6f304k/heizungsanalyse?orgId=1&from=now-1d&to=now&kiosk=tv

Das klappt nur, wenn du Grafana vorher mindestens einmal über die Seitenleiste geöffnet hast, weil erst dann das Anmelde-Cookie im Browser liegt. Ehrlich gesagt ist die Einbettung über Ingress etwas hakelig. Ich würde die Dashboards weiterhin direkt in Grafana benutzen, dafür ist es gedacht.

Code aus dem Video

Da ich inzwischen so oft danach gefragt wurde, hier die Grafana-Exports der Dashboards als JSON für euch 💙. Natürlich bitte trotzdem das Video anschauen (in Ruhe), da so die Konfiguration, Bedienung sowie Sinn & Zweck klar wird 😉

Danke auch nochmal ganz besonders an alle Kaffeespender die es ermöglichen, dass ich hier so viel Arbeit reinstecke 🙏

So importierst du die Dashboards

  • In Grafana Dashboards → New → Import öffnen, den JSON-Code einfügen und laden.
  • In den Exports steckt die ID meiner Datenquelle (JzL_Sa04z). Ersetze sie vor dem Import durch die ID deiner InfluxDB-Datenquelle. Die findest du in der Adresszeile, wenn du die Datenquelle in Grafana öffnest (der letzte Teil nach /datasources/edit/).
  • Die Abfragen nutzen meine Entitäten, zum Beispiel vorlauf_hk1, rucklauf_fbh oder aussentemperatur_wetter. Die musst du in den Panels gegen deine eigenen tauschen.

Wenn du Vor- und Rücklauf deiner Heizung selbst messen willst, findest du hier eine Anleitung mit DS18B20-Fühlern am Rohr: Rohr-Temperaturen mit Home Assistant überwachen.

Heizungsanalyse

Grafana Dashboard Heizungsanalyse mit Home Assistant
{
  "annotations": {
    "list": [
      {
        "builtIn": 1,
        "datasource": {
          "type": "grafana",
          "uid": "-- Grafana --"
        },
        "enable": true,
        "hide": true,
        "iconColor": "rgba(0, 211, 255, 1)",
        "name": "Annotations & Alerts",
        "target": {
          "limit": 100,
          "matchAny": false,
          "tags": [],
          "type": "dashboard"
        },
        "type": "dashboard"
      }
    ]
  },
  "description": "",
  "editable": true,
  "fiscalYearStartMonth": 0,
  "graphTooltip": 0,
  "id": 2,
  "links": [],
  "liveNow": false,
  "panels": [
    {
      "datasource": {
        "type": "influxdb",
        "uid": "JzL_Sa04z"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "drawStyle": "line",
            "fillOpacity": 14,
            "gradientMode": "hue",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "insertNulls": false,
            "lineInterpolation": "smooth",
            "lineStyle": {
              "fill": "solid"
            },
            "lineWidth": 2,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "auto",
            "spanNulls": true,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green",
                "value": null
              },
              {
                "color": "red",
                "value": 80
              }
            ]
          },
          "unit": "celsius"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 9,
        "w": 12,
        "x": 0,
        "y": 0
      },
      "id": 2,
      "options": {
        "legend": {
          "calcs": [],
          "displayMode": "list",
          "placement": "bottom",
          "showLegend": true
        },
        "tooltip": {
          "mode": "single",
          "sort": "none"
        }
      },
      "targets": [
        {
          "alias": "Temperatur Küche",
          "datasource": {
            "type": "influxdb",
            "uid": "JzL_Sa04z"
          },
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "measurement": "°C",
          "orderByTime": "ASC",
          "policy": "default",
          "refId": "A",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "mean"
              }
            ]
          ],
          "tags": [
            {
              "key": "entity_id",
              "operator": "=",
              "value": "lumi_lumi_weather_temperature"
            }
          ]
        },
        {
          "alias": "Temperatur Bad",
          "datasource": {
            "type": "influxdb",
            "uid": "JzL_Sa04z"
          },
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "hide": false,
          "measurement": "°C",
          "orderByTime": "ASC",
          "policy": "default",
          "refId": "B",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "mean"
              }
            ]
          ],
          "tags": [
            {
              "key": "entity_id",
              "operator": "=",
              "value": "lumi_lumi_weather_temperature_2"
            }
          ]
        },
        {
          "alias": "Temperatur Wohnzimmer",
          "datasource": {
            "type": "influxdb",
            "uid": "JzL_Sa04z"
          },
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "hide": false,
          "measurement": "°C",
          "orderByTime": "ASC",
          "policy": "default",
          "refId": "C",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "mean"
              }
            ]
          ],
          "tags": [
            {
              "key": "entity_id",
              "operator": "=",
              "value": "lumi_lumi_weather_temperature_3"
            }
          ]
        }
      ],
      "title": "Temperaturen Wohnung",
      "type": "timeseries"
    },
    {
      "datasource": {
        "type": "influxdb",
        "uid": "JzL_Sa04z"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "drawStyle": "line",
            "fillOpacity": 14,
            "gradientMode": "hue",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "insertNulls": false,
            "lineInterpolation": "smooth",
            "lineStyle": {
              "fill": "solid"
            },
            "lineWidth": 2,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "auto",
            "spanNulls": true,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green",
                "value": null
              },
              {
                "color": "red",
                "value": 80
              }
            ]
          },
          "unit": "celsius"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 9,
        "w": 12,
        "x": 12,
        "y": 0
      },
      "id": 5,
      "options": {
        "legend": {
          "calcs": [],
          "displayMode": "list",
          "placement": "bottom",
          "showLegend": true
        },
        "tooltip": {
          "mode": "single",
          "sort": "none"
        }
      },
      "targets": [
        {
          "alias": "Aussentemperatur Wetterdienst",
          "datasource": {
            "type": "influxdb",
            "uid": "JzL_Sa04z"
          },
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "measurement": "°C",
          "orderByTime": "ASC",
          "policy": "default",
          "refId": "A",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "mean"
              }
            ]
          ],
          "tags": [
            {
              "key": "entity_id",
              "operator": "=",
              "value": "aussentemperatur_wetter"
            }
          ]
        }
      ],
      "title": "Umwelt",
      "type": "timeseries"
    },
    {
      "datasource": {
        "type": "influxdb",
        "uid": "JzL_Sa04z"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "drawStyle": "line",
            "fillOpacity": 14,
            "gradientMode": "hue",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "insertNulls": false,
            "lineInterpolation": "smooth",
            "lineStyle": {
              "fill": "solid"
            },
            "lineWidth": 2,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "auto",
            "spanNulls": true,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green",
                "value": null
              },
              {
                "color": "red",
                "value": 80
              }
            ]
          },
          "unit": "celsius"
        },
        "overrides": [
          {
            "matcher": {
              "id": "byFrameRefID",
              "options": "A"
            },
            "properties": [
              {
                "id": "color",
                "value": {
                  "fixedColor": "light-blue",
                  "mode": "fixed"
                }
              }
            ]
          },
          {
            "matcher": {
              "id": "byFrameRefID",
              "options": "B"
            },
            "properties": [
              {
                "id": "color",
                "value": {
                  "fixedColor": "light-red",
                  "mode": "fixed"
                }
              }
            ]
          }
        ]
      },
      "gridPos": {
        "h": 9,
        "w": 12,
        "x": 0,
        "y": 9
      },
      "id": 3,
      "options": {
        "legend": {
          "calcs": [],
          "displayMode": "list",
          "placement": "bottom",
          "showLegend": true
        },
        "tooltip": {
          "mode": "single",
          "sort": "none"
        }
      },
      "targets": [
        {
          "alias": "Rücklauf FBH",
          "datasource": {
            "type": "influxdb",
            "uid": "JzL_Sa04z"
          },
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "measurement": "°C",
          "orderByTime": "ASC",
          "policy": "default",
          "refId": "A",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "mean"
              }
            ]
          ],
          "tags": [
            {
              "key": "entity_id",
              "operator": "=",
              "value": "rucklauf_fbh"
            }
          ]
        },
        {
          "alias": "Vorlauf FBH",
          "datasource": {
            "type": "influxdb",
            "uid": "JzL_Sa04z"
          },
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "hide": false,
          "measurement": "°C",
          "orderByTime": "ASC",
          "policy": "default",
          "refId": "B",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "mean"
              }
            ]
          ],
          "tags": [
            {
              "key": "entity_id",
              "operator": "=",
              "value": "vorlauf_fbh"
            }
          ]
        }
      ],
      "title": "Temperaturen FBH",
      "type": "timeseries"
    },
    {
      "datasource": {
        "type": "influxdb",
        "uid": "JzL_Sa04z"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "drawStyle": "line",
            "fillOpacity": 14,
            "gradientMode": "hue",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "insertNulls": false,
            "lineInterpolation": "smooth",
            "lineStyle": {
              "fill": "solid"
            },
            "lineWidth": 2,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "auto",
            "spanNulls": true,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green",
                "value": null
              },
              {
                "color": "red",
                "value": 80
              }
            ]
          },
          "unit": "celsius"
        },
        "overrides": [
          {
            "matcher": {
              "id": "byFrameRefID",
              "options": "A"
            },
            "properties": [
              {
                "id": "color",
                "value": {
                  "fixedColor": "dark-blue",
                  "mode": "fixed"
                }
              }
            ]
          },
          {
            "matcher": {
              "id": "byFrameRefID",
              "options": "B"
            },
            "properties": [
              {
                "id": "color",
                "value": {
                  "fixedColor": "dark-red",
                  "mode": "fixed"
                }
              }
            ]
          }
        ]
      },
      "gridPos": {
        "h": 9,
        "w": 12,
        "x": 12,
        "y": 9
      },
      "id": 4,
      "options": {
        "legend": {
          "calcs": [],
          "displayMode": "list",
          "placement": "bottom",
          "showLegend": true
        },
        "tooltip": {
          "mode": "single",
          "sort": "none"
        }
      },
      "targets": [
        {
          "alias": "Rücklauf HK1",
          "datasource": {
            "type": "influxdb",
            "uid": "JzL_Sa04z"
          },
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "measurement": "°C",
          "orderByTime": "ASC",
          "policy": "default",
          "refId": "A",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "mean"
              }
            ]
          ],
          "tags": [
            {
              "key": "entity_id",
              "operator": "=",
              "value": "rucklauf_hk1"
            }
          ]
        },
        {
          "alias": "Vorlauf HK1",
          "datasource": {
            "type": "influxdb",
            "uid": "JzL_Sa04z"
          },
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "hide": false,
          "measurement": "°C",
          "orderByTime": "ASC",
          "policy": "default",
          "refId": "B",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "mean"
              }
            ]
          ],
          "tags": [
            {
              "key": "entity_id",
              "operator": "=",
              "value": "vorlauf_hk1"
            }
          ]
        }
      ],
      "title": "Temperaturen HK1",
      "type": "timeseries"
    },
    {
      "datasource": {
        "type": "influxdb",
        "uid": "JzL_Sa04z"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "thresholds",
            "seriesBy": "last"
          },
          "custom": {
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "drawStyle": "line",
            "fillOpacity": 14,
            "gradientMode": "scheme",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "insertNulls": false,
            "lineInterpolation": "smooth",
            "lineStyle": {
              "dash": [
                0,
                10
              ],
              "fill": "dot"
            },
            "lineWidth": 2,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "auto",
            "spanNulls": true,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "line+area"
            }
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "red",
                "value": null
              },
              {
                "color": "yellow",
                "value": 2
              },
              {
                "color": "green",
                "value": 4
              }
            ]
          },
          "unit": "celsius"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 9,
        "w": 12,
        "x": 0,
        "y": 18
      },
      "id": 6,
      "interval": "5m",
      "options": {
        "legend": {
          "calcs": [],
          "displayMode": "list",
          "placement": "bottom",
          "showLegend": true
        },
        "tooltip": {
          "mode": "single",
          "sort": "none"
        }
      },
      "targets": [
        {
          "alias": "VLFBH",
          "datasource": {
            "type": "influxdb",
            "uid": "JzL_Sa04z"
          },
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "hide": false,
          "measurement": "°C",
          "orderByTime": "ASC",
          "policy": "default",
          "refId": "B",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "mean"
              }
            ]
          ],
          "tags": [
            {
              "key": "entity_id",
              "operator": "=",
              "value": "vorlauf_fbh"
            }
          ]
        },
        {
          "alias": "RLFBH",
          "datasource": {
            "type": "influxdb",
            "uid": "JzL_Sa04z"
          },
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "measurement": "°C",
          "orderByTime": "ASC",
          "policy": "default",
          "refId": "A",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "mean"
              }
            ]
          ],
          "tags": [
            {
              "key": "entity_id",
              "operator": "=",
              "value": "rucklauf_fbh"
            }
          ]
        }
      ],
      "title": "RL vs VL FBH",
      "transformations": [
        {
          "id": "calculateField",
          "options": {
            "alias": "Rücklaufsabkühlung FBH",
            "binary": {
              "left": "VLFBH",
              "operator": "-",
              "reducer": "sum",
              "right": "RLFBH"
            },
            "mode": "binary",
            "reduce": {
              "reducer": "sum"
            },
            "replaceFields": true
          }
        }
      ],
      "type": "timeseries"
    },
    {
      "datasource": {
        "type": "influxdb",
        "uid": "JzL_Sa04z"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "thresholds",
            "seriesBy": "last"
          },
          "custom": {
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "drawStyle": "line",
            "fillOpacity": 14,
            "gradientMode": "scheme",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "insertNulls": false,
            "lineInterpolation": "smooth",
            "lineStyle": {
              "dash": [
                0,
                10
              ],
              "fill": "dot"
            },
            "lineWidth": 2,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "auto",
            "spanNulls": true,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "line+area"
            }
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "red",
                "value": null
              },
              {
                "color": "yellow",
                "value": 2
              },
              {
                "color": "green",
                "value": 4
              }
            ]
          },
          "unit": "celsius"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 9,
        "w": 12,
        "x": 12,
        "y": 18
      },
      "id": 7,
      "interval": "5m",
      "options": {
        "legend": {
          "calcs": [],
          "displayMode": "list",
          "placement": "bottom",
          "showLegend": true
        },
        "tooltip": {
          "mode": "single",
          "sort": "none"
        }
      },
      "targets": [
        {
          "alias": "VLHK11",
          "datasource": {
            "type": "influxdb",
            "uid": "JzL_Sa04z"
          },
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "hide": false,
          "measurement": "°C",
          "orderByTime": "ASC",
          "policy": "default",
          "refId": "B",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "mean"
              }
            ]
          ],
          "tags": [
            {
              "key": "entity_id",
              "operator": "=",
              "value": "vorlauf_hk1"
            }
          ]
        },
        {
          "alias": "RLHK11",
          "datasource": {
            "type": "influxdb",
            "uid": "JzL_Sa04z"
          },
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "measurement": "°C",
          "orderByTime": "ASC",
          "policy": "default",
          "refId": "A",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "mean"
              }
            ]
          ],
          "tags": [
            {
              "key": "entity_id",
              "operator": "=",
              "value": "rucklauf_hk1"
            }
          ]
        }
      ],
      "title": "RL vs VL HK1",
      "transformations": [
        {
          "id": "calculateField",
          "options": {
            "alias": "Rücklaufsabkühlung HK1",
            "binary": {
              "left": "VLHK11",
              "operator": "-",
              "reducer": "sum",
              "right": "RLHK11"
            },
            "mode": "binary",
            "reduce": {
              "reducer": "sum"
            },
            "replaceFields": true
          }
        }
      ],
      "type": "timeseries"
    }
  ],
  "refresh": "",
  "schemaVersion": 38,
  "style": "dark",
  "tags": [],
  "templating": {
    "list": []
  },
  "time": {
    "from": "now-6h",
    "to": "now"
  },
  "timepicker": {},
  "timezone": "",
  "title": "Heizungsanalyse",
  "uid": "DJm6f304k",
  "version": 15,
  "weekStart": ""
}

Heizungsüberwachung

Grafana Dashboard Heizungsüberwachung mit Home Assistant
{
  "annotations": {
    "list": [
      {
        "builtIn": 1,
        "datasource": {
          "type": "grafana",
          "uid": "-- Grafana --"
        },
        "enable": true,
        "hide": true,
        "iconColor": "rgba(0, 211, 255, 1)",
        "name": "Annotations & Alerts",
        "target": {
          "limit": 100,
          "matchAny": false,
          "tags": [],
          "type": "dashboard"
        },
        "type": "dashboard"
      }
    ]
  },
  "description": "",
  "editable": true,
  "fiscalYearStartMonth": 0,
  "graphTooltip": 0,
  "id": 1,
  "links": [],
  "liveNow": false,
  "panels": [
    {
      "datasource": {
        "type": "influxdb",
        "uid": "JzL_Sa04z"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "right",
            "barAlignment": 0,
            "drawStyle": "line",
            "fillOpacity": 0,
            "gradientMode": "opacity",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "insertNulls": false,
            "lineInterpolation": "smooth",
            "lineStyle": {
              "fill": "solid"
            },
            "lineWidth": 1,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "never",
            "spanNulls": true,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "displayName": "Außentemp.",
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green",
                "value": null
              }
            ]
          },
          "unit": "celsius"
        },
        "overrides": [
          {
            "matcher": {
              "id": "byFrameRefID",
              "options": "Vorlauf HK 1"
            },
            "properties": [
              {
                "id": "displayName",
                "value": "Vorlauf HK1"
              },
              {
                "id": "color",
                "value": {
                  "fixedColor": "dark-red",
                  "mode": "fixed"
                }
              }
            ]
          },
          {
            "matcher": {
              "id": "byFrameRefID",
              "options": "Rücklauf HK 1"
            },
            "properties": [
              {
                "id": "displayName",
                "value": "Rücklauf HK1"
              },
              {
                "id": "color",
                "value": {
                  "fixedColor": "dark-blue",
                  "mode": "fixed"
                }
              }
            ]
          },
          {
            "matcher": {
              "id": "byFrameRefID",
              "options": "Rücklauf FBH"
            },
            "properties": [
              {
                "id": "displayName",
                "value": "Rücklauf FBH"
              },
              {
                "id": "color",
                "value": {
                  "fixedColor": "light-blue",
                  "mode": "fixed"
                }
              }
            ]
          },
          {
            "matcher": {
              "id": "byFrameRefID",
              "options": "Vorlauf FBH"
            },
            "properties": [
              {
                "id": "displayName",
                "value": "Vorlauf FBH"
              },
              {
                "id": "color",
                "value": {
                  "fixedColor": "light-red",
                  "mode": "fixed"
                }
              }
            ]
          },
          {
            "matcher": {
              "id": "byFrameRefID",
              "options": "Verbrauch WP"
            },
            "properties": [
              {
                "id": "custom.axisLabel",
                "value": "Verbrauch WP"
              },
              {
                "id": "unit",
                "value": "watt"
              },
              {
                "id": "custom.fillOpacity",
                "value": 36
              },
              {
                "id": "custom.lineWidth",
                "value": 0
              },
              {
                "id": "color",
                "value": {
                  "fixedColor": "dark-purple",
                  "mode": "fixed"
                }
              },
              {
                "id": "custom.axisPlacement",
                "value": "left"
              },
              {
                "id": "custom.axisColorMode",
                "value": "series"
              }
            ]
          },
          {
            "matcher": {
              "id": "byFrameRefID",
              "options": "Außentemperatur Grad"
            },
            "properties": [
              {
                "id": "color",
                "value": {
                  "fixedColor": "green",
                  "mode": "fixed"
                }
              }
            ]
          }
        ]
      },
      "gridPos": {
        "h": 28,
        "w": 12,
        "x": 0,
        "y": 0
      },
      "id": 2,
      "options": {
        "legend": {
          "calcs": [],
          "displayMode": "list",
          "placement": "bottom",
          "showLegend": true
        },
        "tooltip": {
          "mode": "single",
          "sort": "none"
        }
      },
      "pluginVersion": "9.2.4",
      "targets": [
        {
          "datasource": {
            "type": "influxdb",
            "uid": "JzL_Sa04z"
          },
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "measurement": "°C",
          "orderByTime": "ASC",
          "policy": "default",
          "refId": "Außentemperatur Grad",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "mean"
              }
            ]
          ],
          "tags": [
            {
              "key": "entity_id",
              "operator": "=",
              "value": "aussentemperatur_wetter"
            }
          ]
        },
        {
          "datasource": {
            "type": "influxdb",
            "uid": "JzL_Sa04z"
          },
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "hide": false,
          "measurement": "°C",
          "orderByTime": "ASC",
          "policy": "default",
          "query": "SELECT mean(\"value\") FROM \"°C\" WHERE (\"entity_id\" = 'vorlauf_hk1') AND $timeFilter GROUP BY time($__interval) fill(null)",
          "rawQuery": false,
          "refId": "Vorlauf HK 1",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "mean"
              }
            ]
          ],
          "tags": [
            {
              "key": "entity_id",
              "operator": "=",
              "value": "vorlauf_hk1"
            }
          ]
        },
        {
          "datasource": {
            "type": "influxdb",
            "uid": "JzL_Sa04z"
          },
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "hide": false,
          "measurement": "°C",
          "orderByTime": "ASC",
          "policy": "default",
          "refId": "Rücklauf HK 1",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "mean"
              }
            ]
          ],
          "tags": [
            {
              "key": "entity_id",
              "operator": "=",
              "value": "rucklauf_hk1"
            }
          ]
        },
        {
          "datasource": {
            "type": "influxdb",
            "uid": "JzL_Sa04z"
          },
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "hide": false,
          "measurement": "°C",
          "orderByTime": "ASC",
          "policy": "default",
          "query": "SELECT mean(\"value\") FROM \"°C\" WHERE (\"entity_id\" = 'vorlauf_hk1') AND $timeFilter GROUP BY time($__interval) fill(null)",
          "rawQuery": false,
          "refId": "Rücklauf FBH",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "mean"
              }
            ]
          ],
          "tags": [
            {
              "key": "entity_id",
              "operator": "=",
              "value": "rucklauf_fbh"
            }
          ]
        },
        {
          "datasource": {
            "type": "influxdb",
            "uid": "JzL_Sa04z"
          },
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "hide": false,
          "measurement": "W",
          "orderByTime": "ASC",
          "policy": "default",
          "refId": "Verbrauch WP",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "mean"
              },
              {
                "params": [
                  "alias"
                ],
                "type": "alias"
              }
            ]
          ],
          "tags": [
            {
              "key": "entity_id",
              "operator": "=",
              "value": "leistung_warmepumpe"
            }
          ]
        },
        {
          "datasource": {
            "type": "influxdb",
            "uid": "JzL_Sa04z"
          },
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "hide": false,
          "measurement": "°C",
          "orderByTime": "ASC",
          "policy": "default",
          "query": "SELECT mean(\"value\") FROM \"°C\" WHERE (\"entity_id\" = 'vorlauf_hk1') AND $timeFilter GROUP BY time($__interval) fill(null)",
          "rawQuery": false,
          "refId": "Vorlauf FBH",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "mean"
              }
            ]
          ],
          "tags": [
            {
              "key": "entity_id",
              "operator": "=",
              "value": "vorlauf_fbh"
            }
          ]
        }
      ],
      "timeFrom": "24h",
      "title": "24H Temperaturen & Verbrauch WP",
      "type": "timeseries"
    },
    {
      "datasource": {
        "type": "influxdb",
        "uid": "JzL_Sa04z"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "right",
            "barAlignment": 0,
            "drawStyle": "line",
            "fillOpacity": 0,
            "gradientMode": "none",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "insertNulls": false,
            "lineInterpolation": "linear",
            "lineWidth": 1,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "auto",
            "spanNulls": false,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "displayName": "Außentemperatur (avg)",
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "super-light-blue",
                "value": null
              },
              {
                "color": "blue",
                "value": -10
              },
              {
                "color": "dark-blue",
                "value": 0
              },
              {
                "color": "light-yellow",
                "value": 5
              },
              {
                "color": "light-orange",
                "value": 15
              },
              {
                "color": "semi-dark-orange",
                "value": 20
              },
              {
                "color": "dark-orange",
                "value": 30
              },
              {
                "color": "red",
                "value": 35
              }
            ]
          },
          "unit": "celsius"
        },
        "overrides": [
          {
            "matcher": {
              "id": "byFrameRefID",
              "options": "Verbrauch WP"
            },
            "properties": [
              {
                "id": "unit",
                "value": "kwatth"
              },
              {
                "id": "custom.lineStyle",
                "value": {
                  "dash": [
                    10,
                    10
                  ],
                  "fill": "dash"
                }
              },
              {
                "id": "custom.drawStyle",
                "value": "bars"
              },
              {
                "id": "custom.gradientMode",
                "value": "opacity"
              },
              {
                "id": "custom.fillOpacity",
                "value": 45
              },
              {
                "id": "thresholds",
                "value": {
                  "mode": "absolute",
                  "steps": [
                    {
                      "color": "green",
                      "value": null
                    },
                    {
                      "color": "#EAB839",
                      "value": 80
                    },
                    {
                      "color": "red",
                      "value": 100
                    }
                  ]
                }
              },
              {
                "id": "custom.thresholdsStyle",
                "value": {
                  "mode": "off"
                }
              },
              {
                "id": "displayName",
                "value": "Verbrauch Wärmpepumpe"
              },
              {
                "id": "custom.axisPlacement",
                "value": "left"
              },
              {
                "id": "color",
                "value": {
                  "fixedColor": "dark-purple",
                  "mode": "fixed"
                }
              },
              {
                "id": "custom.axisColorMode",
                "value": "series"
              }
            ]
          },
          {
            "matcher": {
              "id": "byFrameRefID",
              "options": "Vorlauf HK1"
            },
            "properties": [
              {
                "id": "displayName",
                "value": "Vorlauf HK1 (Max)"
              },
              {
                "id": "color",
                "value": {
                  "fixedColor": "dark-red",
                  "mode": "fixed",
                  "seriesBy": "last"
                }
              }
            ]
          },
          {
            "matcher": {
              "id": "byFrameRefID",
              "options": "Außentemperatur"
            },
            "properties": [
              {
                "id": "color",
                "value": {
                  "fixedColor": "green",
                  "mode": "fixed"
                }
              }
            ]
          }
        ]
      },
      "gridPos": {
        "h": 10,
        "w": 12,
        "x": 12,
        "y": 0
      },
      "id": 4,
      "interval": "1d",
      "options": {
        "legend": {
          "calcs": [],
          "displayMode": "list",
          "placement": "bottom",
          "showLegend": true
        },
        "tooltip": {
          "mode": "single",
          "sort": "none"
        }
      },
      "targets": [
        {
          "datasource": {
            "type": "influxdb",
            "uid": "JzL_Sa04z"
          },
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "hide": false,
          "measurement": "°C",
          "orderByTime": "ASC",
          "policy": "default",
          "refId": "Außentemperatur",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "mean"
              }
            ]
          ],
          "tags": [
            {
              "key": "entity_id",
              "operator": "=",
              "value": "aussentemperatur_wetter"
            }
          ]
        },
        {
          "datasource": {
            "type": "influxdb",
            "uid": "JzL_Sa04z"
          },
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "hide": false,
          "measurement": "°C",
          "orderByTime": "ASC",
          "policy": "default",
          "refId": "Vorlauf HK1",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "max"
              }
            ]
          ],
          "tags": [
            {
              "key": "entity_id",
              "operator": "=",
              "value": "vorlauf_hk1"
            }
          ]
        },
        {
          "datasource": {
            "type": "influxdb",
            "uid": "JzL_Sa04z"
          },
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "measurement": "kWh",
          "orderByTime": "ASC",
          "policy": "default",
          "query": "SELECT difference(mean(\"value\")) FROM \"kWh\" WHERE (\"entity_id\" = 'gesamtverbrauch_warmepumpe') AND $timeFilter GROUP BY time($__interval) fill(null)",
          "rawQuery": false,
          "refId": "Verbrauch WP",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "mean"
              },
              {
                "params": [],
                "type": "difference"
              }
            ]
          ],
          "tags": [
            {
              "key": "entity_id",
              "operator": "=",
              "value": "gesamtverbrauch_warmepumpe"
            }
          ]
        }
      ],
      "timeFrom": "15d",
      "title": "Verbrauch Wärmpepumpe",
      "type": "timeseries"
    },
    {
      "datasource": {
        "type": "influxdb",
        "uid": "JzL_Sa04z"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisLabel": "",
            "axisPlacement": "auto",
            "fillOpacity": 80,
            "gradientMode": "scheme",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "lineWidth": 1,
            "scaleDistribution": {
              "type": "linear"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green",
                "value": null
              }
            ]
          },
          "unit": "celsius"
        },
        "overrides": [
          {
            "matcher": {
              "id": "byFrameRefID",
              "options": "Außentemperatur"
            },
            "properties": [
              {
                "id": "unit",
                "value": "celsius"
              },
              {
                "id": "color",
                "value": {
                  "mode": "thresholds"
                }
              },
              {
                "id": "thresholds",
                "value": {
                  "mode": "absolute",
                  "steps": [
                    {
                      "color": "super-light-blue",
                      "value": null
                    },
                    {
                      "color": "blue",
                      "value": -5
                    },
                    {
                      "color": "dark-blue",
                      "value": 0
                    },
                    {
                      "color": "super-light-yellow",
                      "value": 5
                    },
                    {
                      "color": "yellow",
                      "value": 10
                    },
                    {
                      "color": "dark-yellow",
                      "value": 15
                    },
                    {
                      "color": "orange",
                      "value": 20
                    },
                    {
                      "color": "dark-orange",
                      "value": 25
                    },
                    {
                      "color": "light-red",
                      "value": 30
                    },
                    {
                      "color": "semi-dark-red",
                      "value": 35
                    },
                    {
                      "color": "dark-red",
                      "value": 40
                    }
                  ]
                }
              },
              {
                "id": "displayName",
                "value": "Außentemperatur"
              },
              {
                "id": "custom.scaleDistribution",
                "value": {
                  "type": "linear"
                }
              }
            ]
          },
          {
            "matcher": {
              "id": "byFrameRefID",
              "options": "Verbrauch WP"
            },
            "properties": [
              {
                "id": "displayName",
                "value": "Verbrauch Wärmepumpe"
              },
              {
                "id": "color",
                "value": {
                  "mode": "thresholds"
                }
              },
              {
                "id": "thresholds",
                "value": {
                  "mode": "absolute",
                  "steps": [
                    {
                      "color": "green",
                      "value": null
                    },
                    {
                      "color": "#EAB839",
                      "value": 80
                    },
                    {
                      "color": "red",
                      "value": 100
                    }
                  ]
                }
              },
              {
                "id": "unit",
                "value": "kwatth"
              },
              {
                "id": "custom.scaleDistribution",
                "value": {
                  "log": 2,
                  "type": "log"
                }
              },
              {
                "id": "custom.axisColorMode",
                "value": "text"
              }
            ]
          }
        ]
      },
      "gridPos": {
        "h": 32,
        "w": 12,
        "x": 12,
        "y": 10
      },
      "hideTimeOverride": true,
      "id": 10,
      "interval": "1d",
      "options": {
        "barRadius": 0.05,
        "barWidth": 0.82,
        "fullHighlight": false,
        "groupWidth": 0.7,
        "legend": {
          "calcs": [],
          "displayMode": "list",
          "placement": "bottom",
          "showLegend": true
        },
        "orientation": "horizontal",
        "showValue": "auto",
        "stacking": "none",
        "tooltip": {
          "mode": "multi",
          "sort": "none"
        },
        "xTickLabelMaxLength": 0,
        "xTickLabelRotation": 0,
        "xTickLabelSpacing": 100
      },
      "targets": [
        {
          "datasource": {
            "type": "influxdb",
            "uid": "JzL_Sa04z"
          },
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "hide": false,
          "measurement": "°C",
          "orderByTime": "ASC",
          "policy": "default",
          "refId": "Außentemperatur",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "mean"
              }
            ]
          ],
          "tags": [
            {
              "key": "entity_id",
              "operator": "=",
              "value": "aussentemperatur_wetter"
            }
          ]
        },
        {
          "datasource": {
            "type": "influxdb",
            "uid": "JzL_Sa04z"
          },
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "measurement": "kWh",
          "orderByTime": "ASC",
          "policy": "default",
          "query": "SELECT difference(mean(\"value\")) FROM \"kWh\" WHERE (\"entity_id\" = 'gesamtverbrauch_warmepumpe') AND $timeFilter GROUP BY time($__interval) fill(null)",
          "rawQuery": false,
          "refId": "Verbrauch WP",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "mean"
              },
              {
                "params": [],
                "type": "difference"
              }
            ]
          ],
          "tags": [
            {
              "key": "entity_id",
              "operator": "=",
              "value": "gesamtverbrauch_warmepumpe"
            }
          ]
        }
      ],
      "timeFrom": "20d",
      "timeShift": "15d",
      "title": "Verbrauch Wärmpepumpe",
      "type": "barchart"
    },
    {
      "datasource": {
        "type": "influxdb",
        "uid": "JzL_Sa04z"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "palette-classic"
          },
          "custom": {
            "axisCenteredZero": false,
            "axisColorMode": "text",
            "axisGridShow": true,
            "axisLabel": "",
            "axisPlacement": "auto",
            "barAlignment": 0,
            "drawStyle": "line",
            "fillOpacity": 0,
            "gradientMode": "opacity",
            "hideFrom": {
              "legend": false,
              "tooltip": false,
              "viz": false
            },
            "insertNulls": false,
            "lineInterpolation": "smooth",
            "lineStyle": {
              "fill": "solid"
            },
            "lineWidth": 1,
            "pointSize": 5,
            "scaleDistribution": {
              "type": "linear"
            },
            "showPoints": "auto",
            "spanNulls": true,
            "stacking": {
              "group": "A",
              "mode": "none"
            },
            "thresholdsStyle": {
              "mode": "off"
            }
          },
          "displayName": "HK1 (avg)",
          "mappings": [],
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green",
                "value": null
              }
            ]
          },
          "unit": "celsius"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 6,
        "w": 12,
        "x": 0,
        "y": 28
      },
      "hideTimeOverride": false,
      "id": 5,
      "interval": "3m",
      "maxDataPoints": 100,
      "options": {
        "legend": {
          "calcs": [],
          "displayMode": "list",
          "placement": "bottom",
          "showLegend": true
        },
        "tooltip": {
          "mode": "single",
          "sort": "none"
        }
      },
      "pluginVersion": "9.2.4",
      "targets": [
        {
          "alias": "VLHK12",
          "datasource": {
            "type": "influxdb",
            "uid": "JzL_Sa04z"
          },
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "hide": false,
          "measurement": "°C",
          "orderByTime": "ASC",
          "policy": "default",
          "query": "SELECT mean(\"value\") FROM \"°C\" WHERE (\"entity_id\" = 'vorlauf_hk1') AND $timeFilter GROUP BY time($__interval) fill(null)",
          "rawQuery": false,
          "refId": "Vorlauf HK1",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "mean"
              }
            ]
          ],
          "tags": [
            {
              "key": "entity_id",
              "operator": "=",
              "value": "vorlauf_hk1"
            }
          ]
        },
        {
          "alias": "RLHK12",
          "datasource": {
            "type": "influxdb",
            "uid": "JzL_Sa04z"
          },
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "hide": false,
          "measurement": "°C",
          "orderByTime": "ASC",
          "policy": "default",
          "query": "SELECT mean(\"value\") FROM \"°C\" WHERE (\"entity_id\" = 'vorlauf_hk1') AND $timeFilter GROUP BY time($__interval) fill(null)",
          "rawQuery": false,
          "refId": "Rücklauf HK1",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "mean"
              }
            ]
          ],
          "tags": [
            {
              "key": "entity_id",
              "operator": "=",
              "value": "rucklauf_hk1"
            }
          ]
        }
      ],
      "timeFrom": "1d",
      "title": "RL vs Vorlauf",
      "transformations": [
        {
          "id": "calculateField",
          "options": {
            "alias": "Difference Daily",
            "binary": {
              "left": "VLHK12",
              "operator": "-",
              "reducer": "sum",
              "right": "RLHK12"
            },
            "mode": "binary",
            "reduce": {
              "reducer": "sum"
            },
            "replaceFields": true
          }
        }
      ],
      "type": "timeseries"
    },
    {
      "datasource": {
        "type": "influxdb",
        "uid": "JzL_Sa04z"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "thresholds"
          },
          "displayName": "HK1 (live)",
          "mappings": [],
          "max": 8,
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "dark-red"
              },
              {
                "color": "#EAB839",
                "value": 2
              },
              {
                "color": "dark-green",
                "value": 3
              }
            ]
          },
          "unit": "celsius"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 7,
        "w": 4,
        "x": 0,
        "y": 34
      },
      "id": 8,
      "interval": "5m",
      "maxDataPoints": 100,
      "options": {
        "orientation": "auto",
        "reduceOptions": {
          "calcs": [
            "lastNotNull"
          ],
          "fields": "",
          "values": false
        },
        "showThresholdLabels": false,
        "showThresholdMarkers": true
      },
      "pluginVersion": "9.2.4",
      "targets": [
        {
          "alias": "VLHK",
          "datasource": {
            "type": "influxdb",
            "uid": "JzL_Sa04z"
          },
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "hide": false,
          "measurement": "°C",
          "orderByTime": "ASC",
          "policy": "default",
          "query": "SELECT mean(\"value\") FROM \"°C\" WHERE (\"entity_id\" = 'vorlauf_hk1') AND $timeFilter GROUP BY time($__interval) fill(null)",
          "rawQuery": false,
          "refId": "Vorlauf HK1",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "last"
              }
            ]
          ],
          "tags": [
            {
              "key": "entity_id",
              "operator": "=",
              "value": "vorlauf_hk1"
            }
          ]
        },
        {
          "alias": "RLHK",
          "datasource": {
            "type": "influxdb",
            "uid": "JzL_Sa04z"
          },
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "hide": false,
          "measurement": "°C",
          "orderByTime": "ASC",
          "policy": "default",
          "query": "SELECT last(\"value\") FROM \"°C\" WHERE (\"entity_id\" = 'rucklauf_hk1') AND $timeFilter GROUP BY time($__interval) fill(null)",
          "rawQuery": false,
          "refId": "Rücklauf HK1",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "last"
              }
            ]
          ],
          "tags": [
            {
              "key": "entity_id",
              "operator": "=",
              "value": "rucklauf_hk1"
            }
          ]
        }
      ],
      "timeFrom": "24h",
      "title": "RL vs Vorlauf",
      "transformations": [
        {
          "id": "calculateField",
          "options": {
            "alias": "VLHKLast",
            "mode": "reduceRow",
            "reduce": {
              "include": [
                "VLHK"
              ],
              "reducer": "lastNotNull"
            }
          }
        },
        {
          "id": "calculateField",
          "options": {
            "alias": "RLHKLast",
            "mode": "reduceRow",
            "reduce": {
              "include": [
                "RLHK"
              ],
              "reducer": "lastNotNull"
            }
          }
        },
        {
          "id": "calculateField",
          "options": {
            "binary": {
              "left": "VLHKLast",
              "operator": "-",
              "reducer": "sum",
              "right": "RLHK"
            },
            "mode": "binary",
            "reduce": {
              "reducer": "sum"
            },
            "replaceFields": true
          }
        }
      ],
      "type": "gauge"
    },
    {
      "datasource": {
        "type": "influxdb",
        "uid": "JzL_Sa04z"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "thresholds"
          },
          "displayName": "FBH (live)",
          "mappings": [],
          "max": 8,
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "dark-red"
              },
              {
                "color": "#EAB839",
                "value": 2
              },
              {
                "color": "dark-green",
                "value": 3
              }
            ]
          },
          "unit": "celsius"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 7,
        "w": 4,
        "x": 4,
        "y": 34
      },
      "id": 9,
      "interval": "5m",
      "maxDataPoints": 100,
      "options": {
        "orientation": "auto",
        "reduceOptions": {
          "calcs": [
            "lastNotNull"
          ],
          "fields": "",
          "values": false
        },
        "showThresholdLabels": false,
        "showThresholdMarkers": true
      },
      "pluginVersion": "9.2.4",
      "targets": [
        {
          "alias": "VLFBH",
          "datasource": {
            "type": "influxdb",
            "uid": "JzL_Sa04z"
          },
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "hide": false,
          "measurement": "°C",
          "orderByTime": "ASC",
          "policy": "default",
          "query": "SELECT mean(\"value\") FROM \"°C\" WHERE (\"entity_id\" = 'vorlauf_hk1') AND $timeFilter GROUP BY time($__interval) fill(null)",
          "rawQuery": false,
          "refId": "Vorlauf HK1",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "last"
              }
            ]
          ],
          "tags": [
            {
              "key": "entity_id",
              "operator": "=",
              "value": "vorlauf_fbh"
            }
          ]
        },
        {
          "alias": "RLFBH",
          "datasource": {
            "type": "influxdb",
            "uid": "JzL_Sa04z"
          },
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "hide": false,
          "measurement": "°C",
          "orderByTime": "ASC",
          "policy": "default",
          "query": "SELECT last(\"value\") FROM \"°C\" WHERE (\"entity_id\" = 'rucklauf_hk1') AND $timeFilter GROUP BY time($__interval) fill(null)",
          "rawQuery": false,
          "refId": "Rücklauf HK1",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "last"
              }
            ]
          ],
          "tags": [
            {
              "key": "entity_id",
              "operator": "=",
              "value": "rucklauf_fbh"
            }
          ]
        }
      ],
      "timeFrom": "24h",
      "title": "RL vs Vorlauf",
      "transformations": [
        {
          "id": "calculateField",
          "options": {
            "alias": "VLFBHLast",
            "mode": "reduceRow",
            "reduce": {
              "include": [
                "VLFBH"
              ],
              "reducer": "lastNotNull"
            },
            "replaceFields": false
          }
        },
        {
          "id": "calculateField",
          "options": {
            "alias": "RLFBHLast",
            "mode": "reduceRow",
            "reduce": {
              "include": [
                "RLFBH"
              ],
              "reducer": "lastNotNull"
            }
          }
        },
        {
          "id": "calculateField",
          "options": {
            "alias": "DifferenceFBH",
            "binary": {
              "left": "VLFBHLast",
              "operator": "-",
              "reducer": "sum",
              "right": "RLFBHLast"
            },
            "mode": "binary",
            "reduce": {
              "reducer": "sum"
            },
            "replaceFields": true
          }
        }
      ],
      "type": "gauge"
    },
    {
      "datasource": {
        "type": "influxdb",
        "uid": "JzL_Sa04z"
      },
      "description": "",
      "fieldConfig": {
        "defaults": {
          "color": {
            "mode": "thresholds"
          },
          "displayName": "Wärmepumpe (live)",
          "mappings": [],
          "min": -1,
          "thresholds": {
            "mode": "absolute",
            "steps": [
              {
                "color": "green"
              },
              {
                "color": "#EAB839",
                "value": 4000
              },
              {
                "color": "red",
                "value": 7000
              }
            ]
          },
          "unit": "watt"
        },
        "overrides": []
      },
      "gridPos": {
        "h": 7,
        "w": 4,
        "x": 8,
        "y": 34
      },
      "id": 11,
      "interval": "1",
      "options": {
        "orientation": "auto",
        "reduceOptions": {
          "calcs": [
            "lastNotNull"
          ],
          "fields": "",
          "values": false
        },
        "showThresholdLabels": false,
        "showThresholdMarkers": true
      },
      "pluginVersion": "9.2.4",
      "targets": [
        {
          "datasource": {
            "type": "influxdb",
            "uid": "JzL_Sa04z"
          },
          "groupBy": [
            {
              "params": [
                "$__interval"
              ],
              "type": "time"
            },
            {
              "params": [
                "null"
              ],
              "type": "fill"
            }
          ],
          "hide": false,
          "measurement": "W",
          "orderByTime": "ASC",
          "policy": "default",
          "query": "SELECT mean(\"value\") FROM \"°C\" WHERE (\"entity_id\" = 'vorlauf_hk1') AND $timeFilter GROUP BY time($__interval) fill(null)",
          "rawQuery": false,
          "refId": "Vorlauf HK1",
          "resultFormat": "time_series",
          "select": [
            [
              {
                "params": [
                  "value"
                ],
                "type": "field"
              },
              {
                "params": [],
                "type": "last"
              }
            ]
          ],
          "tags": [
            {
              "key": "entity_id",
              "operator": "=",
              "value": "leistung_warmepumpe"
            }
          ]
        }
      ],
      "timeFrom": "24h",
      "title": "Verbrauch",
      "transformations": [],
      "type": "gauge"
    }
  ],
  "refresh": "5m",
  "schemaVersion": 38,
  "style": "dark",
  "tags": [],
  "templating": {
    "list": []
  },
  "time": {
    "from": "now-30d",
    "to": "now"
  },
  "timepicker": {
    "hidden": true,
    "refresh_intervals": [
      "5s",
      "10s",
      "30s",
      "1m",
      "5m",
      "15m",
      "30m",
      "1h",
      "2h",
      "1d"
    ],
    "time_options": [
      "5m",
      "15m",
      "1h",
      "6h",
      "12h",
      "24h",
      "2d",
      "7d",
      "30d"
    ],
    "type": "timepicker"
  },
  "timezone": "browser",
  "title": "Heizungsüberwachung",
  "uid": "d5lnDaAVk",
  "version": 57,
  "weekStart": "monday"
}

Fazit

Nun hast du alle nötigen Informationen, um so richtig mit der Langzeitdatenspeicherung von Home Assistant in InfluxDB zu starten und diese anschließend mit Grafana auszuwerten.

Denn für mich geht es im Smart Home immer um Komfortoptimierung oder Kostenersparnis. Dabei verlasse ich mich nie auf mein Bauchgefühl, sondern treffe Fakten & datenbasierte Entscheidungen, was ohne meine Dashboards nicht möglich wäre.

Wie genau das geht, habe ich ja bereits bis zum Abwinken im Video gezeigt 🙌

Und falls dir für den Anfang die Bordmittel reichen: Für Strom, Wasser und Gas kommst du mit dem Energie-Dashboard und der Langzeitstatistik schon sehr weit, alles dazu im Strom-, Wasser- & Gas-Megabeitrag.

Wenn du Fragen oder Anmerkungen hast, zögere nicht, sie mir unten in den Kommentaren mitzuteilen und ich werde mein Bestes tun, um dir zu helfen. Vielen Dank fürs Lesen!

Verpasse keine Tipps!

Ich sende keinen Spam! Erfahre mehr in der Datenschutzerklärung.

Transparenz: In diesem Artikel sind Partnerlinks enthalten. Durch einen Klick darauf ge­lan­gt ihr direkt zum Anbieter. Solltet ihr euch dort für einen Kauf entscheiden, erhalte ich ei­ne kleine Provision. Für euch ändert sich am Preis nichts & Partnerlinks haben keinerlei Einfluss auf meine Berichterstattung. Vielen Dank für deine Unterstützung!

Der Kopf hinter dem YouTube-Kanal simon42. Schreibt hier ehrlich und leidenschaftlich über Smart Home und Technik Themen, denn das Zuhause wurde bereits von Sprachassistenten übernommen und die Kontrolle abgegeben 😁

Nennenswerte Antworten

  1. Hallo Simon, was für ein langes Video. Vielen Dank für deine Arbeit. Leider bin ich schon bei Minute 15:10 Uhr hängen geblieben. Mein Grafana sagt mir zwar dass die datasource arbeitet, aber es werden keine “measurements” gefunden. Und ich habe lange gewartet. Was habe ich falsch gemacht? Oder wie kann ich prüfen wo der Fehler liegt.
    Gruß Jens

  2. Bin ich der einzige Depp, der das nicht hin bekommt?

  3. Hi Community, danke für die Aufnahme hier im Forum. Passend zum letzten Post, kann ich sagen, dass es wohl ein wenig dauert bis man das ansatzweise versteht, wie das Zusammenspiel zwischen allen Komponenten hinbekommt. Bei mir funktioniert es nun auch ansatzweise, was ich allerdings nicht hinbekomme, ist die Darstellung der Entitäten meiner Heizungsthermostate. Diese werden zwar angezeigt, aber ich habe es nicht hinbekommen die Entität im Grafana oder der InfluxDB zu finden. Alle aktuellen Temperaturen werden unter climate.thermostat_ angezeigt, aber scheinbar nicht geloggt. Hab zwar einige Beiträge gelesen, aber nicht verstanden warum ich Einträge in der Configuration.yaml machen muss, bzw. welche. Wäre für jeden Ansatz dankbar. Gruß Totti

  4. Hallo - danke für das tolle Video mit dem im HA und influxdb und grafana auf einem Dell Wyse 7050 super zum laufen bekommen habe.

    seit 2 Tagen nun kann ich Grafana nicht mehr nutzen. Er hat wohl im Core vom HA Updates gemacht und auch Grafana hat den Sprung auf 9.0 und 9.0.1 gemacht.

    Lt. Logs ist die influxdb richtig gestartet und auch im Grafana log

    msg=“Update check succeeded” duration=211.883109ms
    [11:35:19] INFO: Starting NGINX…
    logger=plugin.grafana-image-renderer t=2023-07-09T11:35:20.90285968+02:00 level=warn msg=“Plugin process is running with elevated privileges. This is not recommended”

    sollte alles richtig sein.

    Hab das addon schon deinstalliert - neu gestartet - neu installiert.

    All the Same.

    In Add-Ons ist Grafana ausgegraut; wenn ich in Add-Ons auf Starten klicke dreht sich der Kreis zu Tode.

    wenn ich in der Seitenleiste auf Grafana springe sagt er mir, dass Add-On sei nicht gestartet. Wenn ich es dann von dort aus starte sagt er:

    “The add-on is starting, this can take some time…”…

    und dann

    “Add-on läuft nicht. Möchtest du es jetzt starten?”

    Help - i need somebody´s Help…

    Im HA Add-on Store wird ja lediglich das - heute - 9.0.1er angeboten. Bei Grafana selber sind die schon bei 9.1 - 9.5 und 10.X -

  5. Hi, hast du es mittlerweile hinbekommen oder brauchst du noch Hilfe? Ich habe das Tutorial gerade umgesetzt und bei mir hat es einwandfrei funktioniert.
    Hast du die configuration.yaml richtig bearbeitet?

    LG Max

Setze die Diskussion fort unter community.simon42.com

42 mehr antworten

Teilnehmer

Avatar for WebTeufel Avatar for sasquuatch Avatar for spiderrolli Avatar for Tester0815 Avatar for Gabba Avatar for Marty56 Avatar for tk176 Avatar for denkerD Avatar for SmArT1 Avatar for dp20eic Avatar for DeepCore Avatar for Marty Avatar for Kronos Avatar for Astro0468 Avatar for wobi Avatar for max_xt98 Avatar for koobrewop Avatar for system Avatar for Ath0n Avatar for emden09 Avatar for NoPlan Avatar for Stoffel_Hessen Avatar for fjrdueser

54 Kommentare zu „InfluxDB & Grafana in Home Assistant: Langzeitdaten speichern & auswerten“

  1. Ich nutze den hier beschriebenen Aufbau, um ältere Daten vorzuhalten. Nun wurde ich heute Morgen von der Meldung überrascht, dass diese Variante mit influxdb als App nicht mehr supportet ist. Hätte ich auf den falschen Button gedrückt, wäre alles weggewesen.
    Wie sehen denn aktuelle Alternativen aus? Es wäre ganz toll, wenn’s ein Folgeartikel zum aktuellen Stand gäbe. 🙏

    Antworten
    • Habe das Gleiche Problem.
      Influx App wird gelöscht weil deprecated da auf Influx 1.x basiert. Nachfolger sind keine Vorhanden. Adäquate Alternativen gibt es nicht. Timescale wird auch nicht offiziell unterstützt, MariaDB hat keine Timeseries und ist daher nicht für richtige Lanzeitdatenauswertungen geeignet.

      Was macht der Besitzer dieser Webseite ? Was wird er zukünftig verwenden ? Kommt ein neues Video zum Thema ?

  2. Mein Grafana startet nicht, bzw. laut Protokoll started es, Stoppt aber dann alles wieder???

    Was ist der Fehler?
    s6-rc: info: service nginx: stopping
    [10:20:52] INFO: Service NGINX exited with code 0 (by signal 0)
    logger=migrator t=2025-04-25T10:20:53.375942787+02:00 level=info msg=“Executing migration“ id=“Add column tags to annotation table“
    s6-rc: info: service nginx successfully stopped
    logger=migrator t=2025-04-25T10:20:53.385384617+02:00 level=info msg=“Migration successfully executed“ id=“Add column tags to annotation table“ duration=10.245612ms
    s6-rc: info: service init-nginx: stopping
    s6-rc: info: service grafana: stopping
    s6-rc: info: service init-nginx successfully stopped
    [10:20:54] INFO: Service Grafana exited with code 256 (by signal 15)
    s6-rc: info: service grafana successfully stopped
    logger=migrator t=2025-04-25T10:20:54.88189756+02:00 level=info msg=“Executing migration“ id=“Create annotation_tag table v2″
    s6-rc: info: service init-grafana: stopping
    s6-rc: info: service memcached: stopping
    logger=migrator t=2025-04-25T10:20:54.886160282+02:00 level=info msg=“Migration successfully executed“ id=“Create annotation_tag table v2″ duration=4.424214ms
    [10:20:55] INFO: Service memcached exited with code 0 (by signal 0)
    s6-rc: info: service init-grafana successfully stopped
    s6-rc: info: service memcached successfully stopped
    s6-rc: info: service legacy-cont-init: stopping
    logger=migrator t=2025-04-25T10:20:56.387425592+02:00 level=info msg=“Executing migration“ id=“Add unique index annotation_tag.annotation_id_tag_id“
    s6-rc: info: service legacy-cont-init successfully stopped
    s6-rc: info: service fix-attrs: stopping
    s6-rc: info: service base-addon-timezone: stopping
    s6-rc: info: service base-addon-log-level: stopping
    logger=migrator t=2025-04-25T10:20:56.394988386+02:00 level=info msg=“Migration successfully executed“ id=“Add unique index annotation_tag.annotation_id_tag_id“ duration=7.554358ms
    s6-rc: info: service fix-attrs successfully stopped
    s6-rc: info: service base-addon-timezone successfully stopped
    s6-rc: info: service base-addon-log-level successfully stopped
    s6-rc: info: service base-addon-banner: stopping
    s6-rc: info: service base-addon-banner successfully stopped
    s6-rc: info: service s6rc-oneshot-runner: stopping
    s6-rc: info: service s6rc-oneshot-runner successfully stopped

    Antworten
  3. Wenn man von lanzeitdaten spricht, sollte man die InfluxDB NICHT im HA installieren, sondern wenn möglich in einem Container, ausserhalb des HA’s.

    Ist der HA „tot“ und es muss neu installiert werden, sind die Daten oftmals auch weg. Eine Externe Instanz befähigt einen, das du vermeiden. Denn .. wer prüft das Backup intern des Ha’s – an welche man nicht mehr kommt, wenn VM / Container tot 😉

    Daher empfiehlt es sich gundsätzlich das Backup nicht in den HA zu tätigen, sondern auf eine externe Ressource, auch wenn es nur eine über usb angeschlossene 1 TB Platte für 30 € ist.

    Auch nimmt die InfluxDB dem System (HA) – wo man es auch immer installiert hat (darunter liegende Hardware), die Perfomance !

    Antworten
  4. Hallo Simon erst einmal vielen dank für deine Videos ich arbeite mit homeassistant jetzt ca 6 Monate und habe schon einige Integrationen dank deinen Beschreibungen machen können.
    Ich habe folgendes Problem ich habe die Influx DB installiert und die hat auch erst funktioniert aber irgendwie lässt sich die Datenbank nicht mehr öffnen sehe immer nur den Blauen kreis der sich da so dreht habe adas addon dann neu installiert hat aber nichts geändert. das Log sieht meiner meinung nach ok aus hier das Log:

    [34m Add-on: InfluxDB[0m
    [34m Scalable datastore for metrics, events, and real-time analytics[0m
    [34m———————————————————–[0m
    [34m Add-on version: 5.0.1[0m
    [32m You are running the latest version of this add-on.[0m
    [34m System: Home Assistant OS 14.0 (amd64 / generic-x86-64)[0m
    [34m Home Assistant Core: 2024.12.4[0m
    [34m Home Assistant Supervisor: 2024.12.0[0m
    [34m———————————————————–[0m
    [34m Please, share the above information when looking for help[0m
    [34m or support in, e.g., GitHub, forums or the Discord chat.[0m
    [34m———————————————————–[0m
    s6-rc: info: service base-addon-banner successfully started
    s6-rc: info: service fix-attrs: starting
    s6-rc: info: service base-addon-timezone: starting
    s6-rc: info: service base-addon-log-level: starting
    s6-rc: info: service fix-attrs successfully started
    [10:42:29] INFO: [32mConfiguring timezone (Europe/Berlin)…[0m
    s6-rc: info: service base-addon-log-level successfully started
    s6-rc: info: service base-addon-timezone successfully started
    s6-rc: info: service legacy-cont-init: starting
    cont-init: info: running /etc/cont-init.d/create-users.sh
    cont-init: info: /etc/cont-init.d/create-users.sh exited 0
    cont-init: info: running /etc/cont-init.d/influxdb.sh
    cont-init: info: /etc/cont-init.d/influxdb.sh exited 0
    cont-init: info: running /etc/cont-init.d/kapacitor.sh
    cont-init: info: /etc/cont-init.d/kapacitor.sh exited 0
    cont-init: info: running /etc/cont-init.d/nginx.sh
    cont-init: info: /etc/cont-init.d/nginx.sh exited 0
    s6-rc: info: service legacy-cont-init successfully started
    s6-rc: info: service legacy-services: starting
    services-up: info: copying legacy longrun chronograf (no readiness notification)
    services-up: info: copying legacy longrun influxdb (no readiness notification)
    services-up: info: copying legacy longrun kapacitor (no readiness notification)
    services-up: info: copying legacy longrun nginx (no readiness notification)
    [10:42:30] INFO: [32mKapacitor is waiting until InfluxDB is available…[0m
    [10:42:30] INFO: [32mChronograf is waiting until InfluxDB is available…[0m
    s6-rc: info: service legacy-services successfully started
    [10:42:30] INFO: [32mStarting the InfluxDB…[0m
    [10:42:35] INFO: [32mStarting the Kapacitor[0m
    [10:42:35] INFO: [32mStarting Chronograf…[0m

    ‚##:::’##::::’###::::’########:::::’###:::::’######::’####:’########::’#######::’########::
    ##::’##::::’## ##::: ##…. ##:::’## ##:::’##… ##:. ##::… ##..::’##…. ##: ##…. ##:
    ##:’##::::’##:. ##:: ##:::: ##::’##:. ##:: ##:::..::: ##::::: ##:::: ##:::: ##: ##:::: ##:
    #####::::’##:::. ##: ########::’##:::. ##: ##:::::::: ##::::: ##:::: ##:::: ##: ########::
    ##. ##::: #########: ##…..::: #########: ##:::::::: ##::::: ##:::: ##:::: ##: ##.. ##:::
    ##:. ##:: ##…. ##: ##:::::::: ##…. ##: ##::: ##:: ##::::: ##:::: ##:::: ##: ##::. ##::
    ##::. ##: ##:::: ##: ##:::::::: ##:::: ##:. ######::’####:::: ##::::. #######:: ##:::. ##:
    ..::::..::..:::::..::..:::::::::..:::::..:::……:::….:::::..::::::…….:::..:::::..::

    2024/12/19 10:42:35 Using configuration at: /etc/kapacitor/kapacitor.conf
    time=“2024-12-19T10:42:38+01:00″ level=info msg=“Moving from version 1.8.0″
    time=“2024-12-19T10:42:38+01:00″ level=info msg=“Moving to version 1.10.2″
    time=“2024-12-19T10:42:38+01:00″ level=info msg=“Successfully created /data/backup/chronograf.db.1.8.0″
    time=“2024-12-19T10:42:38+01:00″ level=info msg=“Serving chronograf at http://127.0.0.1:8889“ component=server
    time=“2024-12-19T10:42:38+01:00″ level=info msg=“Reporting usage stats“ component=usage freq=24h reporting_addr=“https://usage.influxdata.com“ stats=“os,arch,version,cluster_id,uptime“
    [10:42:38] INFO: [32mStarting NGINX…[0m
    time=“2024-12-19T10:43:36+01:00″ level=info msg=“Serving assets“ component=server method=GET remote_addr=“127.0.0.1:45402″ url=/
    time=“2024-12-19T10:43:36+01:00″ level=info msg=“Response: OK“ component=server method=GET remote_addr=“127.0.0.1:45402″ response_time=1.066774ms status=200
    time=“2024-12-19T10:43:36+01:00″ level=info msg=“Serving assets“ component=server method=GET remote_addr=“127.0.0.1:45404″ url=/index.c708214f.css
    time=“2024-12-19T10:43:36+01:00″ level=info msg=“Serving assets“ component=server method=GET remote_addr=“127.0.0.1:45408″ url=/index.4493d50d.js
    time=“2024-12-19T10:43:36+01:00″ level=info msg=“Response: OK“ component=server method=GET remote_addr=“127.0.0.1:45408″ response_time=13.761525ms status=200
    time=“2024-12-19T10:43:36+01:00″ level=info msg=“Response: OK“ component=server method=GET remote_addr=“127.0.0.1:45404″ response_time=52.628227ms status=200
    time=“2024-12-19T10:43:36+01:00″ level=info msg=“Serving assets“ component=server method=GET remote_addr=“127.0.0.1:45422″ url=/worker.f6754a45.js
    time=“2024-12-19T10:43:37+01:00″ level=info msg=“Response: OK“ component=server method=GET remote_addr=“127.0.0.1:45422″ response_time=2.50609ms status=200
    time=“2024-12-19T10:43:37+01:00″ level=info msg=“Response: OK“ component=server method=GET remote_addr=“127.0.0.1:45432″ response_time=“378.52µs“ status=200

    Antworten
  5. Falls einer von euch die Influxdb2 auf einem externen Gerät nutzt,
    hier die yaml code für die Verbindung:
    influxdb:
    api_version: 2
    host: deine_influxdb_adresse
    port: 8086
    token: „dein_influxdb_token“
    organization: „dein_organization_name“
    bucket: „dein_bucket_name“
    ssl: false
    verify_ssl: false

    Antworten

Schreibe einen Kommentar