openHAB #6: Logging mit InfluxDB und Grafana

InfluxDB und Grafana

Datenbank anlegen und mit Grafana verbinden


Zunächst müssen wir in InfluxDB eine Datenbank zur Erfassung der Daten aus openHAB anlegen. Diese muss dann anschließend in Grafana als Datenquelle konfiguriert werden.

Datenbank in InfluxDB anlegen

Wir gehen davon aus, das wir InfluxDB bereits installiert haben und es bereits auf unserem Server läuft. Zunächst loggen wir uns über die Konsole in das von der InfluxDB bereitgestellte Terminal mittels influx ein.

Code
  1. ~$ influx
  2. Connected to http://localhost:8086 version 1.2.4
  3. InfluxDB shell version: 1.2.4
  4. > CREATE DATABASE openhab_db
  5. > CREATE USER admin WITH PASSWORD '<Passwort für Admin>' WITH ALL PRIVILEGES
  6. > CREATE USER openhab WITH PASSWORD '<Passwort für openhab>'
  7. > GRANT ALL ON openhab_db TO openhab
  8. > exit

Wir legen hier eine Datenbank mit dem Namen openhab_db an und erstellen 2 Nutzer mit jeweiligem Passwort (bitte notieren). Anschließend geben wir dem Nutzer openhab alle Rechte auf die Datenbank openhab_db zuzugreifen.

Konfiguration von InfluxDB anpassen

In der InfluxDB Kofigurationsdatei unter /etc/influxdb/influxdb.conf müssen wir die HTTP-Authentifizierung aktivieren

Code
  1. [http]
  2. enabled = true
  3. bind-address = ":8086" # change to a specific interface if needed
  4. auth-enabled = true # will enforce authentication
  5. ...

Anschließend starten wir den InfluxDB-Service neu. Mit dem Befehl sudo systemctl restart influxdb.service.

Um auf die Konsole zuzugreifen, müssen wir nun unsere im vorherigen Schritt definierten Zugangsdaten verwenden.
influx -username admin -password <Password Admin> -host localhost

Solltet Ihr Probleme bei diesen Schritten haben, könnt Ihr auch die offizielle InfluxDB Dokumentation zu Rate ziehen.

Konfiguration von Grafana anpassen

Zunächst deaktivieren wir die Benutzerregistration und aktivieren den anonymen Zugriff auf unsere Grafana-Instanz, damit wir später die Diagramme und Graphen exportieren können, ohne uns jedesmal einloggen zu müssen.

Dazu passen wir unsere Grafana-Konfiguration unter /etc/grafana/grafana.ini wie folgt an:

Wichtig ist hier, dass wir später in Grafana eine Organisation mit dem Namen openhab erstellen, da sonst anonyme User keinen Zugriff auf die Dashboards haben.
Weitere Informationen zur Konfigurationsdatei von Grafana erhaltet Ihr außerdem in der Grafana Dokumentation.

Grafana mit InfluxDB verbinden

Wir loggen uns auf unserem Grafana-Server (http://<IP-des-Servers>:3000/) mit den Zugangsdaten admin:admin ein.
Im Menü, das wird durch klick auf das Grafana-Logo erreichen, öffnen wir den Menüpunkt "Datasource"

Grafana Datasource

Über den Button "+ Add data source" öffnet sich der folgende Bildschirm, in den wir die Daten unserer InfluxDB eingeben. Wichtig ist das bei Type die "InfluxDB" ausgewählt ist und das Häkchen bei Basic Auth gesetzt wird.



Sollte beim Klick auf Add keine Fehlermeldung ausgegeben werden, sondern folgende Anzeige erscheinen, ist Grafana erfolgreich mit InfluxDB verbunden.



openHAB mit InfluxDB verbinden und Logging aktivieren


Als Nächstes müssen wir openHAB mitteilen, wie es mit InfluxDB kommunizieren kann und was für Werte überhaupt geloggt werden sollen.

InfluxDB als openHAB Persistance Service einrichten

openHAB nutzt sogenannte Persistance Services zum Speichern von Messreihen. Zunächst müssen wir eine Konfigurationsdatei in openHAB anlegen, damit openHAB mit unserer InfluxDB verbinden kann.

Hierzu legen wir im Ordner /etc/openhab2/services/ eine Datei mit dem Namen InfluxDB.cfg an und öffnen diese mit einem Text-Editor

Anschließend speichern wir diese und aktivieren in der PaperUI-Oberfläche unter Configuration -> System die influxdb im Bereich Persistance

openHAB Logging aktivieren

Nun müssen wir openHAB mitteilen, welche Werte überhaupt geloggt werden sollen und in welchem Intervall. Dazu erstellen wir eine Datei im Ordner /etc/openhab2/persistence/ mit dem Namen influxdb_log.persist und fügen folgenden Inhalt ein:

Code
  1. Items {
  2. * : strategy = everyChange
  3. }

Diese Strategie loggt nun alle Messwerte die openHAB erfasst jedesmal, wenn sich ein Wert ändert. Je nach Anzahl der openHAB-Items kommen hier große Mengen an Daten zusammen.

Es besteht die Möglichkeit die geloggten Items weiter zu spezifizieren - im folgenden Beispiel loggen wir Temperaturwerte bei Änderung und stündlich, Feuchtigkeitswerte nur bei Änderung:

Code
  1. Strategies {
  2. everyMinute : "0 * * * * ?"
  3. everyHour : "0 0 * * * ?"
  4. everyDay : "0 0 0 * * ?"
  5. }
  6. Items {
  7. *_Temperature : strategy = everyChange, everyHour
  8. *_Humidity : strategy = everyChange
  9. }

Auch unterschiedliche Strategien lassen sich kombinieren. Hier muss man entscheiden, für welche Sensorart sich welche Strategie eignet - anschließend starten wir unseren openHAB-Service neu.
 

Diagramme in Grafana erstellen

Nach einer Weile sollten die ersten Messwerte in die InfluxDB geschrieben werden und dann in Grafana verfügbar sein.
Wir öffnen Grafana wieder über die Adresse http://<IP-des-Servers>:3000 und loggen uns ein (admin:admin). Anschließend erstellen wie ein neues Dashboard und fügen dort eine neuen Graph ein.

Grafana New Dashboard

Anschließend fahren wir mit der Maus über den Titel der neu erstellten Reihe und klicken auf Edit um in den Editiermodus zu gelangen. Hier werden anschließend alle einstellbaren Parameter zur Konfiguration des Graphen angezeigt.



Im Editiermodus für den Graphen bearbeiten wir nun die folgenden Parameter:

  1. Auswahl der Tabelle - Hier wählen wir "autogen" aus
  2. Messreihe auswählen - Je nach Komponenten, die Ihr an openHAB angeschlossen habt, erscheinen hier andere Bezeichnungen. Im Beispiel ist es ein HomeMatic Thermostat der die aktuelle Temperatur misst.
  3. Fill definiert die Füllung zwischen den Messpunkten - hier fill (none) auswählen.
  4. Im Alias by - Feld kann angegeben werden, wie das Diagramm heißen soll

Wenn alles geklappt hat, sollte nun ein Diagramm mit den Messwerten im Diagrammbereich erscheinen.

Über den Button "Add Query" können mehrere Messreihen in einem Diagramm dargestellt werden - Vorgehensweise analog zum vorherigen Punkt

Weitere Einstellmöglichkeiten

Im Reiter Axes können weitere Einstellungen für die Achsdarstellung vorgenommen werden. So kann man hier Titel und Einheiten oder den angezeigten Bereich der Y-Achse definieren.

Der Reiter Legend ermöglich die textuale Darstellung von Min/Max oder Avg-Werten.

Unter dem Display Reiter kann die Stiftdicke sowie Füllung eingestellt werden. Außerdem kann man hier auch Messpunkte oder Stufendiagramme aktivieren.

Durch Klick auf den kleinen Balken eines Diagrammwertes kann die Farbe geändert werden, sowie die Achse von links nach rechts umgeschaltet werden.



Anschließend auf Speichern klicken nicht vergessen!

Grafana Diagramme in HABPanel einbinden

Über die Share-Funktion von Grafana können sämtliche Diagramme in andere HTML-Seiten sowie auch in HABPanel eingebunden werden. Hier hat man die Möglichkeit ein interaktives Diagramm einzufügen oder einfach einen statischen "Screenshot" der aktuellen Messwerte

Interaktives Diagramm

Wir öffnen HABPanel und gehen in den Editiermodus des gewünschten Panels (Wie das geht ist die diesem Beitrag beschrieben). Nun fügen wir über den Add Widget Button ein Widget vom Typ Frame ein.



Dieses Widget positionieren wir wo später unser Diagramm erscheinen soll. In Grafana wählen wir nun das gewünschte Diagramm aus und klicken auf den Titel, um das Menü zu öffnen. Hier wählen wir Share aus.

Im folgenden Share Panel wählen wir oben Embed aus und deaktivieren den Haken bei Current time range - Damit wird immer der aktuelle Zeitraum angezeigt.
Wir kopieren nun die URL im Fenster darunter - hier aber nur den Bereich innerhalb der "-Zeichen (also z.B. https://<mein-server>:3003/dashboard-solo/db/<dashboard-name>?orgId=1&panelId=2)



Zurück im HABPanel öffnen wir die Einstellungen des iFrame-Widgets und fügen den kopierten Teil bei Url ein. Einen Name können wir auch vergeben. URL Source lassen wir auf "Static URL".



Abschließend auf Save klicken und mittels Run das Panel starten.



Statische Anzeige (Screenshot)

Sollte das spätere Anzeigegerät des HABPanel nicht so leistungsfähig sein, kann man über Grafana auch einfach eine statische Momentanaufnahme (Snapshot) in Form einen Bildes generieren. Dieses kann man dann in HABPanel als einfaches Bild-Widget einbinden.

Zunächst öffnen wir wieder die Share-Optionen in Grafana - Klicken hier jedoch im Reiter Link mit der rechten Maustaste auf Direct link rendered image und kopieren den Link in die Zwischenablage.
Zurück in HABPanel erstellen wir ein neues Image-Widget uns editieren die Optionen des Widgets. Hier fügen wir die URL aus der Zwischenablage ein.
Über den Refresh interval lässt sich die Aktualisierungsfrequenz festlegen, in der HABPanel das Bild neu abruft.

    Über den Autor

    Gründer und Autor von worldoftech.de

    Seit 25 Jahren im Bereich IT unterwegs, leidenschaftlicher Computerspieler, Technik-Freak und begeistert von allem was einen Motor (Auto/Motorrad/Flugzeug) hat.


    Nutzt Zuhause openHAB2 zusammen mit HomeMatic Komponenten sowie netatmo als Wetterstation. InfluxDB und Grafana zur Auswertung. Weitere Gadgets von Xiaomi, Sonos und Samsung

    Patrick Team

    Kommentare 10

    • /etc/openhab2/persitence/
      >>> der Ordner stimmt doch gar nicht, oder?


      muss es nicht
      /etc/openhab2/persistence/
      heißen?


      Wie meine Vorredner bekomme ich bei “select measurement” keine Geräte angezeigt. Hab alles ausprobiert. Hat irgendeiner noch einen Tipp?


      Hat jemand diese Sache aus dem openhab forum thread
      https://community.openhab.org/…stence-and-graphing/13761 
      gemacht?


      Finally, create a new dashboard, create a graph panel1.3k, select the freshly created data source and build your first query, presenting the previously injected sine wave time series.


      muss man das machen?


      oder muss hier:


      You may skip the extra security steps for Authentication and Authorization357, depending on the reachability of your monitoring-host. In this case, you only need to create the database.
      https://docs.influxdata.com/in…ication_and_authorization


      noch irgendwas gemacht werden?

    • Ich musste noch das Add-On "InfluxDB (v 1.0) Persistence" unter Addons/Persistence in PaperUI installieren, dann hat es plötzlich funktioniert.


      Habe vorher die Hinweise aus den Kommentaren hier abgearbeitet, kann auch ein Zusammenspiel der Hinweise und der Installation des Addons gewesen sein.

    • Nach meiner Meinung ist im Tutorial ein Fehler. Das File /etc/openhab2/persitence/influxdb_log.persist muss influxdb.persist heissen, also ohne "_log". Dann funktioniert's bei mir.

    • Hallo,


      Leider kann ich in der "/etc/grafana/grafana.ini" keine Änderungen machen? Weiß jemand warum nicht?

    • Hallo,


      also erst mal vielen Dank für die Anleitung, hat mir auch sehr geholfen. Allerdings hatte ich auch das Problem, dass er mir in Grafana beim Anlegen des Grafen im Feld “select measurement” nichts angeboten hat. Zuerst habe ich den Dateinamen auf "influxdb.persist" geändert. Das hat erst noch nichts gebracht. Dann bin ich nach einiger Recherche in der Logdatei /srv/openhab2-logs/openhab.log fündig geworden. Dort gab es eine Fehlermeldung: "Configuration model 'influxdb.persist' has errors, therefore ignoring it:..." Die erste Version der in der obigen Anleitung genannten persist Datei scheint nicht zu funktionieren, weil "Strategies" erwartet werden. Folgende Version hat bei mir dann funktioniert:


      Strategies {
      everyMinute : "0 * * * * ?"
      everyHour : "0 0 * * * ?"
      everyDay : "0 0 0 * * ?"
      default = everyChange
      }


      Items {


      * : strategy = everyMinute
      }


      Vielleicht hilft das dem ein oder anderem.
      Gruß, Oliver

    • mir geht es genauso, keinerlei Auswahl meiner konfigurierten Geräte ist möglich.

      • Hallo,


        evtl mal einloggen mittels konsole in influxdb
        influx -username admin -password HierDeinPasswort -host localhost


        und dort
        use openhab_db
        show series


        eingeben. Sollte hier etwas angezeigt werden, sind Messwerte hinterlegt. Falls hier nix steht, dann funktioniert die Verbindung openhab <> influxdb nicht.

    • Hallo Patrick,
      vielen Dank für die tolle Zusammenfassung. Hat mir sehr geholfen!


      LG
      Sigi

    • Hey Patrick,
      vielen Dank für die Anleitung für InfluxDB/Grafana auf Openhab2 (https://www.frombeyond.de/2017…logging-influxdb-grafana/).


      Ich bekomme in Grafana beim Anlegen des Grafen im Feld "select measurement" aber keine Werte angeboten (der Query Inspector liefert auch nichts). Wo kann da was schief gelaufen sein, wo kann man nachschauen?


      Danke für die Hilfe.
      Ulrich

      • Hallo,


        das gleiche Problem habe ich auch. Datenverbindung ist erfolgreich. Hat jemand eine Idee was das sein kann?


        Bin für jeden Tipp dankbar.


        MfG
        Andreas