Home Assistant, InfluxDB & Grafana für N00bs

Wer sich etwas mit Smart Home und den verschiedenen Plattformen wie Home Assistant oder openHAB beschäftigt hat, ist sicherlich schon mal über das Thema Datenlogging mit InfluxDB und visualisierung mit Grafana gestolpert. Der sogenannte TIG-Stack (Telegraf, InfluxDB, Grafana Stack) ist ein beliebtes Tool in der Heimautomation.

Wir können hierbei auf Telegraf verzichten, da die Integration in HomeAssistant diesen Teil übernimmt. Das ganze habe ich auch schonmal unter openHAB aufgebaut, dieser Artikel wird aber weniger lang, deutlich einfacher und ihr müsst nicht mal großartig das HomeAssistant Fenster verlassen (außer um hier nachzulesen versteht sich :D).

Wie bitte?

Die Influx DB ist eine sogenannte Time Series Database, das bedeutet, das jeder Datensatz mit einem Zeitstempel gespeichert wird. SO lassen sich beispielsweise Sensorwerte wie Temperatur oder Luftfeuchtigkeit, die ggf. für euer Smart Home interessant sind loggen. Aber erst durch eine intuitiv erfassbare Visualisierung, z.B. durch aussagekräfte Grafen, wird das Sinnvoll. So lassen sich z.B. wiederkehrende Muster im Tagesverlauf, z.B. beim Energieverbrauch feststellen und optimieren. Schöne Graphen sind aber auch einfach schön anzusehen.

Aber das wissen die meisten vermutlich schon, die auf dieser Seite landen. Also frisch ans Werk:

InfluxDB

Zunächst müssen wir die InfluxDB installieren. Das kann man durchaus auch außerhalb von HomeAssistant machen, aber dann muss man die Integration selbst hinbekommen. Und ich habe zumindest wenig Plan davon. Also gehen wir über die Einstellungen (im Menü unten Links) zum Add-on Store und scrollen ein wenig nach unten. Hier finden wir eine Kachel für InfluxDB (und für Grafana, aber dazu später mehr).

Diese müssen wir natürlich anklicken um ins Installationsmenü zu kommen. Der Button ist nicht unbedingt auffällig, daher nochmal als Text: Klickt auf den blauen Text „Installieren“.

Das braucht ein paar Minuten, also gönnt euch doch einen Kaffee. Wenn die Installation abgeschlossen ist, können wir mit den Togglebuttons noch ein paar Einstellungen vornehmen. Ich aktivere eigentlich immer alle. Dann können wir auf den blauen Text „Starten“ klicken, um das Add-On zu starten.

Grafana

Wenn das erledigt ist, machen wir das gleiche für Grafana. Ihr könnt einfach über den Zurück-Button des Browsers in den Add-on Store zurückkehren. Die Grafana-Kachel ist diagonal nach oben von der InfluxDB. Alternativ nutzt einfach das Suchfenster.

Auch hier können wir die Installation durch den Klick anstoßen, nach der Installation die Toggle-Buttons aktivieren und im Anschluss den Prozess starten.

Wenn ihr je „In der Seitenanzeige anzeigen“ aktiviert habt, erscheinen die entsprechenden Verknüpfungen zu InfluxDB und Grafana links im Menü. Sehr praktisch.

Influx DB einrichten

Wir klicken direkt mal auf den Button für InfluxDB und sehen ein sehr schön gestaltetes Dashboard. Chapeau an die Entwickler & Designer!

Im linken Bereich gibt es ein Untermenü für die verschiedenen InfluxDB funktionen.

Wir gehen auf die Krone und der Text InfluxDB Admin faded ein. Dann klicken wir um eben in diesen Bereich zu gelangen.

Hier müssen wir eine neue Database anlegen. Dazu gibt es im rechten Bereich die entsprechende Schaltfläche.

Ich nenne Sie bei mir homeAssistant, wenn ihr hier einen anderen Namen wählt, müsst ihr später im Artikel entsprechend anpassen. Den Rest belasse ich auf den Standard werten. Wenn die Datenbank erstellt ist, sollte es bei euch wie folgt aussehen:

Nun wechseln wir links bei den Reitern zum Bereich „Users“ und legen einen Benutzer mit Passwort an. Diesen nenne ich auch homeAssistant, aber das PW verrate ich euch nicht.

Erst wenn der Nutzer angelegt ist, können wir diesem die nötigen Rechte zuweisen. Und zwar Alle, denn viel Auswahl haben wir leider nicht. Passt schon…

Damit sind wir vorerst fertig mit der InfluxDB. Erinnert ihr euch wie aufwändig das im openHAB war?

Sensoren

Damit wir auch was loggen können, müssen wir natürlich Sensoren haben. Da ich mein System frisch aufsetze, habe ich noch keine. Aber ich habe den RaspberryPi auf dem der HomeAssistant läuft. Und die Temperautren der Platine sind ggf. auch interessant. Also können wir mit einem Codeblock in der configuration.yaml entsprechende Sensoren anlegen, die mit einem Befehl für die Kommandozeile (keine Angst, das läuft alles im Hintergrund unsichtbar ab) den jeweiligen Wert abfragt.

#--- Internal Raspi ---
  - platform: command_line
    unique_id: raspiCPUtemp
    name: CPUtemp
    command: "cat /sys/class/thermal/thermal_zone0/temp"
    unit_of_measurement: "°C"
    value_template: "{{ value | multiply(0.001) | round(1) }}"
    
  - platform: command_line
    unique_id: raspiGPUtemp
    name: GPUtemp
    command: "/opt/vc/bin/vcgencmd measure_temp"
    unit_of_measurement: "°C"
    value_template: '{{ value | regex_findall_index("=([0-9]*\.[0-9]*)", 0) }}'
    
  - platform: command_line
    unique_id: raspiCPUclock
    name: CPUclock
    command: "/opt/vc/bin/vcgencmd measure_clock arm"
    unit_of_measurement: "MHz"
    value_template: '{{ value | regex_findall_index("=([0-9]*)", 0) | multiply(0.000001) | round(0) }}'

Achtung: Ab HomeAssistant Version 2023.8 hat sich die Struktur für die Plattform command_line geändert und lautet wie folgt:

command_line:
  - sensor:
      name: CPUtemp
      unique_id: raspiCPUtemp
      command: "cat /sys/class/thermal/thermal_zone0/temp"
      unit_of_measurement: "°C"
      value_template: "{{ value | multiply(0.001) | round(1) }}"
  - sensor:    
      name: GPUtemp
      unique_id: raspiGPUtemp
      command: "/opt/vc/bin/vcgencmd measure_temp"
      unit_of_measurement: "°C"
      value_template: '{{ value | regex_findall_index("=([0-9]*\.[0-9]*)", 0) }}'
  - sensor:
      name: CPUclock
      unique_id: raspiCPUclock
      command: "/opt/vc/bin/vcgencmd measure_clock arm"
      unit_of_measurement: "MHz"
      value_template: '{{ value | regex_findall_index("=([0-9]*)", 0) | multiply(0.000001) | round(0) }}'

Diese Codeschnipsel habe ich aus einem tollen Tutorial zum Thema MQTT und HomeAssistant. Der File-Editor ist ein Add-On aus dem Add-On Store (sollte aber bereits vorhanden sein). Wenn das erledigt ist, können wir wieder zu den Einstellungen wechseln und prüfen, ob die configuration.yaml in Ordnung ist.

Wenn das der Fall ist, starten wir den Server neu, damit die Änderungen wirksam werden.

Dashboard

Diese neuen virtuellen Sensoren können wir auch zum Dashboard hinzufügen. Dazu gibt es auf der Übersicht-Seite im oberen rechten Rand die drei Punkte, welche das Erweiterte Menü freigeben. Hier können wir auf die Kachel „Benutzeroberfläche Konfigurieren“ klicken.

Als nächsten wählen wir den Button unten rechts, um eine neue Karte hinzuzufügen, wechseln im neuen Fenster auf den Reiter „Nach Entität“ und suchen uns die drei neuen Sensoren zusammen. Diese versehen wir mit einem Auswahlhaken und klicken dann auf weiter. Nun wird euch eine Karte vorgeschlagen.

Man kann natürlich auch andere Karten hernehmen. Ich habe z.B. danach die Karte Raster genommen, um alles was den RaspberryPi betrifft zu gruppieren. Die Karte Sensor zeigt sogar einen Graphen. Spielt hier einfach rum und schaut was euch gefällt.

Wenn euch euer Dashboar gefällt, vergesst nicht oben mit Fertig zu speichern.

Telegraf bzw. nicht Telegraf

Nun kommt der Teil, den außerhalb HomeAssistant der Dienst Telegraf übernehmen würde. Wir müssen HomeAssistant sagen, dass er gewisse Sensorwerte in die Datenbank speichern soll. Dazu müssen wir mal wieder in den FileEditor (Falls ihr den noch nicht habt, installiert das Add-on aus dem Add-on Store).

Wir öffnen über das Ordner Icon oben Links die configuration.yaml, falls sie nicht noch vom letzten mal geöffnet ist. In diese Datei ergänzen wir den folgenden Code-Schnipsel:

#--- InfluxDB ---
influxdb:
    host: localhost
    port: 8086
    database: homeAssistant
    username: homeAssistant
    password: yourPassword
    max_retries: 3
    default_measurement: state
    include:
       domains:
        - sensor

Der Teil mit Domains: Sensors lässt alle Entitäten in der Domain Sensor mitschreiben, also tatsächlich alle eure Sensoren. Das sind auch alle Unsichtbaren und automatisch angelegten. Ich find das nicht schlecht, denn die InfluxDB braucht wirklich nicht viel speicherplatz. Falls ihr aber nur ein paar ausgewählte Metrics loggen wollt, könnt ihr stattdessen den Include -Teil zu Entities umschreiben und dann mit der nomenklatur domain.id einzelne Entitäten loggen. Also z.B: die CPU Temperatur des RaspberryPi mit:

 include:
     entities:
        - sensor.CPUtemp

Bevor es weitergeht, müssen wir die configuration.yaml wieder abspeichern und in den Einstellungen – Einstellungen prüfen ob alles okay ist. Dann können wir den Server neu starten und wenn wieder alles da ist, zurück in die InfluxDB wechseln.

Influx DB again

Diesesmal interessiert uns der Reiter „Explore“. Wir können entweder einen SQL Befehl ausführen um Daten abzufragen, oder gucken direkt darunter könnt ihr euch in die DB reinklicken und schauen ob was geloggt wird.

Wenn das soweit läuft, geht es weiter mit Grafana. Wenn nicht, checkt ob ihr typos in der configuration.yaml habt, die nicht zur korruption der File führen, aber zum nicht loggen.

Grafana again

Im Grafana müssen wir eine Datenquelle hinzufügen. Dazu gehen wir im Submenü, am linken Rand auf das Zahnrad und dort in den Reiter Data sources. Nun erscheint ein großer blauer Button „Add data source“. Dreimal dürft ihr raten, was als nächste kommt.

Auf der nächsten Seite können wir zwischen vielen verschiedenen Datenquellen wählen. Hier nehmen wir aber natürlich InfluxDB, da wir diese ja so schön aufgesetzt haben im Vorfeld.

Das führt uns zur EInstellungsseite für die Datenquelle. Ihr müsst die IP eures RaspberryPi im Netzwerk eintragen. 127.0.0.1 und homeassistant.local funktionieren bei mir nicht.

Weiter unten kommen noch die Zugangsdaten (hier hatten wir DB: homeAssistant, User: homeAssitant und euer Kennwort). Als Typ für den HTTP Request nehme ich GET.

Vergesst nicht zu speichern! Der nächste Schritt ist dann ein Dashboard anzulegen. Der dritte Button im Submenü bringt uns zu den Dashboards. Dort können wir ein neues Anlegen.

Oben gibt es ein paar Buttons, der ganz linke öffnet die Optionen zum hinzufügen von Panels und Rows. Rows, also Reihen, dienen dazu, etwas Ordnung zu schaffen. Wir können also eine Reihe anlegen, die wir dann z.B. HomeAssistant oder RaspberryPi nennen.

Wenn wir auf Add Panel klicken, kommen wir in die Konfigurationsseite für einen Graphen. Wenn man das erstemal Grafana benutzt, wird man schier erschlagen von den vielen Settings und Möglichkeiten. Wir wählen unter „From“ den jeweiligen Sensor aus und können dann unter „Group by“ denn Wert „fill“ auf linar setzen, um linien zwischen den Punkten zu interpolieren. Das sieht etwas übersichtlicher aus. Im rechten Bereich können wir noch einen TItelvergeben und erstmal speichern.

Vergesst nicht am Ende das gesamte Dashboard auch abzuspeichern, sonst gehen eure Änderungen verloren.

Ich empfehle hier einfach mal mit Grafana zu spielen. Man kann noch andere Darstellungstypen wählen (z.B. sind Gauges ziemlich cool). Außerdem kann man auch mehrere Werte übereinanderlegen, um diese einfacher miteinander zu vergleichen. Oder ihr könnt auch Grenzwerte definieren und dann die Werte einfärben.

Das wars erstmal, so bekommt ihr den TIG-Stack unter HomeAssistant auf eurem RaspberryPi zum laufen. Viel Spaß beim Basteln!

$ Die mit einem $ gekennzeichneten Links, sind Affiliate Links. Wenn du über diese in den Shop gelangst und etwas kaufst, bekomme ich eine kleine Provision

32 Kommentare

Viele Dank für den verständlichen Beitrag.
Bin bei Item 24 stehen geblieben “ no measurements selected“ und weiss nicht weiter.RPI3,HA +Influxdb

Hallo. Danke für deinen Beitrag, hat mir sehr geholfen.
Bei Youtube ist mir das oft zu schnell und dann Stop – Start -Stop -…
Knackig erklärt, bebildert, top.
In Grafana habe ich auch schon zwei Diagramme und dazu eine Frage.
Wie kann ich Grafana Dashboards in Home Assistant Dashbords intergieren? Geht das?
Danke und weiter so.

Hi ,
erstmal Danke für Deine Anleitung. Bis zu dem Teil, in dem man kontrolliert, ob in der influxdb etwas steht, sieht alles gut aus.
Ich habe auch alle Sensoren importieren lassen, nur leider passiert garnichts in der DB. Ich habe schon die Sonderzeichen aus dem Namen und dem Passwort genommen, aber keine Chance.
Leider kann ich mit dem Satz hier nicht viel Anfangen:
Wenn nicht, checkt ob ihr typos in der configuration.yaml habt, die nicht zur korruption der File führen, aber zum nicht loggen.
Fragen dazu: Was ist Typos ? …korruption der File führen ?

Kannst Du mir da eventuell helfen ? Wenn Du nen Screenshot brauchst bin ich bereit !

Danke und Gruß
Stephan

Guten Morgen 🙂
ALso Typos sind im internetslang Tippfehler 🙂
Also z.B. Groß/Kleinschreibung, Zahlendreher, Vertauschte Buchstaben. Das fällt manchmal nicht so auf. Auch muss man bei der configuration.yaml sehr stark auf die indents achten, also auf die Formatierung der Blöcke. Wenn die Falsch ist, wird aber meist direkt der HA-Integrierte Scan anschlagen. Bei Tippfehlern halt nicht unbedingt.
Bei mir musste ich etwas warten und habe glaube ich den Server zwischendrin Neu gestartet, bis ich die Metrics in der Influx DB gesehen hatte.

Ich hoffe ich konnte weiterhelfen!

Hi und danke für die Anleitung. Ich habe nur eine Frage. Welche Version hat die InfluxDB. Ich kann ja im Node InfluxDB out eine Version auswählen. Bei Github habe ich den Hinweis gefunden es wäre Version 1.7 ergo habe ich 1.0 ausgewählt.

https://github.com/hassio-addons/addon-influxdb/blob/main/influxdb/DOCS.md
option:envaars

Dann kann ich aber nur eine Datenbank in InfluxDB ansprechen. Ist das so richtig? In einer vorigen Antwort sagst du mit NodeRed ginge das. Ich kann aber Flowübergreifend keine zwei Datenbanken eingeben. Immer wenn ich die Zweite eingebe wird die erste im Node Flowübergreifend überschrieben. Ich kann in einer Datenbank mehrere Unterrubriken für verschiedene Sensoren kreieren aber keine zwei Datenbanken beschreiben. Gibt es eine andere Möglichkeit herauzufinden ob ich 1.8 oder 2.0 eingeben kann? Denn die können auch zwei Datenbanken ansprechen.

Hi Matthias,

das mit der NodeRED integration hab ich selbst nicht getestet, daher musst du mit den verlinkten Tutorials arbeiten.
Deine InfluxDB Version kannst du im Terminal mit curl -sL -I 192.168.XXX.XX:8086/ping abrufen. (Bitte IP Anpassen, localhost als IP scheint zumindest bei mir nicht zu funktionieren)
Influx version 2 kannst du prinzipiell händisch wie folgt installieren: https://der-smarthomer.de/influxdb-auf-version-2-aktualisieren/ – allerdings musst du dann das HA Plugin anpassen und da bin ich auch überfragt. Es gibt ein paar tutorials für Docker, damit kenne ich mich aber auch nicht aus. Sorry!

Danke für dein Tutorial!
Eine Frage zu Grafana Einstellungen:
Wie kann man die Einstellunen von Grafana ändern?
Ich meine jetzt =>Grafana=>Server Admin => Settings
Dort steht folgendes:
These system settings are defined in grafana.ini or custom.ini
Wo findet man custom.ini auf Raspberry??

Hallo,
erstmal Danke für deine super Anleitung! Bin Neueinsteiger und hab das probiert, allerdings wird bei mir die CPU Temperatur nicht angezeigt – dieses „Geräte“ bzw. Entität findet er nicht!
DANKE!

Moin Walter,
aber die anderen beiden werte funktionieren? Ich gehe mal von einem Tippfehler irgendwo aus, vll auch einfach den Einzug links anpassen? Da ist das yaml zimperlich.
Beste Grüße!

Danke erst mal.
Super Erklärung.
Ich bekomme leider bei Grafana beim anlegen der Data Source den Fehler „error connecting influxDB influxQL „. Was könnte das sein?
User und PW von der Data source bzw. influxDB hab ich eingetragen sowie den Database name. Und oben die http Url „http://a*******-influxdb:8086

Bei mir hat alles gut geklappt. Ich möchte nun für Grafana noch Änderungen vornehmen und zwar in der grafana.ini Wie kann ich dies machen? Wo muss ich dies machen? Habt ihr einen Tipp?

Hallo,
danke für die ausführliche Beschreibung.
Gibt es die Möglichkeit Daten in verschiedene 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.

Servus,

also ja das geht prinzipiell. Dazu brauchst du aber offenbar NodeRED, da HA wegen doppelter Belegung meckern würde. Was anderes hab ich noch nicht gefunden.
Es gibt ein Feature Reqeust von 2021, um mehrere Retention Policies zu erreichen. Ggf. gibt es also schon einen besseren Ansatz.

https://community.home-assistant.io/t/storing-data-into-more-influxdb-databases/271949/6
https://flows.nodered.org/node/node-red-contrib-influxdb

Hi, danke für Deinen Post, das hat mir den Einstieg erleichtert. Allerdings haben bei mir mit influxDB 1.8.10 nur folgende settings im Configuration.yaml funktioniert :
influxdb:
host: 192.168.x.x
port: 8086
ssl: true
verify_ssl: true
database: home_assistant
username:
password:
max_retries: 3
default_measurement: state
measurement_attr: entity_id
exclude:
domains:
– automation
– weblink
– updater
entities:
– sun.sun
– sensor.moon
– sensor.date_time
– sensor.daylight
include:
domains:
– sensor
– switch
– binary_sensor

Moin,
von mir auch erstmal vielen Dank für Deine super Anleitung.
Es hat soweit alles funktioniert, allerdings wird mir in Grafana nach dem Einfügen eines neuen Panels „No data“ angezeigt. Hast Du vielleicht eine Idee, woran das liegen kann?

Lieben Grußß
Felix

Moin Felix,

Fehlersuche:
du könntest mal nen zweiten Datastream (also ein zweites Influx-Querry) drüber legen und schauen ob das angezeigt wird. Auch das Zeitfenster vergrößern kann eine Option sein. Ggf. Sensorbatterie leer, oder bei mir z.B. Tracke ich 3D-Drucker Temperaturen und wenn der lang aus war, steht da auch No Data. Vll liegen ja tatsächlich keine Daten vor?
Schau auch mal in der Querry ob du bei „where“ den richtigen Filter hast. -> Bei mir ist das entity id

LG

Oh man, du bist der Beste. Vielen Dank für deine schnelle Antwort.
Ich hatte vergessen bei „select measurement“ etwas anzugeben. Ohne deinen Hinweis hätte ich das wahrscheinlich weiterhin übersehen.

Hi Daniel,
schönes Tutorial! Viel leichter nachzuvollziehen als wirld klickende Labertaschen auf Youtube!
Ich bin mit Home Assistants nativen Möglichkeiten für Graphen und historische Daten recht unzufrieden Apexcharts scheint sehr unflexibel und buggy. Da gefallen mir die Möglichkeiten von Grafana viel besser.
Du nutzt die besseren Möglichkeiten nur noch nihct so recht, oder? Die Temperatur vom Raspi kannst Du ja auch schon mit Home Assistant Bordmittel plotten.

Hi Michael,

ja klar, ich mach schon noch mehr damit 🙂 Aber der Beitrag war ja auch schon recht lang.
Ich nutze Grafana aber tatsächlich nur ab und zu mal, wenn mir etwas komisch vorkommt und ich mal den Grafen checken will.

Sehr geil, absolut was ich gerade brauchte. Bin im Bereich Linux etc. nicht unvertraut, habe auf diesem Weg hatte ich das innerhalb von 30 min am laufen. Der Anfang ist das Schwerste, den Rest bekomme ich dann hin. Danke, super Seite, gut gemacht. Weiter so!

Schreibe einen Kommentar

Geb mir einen aus :)

Wenn du das Zeug hier magst, denk doch über eine Spende nach um Server und Domain zu finanzieren.

$ Die mit einem $ gekennzeichneten Links, sind Affiliate Links. Wenn du über diese in den Shop gelangst und etwas kaufst, bekomme ich eine kleine Provision.

Suche & Filter