Home Assistant, InfluxDB & Grafana für N00bs

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) }}'

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

11 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!

Jetzt funktioniert es komischer weise, hatte noch einmal deinstalliert und dann wieder installiert und neu gestartet.

Trotzdem danke für die angebotene Hilfe.

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.