Da ich selber aus dem Datenbereich komme, bin ich ein Freund von Auswertungen und Visualisierungen.
Home Assistant bietet da zwar mit den Dashboards schon ein paar Möglichkeiten. Diese dienen aber eher zur Bedienung des Smarthomes als um die grafische Auswertung von Daten.
Aus diesem Grund möchte ich gerne mein aktuelles Setup um eine InfluxDB und ein Grafana erweitern. Den Anfang mache ich mit dem Speichern der Daten in der InfluxDB. Was ich genau dazu gemacht habe, will ich in diesem Artikel etwas genauer beleuchten.
InfluxDB Docker Setup
Da ich bereits Home Assistant und ZigBee2MQTT im Container laufen habe, liegt es nahe, dass ich auch die InfluxDB in einem Container laufen habe möchte.
Der naheliegende Gedanke ist jetzt, alles in eine große Docker Compose Datei zu basteln, damit alles an einem Platz ist. Ich persönlich mag Docker Compose, aber trenne einzelne Services ganz gerne, um etwas flexibler zu sein.
Das heißt ganz konkret, dass ich für Home Assistant, ZigBee2MQTT und nun auch für die InfluxDB eine eigene docker-compose.yml anlege.
Die docker-compose.yml für die InfluxDB sieht bei mir wie folgt aus:
version: '3'
services:
influxdb:
image: "influxdb:1.8.10"
restart: unless-stopped
volumes:
- "./data:/var/lib/influxdb"
healthcheck:
test: ["CMD", "curl", "-sI", "http://127.0.0.1:8086/ping"]
interval: 30s
timeout: 1s
retries: 24
ports:
- 127.0.0.1:8086:8086
Das ganze lässt sich dann mittels docker-compose Befehl starten. Zuvor muss im selben Ordner wo die docker-compose.yml angelegt ist auch noch der Ordner data angelegt werden. Dieser Ordner wird in den Container gemountet und dient zur Persistierung der Daten.
Ich starten das ganze dann mit dem folgenden Befehl:
docker-compose up
Konfiguration InfluxDB
Nachdem der InfluxDB Container gestartet wurde, muss man sich für die erste Konfiguration in den Container verbinden.
Dazu lassen wir uns mittels docker ps die Container ID anzeigen und verwenden diese, um uns mit exec zu verbinden.
##output docker ps
314b34ba6919 influxdb:1.8.10 "/entrypoint.sh infl…" 6 days ago Up 4 minutes (healthy) 127.0.0.1:8086->8086/tcp influxdb-1
##In den Container verbinden
docker exec -it 314b34ba6919 influx
Nach dem Verbinden wird als erstes eine Datenbank für die Home Assistant Daten angelegt und noch mal geprüft.
// anlegen der Datenbank
create database homeassistant
// Kontrolle
show databases
Nun noch einen User anlegen und diesem entsprechende Rechte auf die homeasssistant Datenbank geben.
//Anlegen des Benutzers
create user homeassistant with password 'supersecurepassword123'
// Kontrolle
show users
// Rechte auf die Datenbank geben
grant all on homeassistant to homeassistant
Damit ist die Home Assistant Datenbank in InfluxDB angelegt und alles für das Speichern der Daten vorbereitet. Als nächstes müssen wir nur noch Home Assistant für die InfluxDB konfigurieren.
Home Assistant Daten in InfluxDB speichern
Als nächstes wollen wir im Home Assistant die Konfiguration so anpassen, dass die Daten in der InfluxDB gespeichert werden. Dazu sind entsprechende Anpassungen in der configuration.yaml notwendig.
Der folgende Absatz muss in der Datei ergänzt werden:
influxdb:
host: influxdb-1
port: 8086
ssl: false
database: homeassistant
username: homeassistant
password: supersecurepassword123
max_retries: 3
measurement_attr: entity_id
include:
domains:
- sensor
Ich denke, die meisten Einträge sind recht eindeutig.
Im ersten Block werden die Verbindungsinformationen zum Docker Container eingetragen. Im zweiten Block dann die Zugangsdaten.
Der dritte Absatz ist der Interessanteste. Hier definieren wir, welche Daten in der InfluxDB gespeichert werden sollen. Dies kann beliebig komplex werden. Eine gute Übersicht dazu findet man direkt in der Home Assistant Dokumentation.
Nun muss der Home Assistant Container einmal neugestartet werden, damit die angepasste Konfiguration geladen werden kann.
Fazit
Wenn keine Fehler aufgetreten sind, haben wir nun ein Home Assistant Setup, welches die Daten in einer InfluxDB speichert. Falls Fehler aufgetretensind, gerne in die Kommentare damit.
Ich persönlich werde das ganze nun ein paar Wochen laufen lassen, damit ein paar Daten gesammelt und in der InfluxDB gespeichert werden.
Danach geht es weiter mit der Installation von Grafana und dem ersten Anlegen von Dashboards. Dazu wird es dann hier auch weitere Artikel geben.
Sehr cool. Ich überläge auch , ob meine Daten in einer influx db auslagern soll. Wie sind denn deine Erfahrungen bisher damit?
Also es hat 2-3 Anläufe gebraucht bei mir, bis alles richtig war. Aber bisher bin ich ganz zufrieden.
Bin gerade dabei die ersten Grafana Dashboards auf den Daten zu bauen.
InfluxDB war da eher mittel zu Zweck =)
Hallo,
gibt es die Möglichkeit Daten in verschieden Datenbanken unter Influxdb zu schreiben? Z.B. möchte ich Temperaturen von meinen rtl_433-Sensoren in eine DB „haus_temp“ schreiben und meine Daten von der Solaranlage in die DB „solar“ schreiben. Das bekomme ich nicht gebacken. Alle Daten in z.B. „haus_temp“ zu schreiben funktioniert. Natürlich könnte ich daraus die Abfragen machen. Ich hätte aber gern die Daten vorher schon selektiv gespeichert.
Danke.
Hi,
Soweit ich weis, ist das zur Zeit nicht supported. Du müsstest es also entweder in eine DB laufen lassen und dann von dort selektieren oder die da ein paar eigene scripte schreiben, die die Daten von einer default DB in die zwei spezifischen aufteilt.
Gruß
Christian
Hi,
gibt es eine Möglichkeit Werte „händisch“ in eine (home-assistant)-influxDB zu schreiben? Ich habe eine ESP32-Cam, die meinen Elektro-Zählerstand fotografiert und per AI aus dem Foto einen Wert generiert. Diesen Energieverbrauch schicke ich an HomeAssistant und der schreibt diese Werte in eine influxDB. Jetzt ist mir das Netzwerk zusammengebrochen und ich möchte die „fehlenden“ Werte in der influxDB nachtragen. Gibt es dazu ein How2? Am liebsten so in der Art: Import von *.csv 😉
War schon länger am googlen, aber in Allem – was ich gefunden habe – geht es immer um Daten auslesen oder Home-Assistant so konfigurieren, dass der reinschreibt ;-(
Viele Grüße
Am besten hier starten https://docs.influxdata.com/influxdb/cloud/write-data/developer-tools/csv/ das geht direkt auf der CLI.
Mit der Option dryrun sieht man das Ergebnis ohne das es sofort in die DB geschrieben wird.
Alternativ mittels telegraf -> https://docs.influxdata.com/telegraf/v1.19/data_formats/input/csv/
Das kann quasi als Reserve konfiguriert bleiben falls due mal wieder csv Daten nachträglich reinschreiben willst.
Hallo Mario,
vielen Dank für’s Lesen meiner Anfrage, nur kann ich unter Home Assistant (im Terminal) leider kein „influx“ aufrufen ;-(
Ein [find / -iname „*influx*“] liefert ein einziges Ergebnis: [usr/share/bash-completion/completions/influx] mit Leserecht für Alle aber nix Ausführbares ;-( Diese gefundene Datei ist nur ein shell-script (das auch nicht weiterhilft).
Ich hab das HomeAssistant-OS auf einem AMD-ThinClient (Fujitsu Futro S920) mit einer 8GB SSD laufen. Und da ist der Platz recht eng, d.h. kein Telegraf, Grafana, etc. installiert. Möglichst nackig – nur mit den HomeAssistant-eigenen Möglichkeiten (+ influxDB, MQTT, Editor, Terminal, HACS, … was halt unbedingt nötig ist).
Hab ich wahrschienlich in meiner Anfrage zu wenig herausgehoben: keine VM mit docker, etc. sondern eigenständiges HAOS ;-(
Vielen Dank und VG
Stefan
Hallo Mario,
vielen Dank für’s Lesen meiner Anfrage, nur kann ich unter Home Assistant (im Terminal) leider kein „influx“ aufrufen ;-(
Ein [find / -iname „*influx*“] liefert ein einziges Ergebnis: [usr/share/bash-completion/completions/influx] mit Leserecht für Alle aber nix Ausführbares ;-( Diese gefundene Datei ist nur ein shell-script (das auch nicht weiterhilft).
Ich hab das HomeAssistant-OS auf einem AMD-ThinClient (Fujitsu Futro S920) mit einer 8GB SSD laufen. Und da ist der Platz recht eng, d.h. kein Telegraf, Grafana, etc. installiert. Möglichst nackig – nur mit den HomeAssistant-eigenen Möglichkeiten (+ influxDB, MQTT, Editor, Terminal, HACS, … was halt unbedingt nötig ist).
Hab ich wahrschienlich in meiner Anfrage zu wenig herausgehoben: keine VM mit docker, etc. sondern eigenständiges HAOS ;-(
Vielen Dank und VG
Stefan
Hallo, eine Nachfrage, warum haben sie keine InfluxDB 2.0 genutzt?
Würde gerne die Gründe verstehen, sie haben Ihr System ja erst 2023 aufgesetzt und sich bestimmt etwas dabei gedacht ;-).
VLG der Dirk
Moin,
Wenn ich mich richtig erinnere, war es zu dieser Zeit das aktuellste Docker Image was vom Hersteller veröffentlicht war =)
https://hub.docker.com/_/influxdb/tags
Gruß
Christian
Hi. Danke. Ich hab jetzt eine Weile gesucht um Grafana zum laufen zu bekommen. HA hat ja die komische Entscheidung da sman entweder HA OS nutzt um an die Add-Ons zu kommen oder eben die Supervised. In der Docker-HA gibts keine Addons.
Frage:
Die Datenübergabe an Influx ist eine „oder“ Entscheidung? Sprich, die HA-Interne sqlite wird nicht parallel gefüttert?
Ich will eigentlich nur ein paar bestimmte Daten per Grafana aufarbeiten lassen und nicht alles in die Influx geben. Zudem hab ich schon einige Monate an Daten in der sqlite.
Thx
Hi,
Also soweit ich weis ist kann man immer nur in eine DB schreiben. Wenn du dich ein bissel mit Coding auskennst, würde ich es bei der SQLlite lassen und einfach einen Sync zwischen sqllite und influx machen. Hier mal ein Beispiel von Github: https://github.com/plieningerweb/sqlite_influx_sync
Gruß
Christian
Danke für den Denkanstoß.