Home Assistant und Grafana

Grafana ist ein Programm, um große Datenmengen visuell aufzubereiten. Genau diese fallen durch meine Sensoren für Temperatur, Luftfeuchtigkeit und Helligkeit in Homeassistant an.

Grafana Logo
grafana.com / Wikipedia
Grafana_logoCreative Commons Attribution-ShareAlike 4.0 International License . loading=
Grafana Logo

Grafana

Grafana wird seit 2014 von Grafana Labs entwickelt und steht unter AGPL Lizenz. Das Programm erfasst keine Daten und speichert sie auch nicht. Es ist darauf ausgelegt, Seriendaten grafisch aufzubereiten.

InfluxDB

Die InfluxDB hingegen ist eine Datenbank, die auf die Speicherung von Reihendaten spezialisiert ist. Seit 2013 wird sie von InfluxData unter MIT-Lizenz angeboten.

Installation

Ich Gehe jetzt mal in die Praxis und erzeuge die Container für die beiden Softwareprodukte.

Zunächst benötige ich zwei Verzeichnisse für die Volumes. Das Verzeichnis von Grafana muss dem User mit der Id 472 gehören, damit es beschreibbar ist.

sudo mkdir -p /opt/grafana /opt/influxdb
sudo chown -R 472:472 /opt/grafana

Dann erweitere ich mein bestehendes docker-compose.yml für die beiden Container

influxdb:
    image: influxdb:1.8
    container_name: influxdb
    ports:
      - "8086:8086"
    volumes:
      - /opt/influxdb:/var/lib/influxdb
    restart: unless-stopped

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    ports:
      - "3001:3000"
    volumes:
      - /opt/grafana:/var/lib/grafana
    restart: unless-stopped

Nach einem docker-compose up -d sollten beide Images heruntergeladen und die Container erzeugt werden.

Datenbank einrichten

In diesem Schritt richte ich die Datenbank ein, in der Homeassistant die Messwerte speichern kann.

Mit

docker exec -it influxdb influx

rufe ich den Influxclient innerhalb des InfluxDB Containers auf. Dort gebe ich hintereinander diese Kommandos ein, um die Datenbank anzulegen und die Zugriffsrechte zu setzen. Dies unterscheidet sich kaum von dem Vorgehen in MariaDB.

docker exec -it influxdb influx
> CREATE DATABASE homeassistant
> CREATE USER ha_user WITH PASSWORD 'geheimesPasswort'
> GRANT ALL ON homeassistant TO ha_user
> exit

Für das Passwort setze ich natürlich einen sicheren Wert ein als er hier steht 😉

Anbindung an Home Assistant

Damit Home Assistant die Sensorwerte in die neue DB schreiben kann, erweitere ich die /opt/homeassistant/configuration.yml um diesen Eintrag:

# Konfiguration der InfluxDB
influxdb:
  host: influxdb
  port: 8086
  database: homeassistant
  username: ha_user
  password: geheimesPasswort
  max_retries: 3
  default_measurement: state

database:, username: und password: müssen mit den Werten aus der Datenbankeinrichtung übereinstimmen.

Nach einem docker restart homeassistant schreibt Home Assistant ab sofort die Messwerte in die neue Influx Datenbank.

Dies überprüfe ich mit

docker exec -it influxdb influx -database homeassistant -execute 'SHOW MEASUREMENTS'

Damit setze ich ein InfluxQL Kommando auf der Datenbank ab, das mir die Einheiten der erfassten Werte anzeigt.

Das Testkommando zeigt, dass u.a. Sensordaten für Feuchtigkeit %, Temperatur °C und Helligkeit lx erfasst wurden.
raspithek.de - Olli Graf
influx-first-testCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Das Testkommando zeigt, dass u.a. Sensordaten für Feuchtigkeit %, Temperatur °C und Helligkeit lx erfasst wurden.

Grafana einrichten

Jetzt ist es an der Zeit, Grafana einzurichten. Das Web UI rufe ich mit http://kodos:3001 auf und erhalte den Welcome-Screen, der mich zum Login auffordert.

Einloggen in Grafana
raspithek.de - Olli Graf
welcome-to-grafanaCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Einloggen in Grafana

Der erste Login geschieht mit Usernamen admin und Passwort admin. Direkt danach muß ich für den admin Account ein neues Passwort vergeben.

Dialog zur Passwortänderung
raspithek.de - Olli Graf
update-pwCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Dialog zur Passwortänderung

Ich lande dann auf dem Default Screen von Grafana.

Grafana Default Screen
raspithek.de - Olli Graf
default-screenCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Grafana Default Screen

Verbindung zur InfluxDB herstellen

Jetzt geht es darum, dass Grafana die Messwerte, die Home Assistant inzwischen fleißig in die Datenbank schreibt, auch einlesen kann. Dazu klicke ich auf die Kachel Datasources/ Add your first datasource

Als erstes wähle ich InfluxDB als Datenbanktyp

Auswahl Datenbanksystem InfluxDB
raspithek.de - Olli Graf
add-datasource-influxdbCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Auswahl Datenbanksystem InfluxDB

Danach kann ich wie bei Home Assistant Datenbankname, User und Passwort konfigurieren, um die Verbindung herzustellen.

Konfiguration der Datenbankverbindung
raspithek.de - Olli Graf
database-setupCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Konfiguration der Datenbankverbindung

Damit kann Grafana die Sensorwerte bereits auslesen.

Dashboard einrichten

Für die grafische Aufbereitung der Daten richte ich jetzt mein erstes Dashboard ein. Ich möchte dazu den Helligkeitsverlauf im Arbeitszimmer visualisieren. Im Default Screen klicke ich auf Create your first dashboard und danach auf Add Visualization

raspithek.de - Olli Graf
add-visualizationCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=

Danach werde ich dazu ausgewählt, die Datenquelle (Datasource) auszuwählen. Da ich nur die InfluxDB konfiguriert habe, fällt die Auswahl nicht schwer.

Auswahl der Datasource
raspithek.de - Olli Graf
select-datasourceCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Auswahl der Datasource

Darauf öffnet sich ein neues leeres Dashboard, dass noch keine Daten anzeigt und jetzt konfiguriert werden muss.

raspithek.de - Olli Graf
new-dashboardCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=

Im oberen Teil, der momentan noch „no data“ anzeigt, wird später der Graph angezeigt. Darunter befindet sich die Daten-Konfiguration des Graph und auf der rechten Seite eine Sidebar zur optischen Konfiguration.

Der untere Teil dient dazu, eine SQL-Query zusammenzubauen, mit der die Daten aus der Datenbank gelesen werden. Damit musst du nicht extra SQL lernen, um Grafana benutzen zu können.

raspithek.de - Olli Graf
query-builderCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=

Da ich die Helligkeit anzeigen möchte, wähle ich in der FROM Zeile bei select measurement lx aus und wähle hinter WHERE entity_id:tag. Die Entity ID muss dann gleich der Id meines Helligkeitssensors im Arbeitszimmer sein. Eine Liste der verfügbaren Entities wird mir zur Auswahl angeboten.

In der SELECT Zeile möchte ich den field (value) haben und immer mit last() den aktuellen Wert.

In der GROUP BY Zeile setze ich time(1m) für ein minütliches Update und fill(linear).

In den Zeilen TIMEZONE, LIMIT und FORMAT AS ändere ich zunächst nichts.

Damit habe ich mein erstes Dashboard erfolgreich eingerichtet.

Der Helligkeitsverlauf im Arbeitszimmer wird visualisiert.
raspithek.de - Olli Graf
graph-illuminanceCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Der Helligkeitsverlauf im Arbeitszimmer wird visualisiert.

Oben rechts in der Ecke finde ich eine Schaltfläche zum Speichern des neuen Dashboards.

Fazit

Mit der Kombination Grafana und InfluxDB lassen sich die von Home Assistant erfassten Sensorwerte grafisch sehr gut aufbereiten. Die Einrichtung ist nicht sehr schwierig.

Schreibe einen Kommentar

Insert math as
Block
Inline
Additional settings
Formula color
Text color
#333333
Type math using LaTeX
Preview
\({}\)
Nothing to preview
Insert
Creative Commons License
Except where otherwise noted, the content on this site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
raspithek.de - Olli Graf
WordPress Cookie Hinweis von Real Cookie Banner