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
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.

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.

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

Ich lande dann auf dem Default Screen von Grafana.

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

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

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

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

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

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.

Da ich die Helligkeit anzeigen möchte, wähle ich in der FROM
Zeile bei select measuremen
t 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.

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.