[Artikel] Home Assistant Sensorwerte in einer influxDB abspeichern und mit Grafana visualisieren - Part 1

azrael783

Active member
Da hier der ein oder andere User (@rednag ) bereits danach gefragt hat, hier mal eine Schritt für Schritt Anleitung wie man die Sensorwerte aus Home Assistant in einer time-based Datenbank (influxDB) abspeichert und diese dann in Grafana visualisieren kann.

1. Einrichtung influxDB
Zu erst benötigen wir natürlich eine Datenbank in der die Daten gespeichert werden können. Ich habe die DB auf meinem NAS (QNAP) liegen und in der Container-Station eine "App" erstellt:
YAML:
version: '2'

services:
  influxdb:
    image: influxdb:1.8
    container_name: influx_db
    restart: unless-stopped
    volumes:
      - /pfad-zur-datenbank:/var/lib/influxdb
    ports:
      - 8086:8086
    networks:
      influxdb:
     
  chronograf:
    image: chronograf:1.8
    container_name: chronograf
    restart: unless-stopped
    volumes:
      - /pfad-zur-config:/var/lib/chronograf
    ports:
      - 8888:8888
    command:
      "--influxdb-url=http://influxdb:8086"
    networks:
      influxdb:
     
networks:
  influxdb:
    external: false

Das ganze kann natürlich auch auf jedem anderen Host laufen, der Docker beherscht ;)
Die "App" enthält zum einen die Datenbank Anwendung und zum anderen eine grafische Benutzeroberfläche - Chronograf - zur Verwaltung der Datenbank. Ich muss noch dazu sagen, dass ich influxDB "nur" in der Version 1.8 verwende. Die Version 2 bringt einige Änderungen mit, die ich mir noch nicht näher angeschaut habe. Es ist daher wichtig, dass das korrekte Image für influxDB ausgewählt wird. Mit der "latest" Version von influxDB wird das so ohne Anpassungen nicht funktionieren.
Wenn die Container erstellt wurden, ruft man mit http://nas-ip:8888 Chronograf auf:

2022-01-09.png

Wechselt nun zur "InfluxDB-Admin" Seite. Hier könnt ihr nun eine Datenbank für HA und auch einen User samt Passwort anlegen - hier bietet es sich jetzt an auch für Grafana einen User anzulegen ;) . Beim Anlegen der Datenbank könnt ihr die sogenannte "Retention Policy" festlegen. Diese legt fest wie lange die Daten gespeichert werden sollen. Standardmäßig steht die Policy auf Unendlich, das habe ich auch so belassen. Ihr könnt die Daten natürlich auch nur ein Jahr, ein Monat, ein Tag, etc. behalten. Nach dem Anlegen des Users müsst ihr diesem noch die Rechte einstellen, ansonsten kann HA nicht in die Datenbank schreiben.

2022-01-09 (1).png

Damit ist die Einrichtung der Datenbank abgeschlossen und wir können diese in HA einbinden.

2. Einbindung der Datenbank in HA
Damit HA die Daten in der influxDB ablegen kann, muss diese in der configuration.yaml angegeben werden:
YAML:
# InfluxDB Storage
influxdb:
  host: nas-ip
  port: 8086
  database: datenbank
  username: user
  password: !secret influxdb_pwd
  ssl: false
  max_retries: 3
  default_measurement: state
  exclude:
    domains:
      - automation
      - weblink
      - updater
    entities:
     - sun.sun
     - sensor.moon
     - sensor.date_time
     - sensor.daylight
  include:
    domains:
      - sensor
      - switch
      - binary_sensor

Über die "Parameter" exclude und include bestimmt ihr dann welche Werte in der Datenbank landen und welche nicht. Ich speichere hauptsächlich Sensorwerte ab. Nach einem Neustart von HA sollten die Daten jetzt in der Datenbank landen. Falls HA die Datenbank nicht erreichen kann, oder nicht in die Datenbank schreiben kann, erfahrt ihr dies in den Logs
;)

3. Einrichtung von Grafana und Visualisierung der Daten
Als nächstes richten wir Grafana ein. Bei mir läuft die Anwendung auf dem Raspberry Pi auf dem auch HA läuft, prinzipiell kann die Anwendung aber auch wieder überall da laufen, wo Docker läuft. Als erstes müssen wir ein Volume für Grafana und seine Daten anlegen docker volume create grafana_data, danach könnt ihr Grafana mit dem Befehl docker run -d -p 3000:3000 --name=grafana -v grafana_data:/var/lib/grafana grafana/grafana starten. Ihr könnt auch eine Compose Datei verwenden:
YAML:
version: "3.3"
services:
  grafana:
    container_name: grafana
    image: grafana/grafana
    ports:
      - 3000:3000
    user: "1000"
    volumes:
      - grafana_data:/var/lib/grafana
    environment:
      - "GF_INSTALL_PLUGINS=grafana-piechart-panel"
Ich habe noch die ID des Users Pi angegeben, der ist aber glaube nur notwendig, wenn man anstatt eines Volumes einen Order auf dem Host verwenden möchte. Wenn ihr nun Grafana aufruft werdet ihr nach einem User und einem Passwort gefragt. Hier gibt ihr beides Mal "admin" ein und vergebt anschließend ein eigenes Passwort.

2022-01-09 (2).png

Nun müssen wir Grafana zunächst die Datenquelle bekannt machen. Dazu wechseln wir in die Einstellungen (Zahnradsymbol) und geben hier die Daten der influxDB ein.

Anhang anzeigen 380
2022-01-09 (4).png
Wenn alle Daten eingetragen sind, zeigt ein Klick auf "Save & test" auch direkt ob die Verbindung funktioniert.
Nun können wir unser erstes Dashboard erstellen. Dazu klicken wir auf das "+" Symbol links in der Menüleiste und wählen "Dashboard" aus. Im nun geöffneten Fenster wählen wir "Add new Panel" aus und landen auf folgender Seite:
2022-01-09 (6).png
Im oberen Bereich (roter Rahmen) wird euch das Diagramm dargestellt - da noch keine Datenabfrage erstellt wurde, ist das momentan noch leer. Im unteren Bereich (blauer Rahmen) erstellt ihr eine Datenabfrage, die im oberen Bereich dann dargestellt wird. Im rechten Bereich (grüner Rahmen) könnt ihr die Darstellung beeinflussen und darüber (gelber Rahmen) könnt ihr auswählen, wie die Daten dargestellt werden sollen, als Diagramm, Torten-Diagramm, etc. Weiter geht es dann im zweiten Teil - ich kann nämlich "nur" fünf Bilder an einen Beitrag anhängen :(
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
4.473
Beiträge
46.020
Mitglieder
4.104
Neuestes Mitglied
Rabotti
Zurück
Oben