OpenHAB Logging

openHAB #6: Logging mit InfluxDB und Grafana

Banner openHAB InfluxDB Grafana

openHAB bietet die Möglichkeit, einen Service zum Speichern der erfassten (Mess-)Werte einzurichten. Dazu können verschiedene Datenbanksystem verwendet werden.

Nachdem es im letzten Beitrag darum ging, wie man InfluxDB sowie Grafana auf dem Raspberry Pi bzw. Ubuntu installiert, werden wir hier darauf aufbauend den Persistance-Service in openHAB einrichten, um unsere Messwerte zu speichern und in Graphen darzustellen.

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.

Aktualisierungsservice

Dieser Beitrag ist gültig für die Version:

  • InfluxDB 1.12
  • Grafana v4.4.1 (commit: 6a9f8ca)
  • openHAB 2.1

 

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.

~$ influx
Connected to http://localhost:8086 version 1.2.4
InfluxDB shell version: 1.2.4
> CREATE DATABASE openhab_db
> CREATE USER admin WITH PASSWORD '<Passwort für Admin>' WITH ALL PRIVILEGES
> CREATE USER openhab WITH PASSWORD '<Passwort für openhab>'
> GRANT ALL ON openhab_db TO openhab
> 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

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

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:

[users]
# disable user signup / registration
allow_sign_up = false
...
[auth.anonymous]
# enable anonymous access
enabled = true
# specify organization name that should be used for unauthenticated users
org_name = openhab
# specify role for unauthenticated users
org_role = Viewer
...
[auth.basic]
enabled = false

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.

Config Data Source

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

Data Source Success

 

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

# The database URL, e.g. http://127.0.0.1:8086 or https://127.0.0.1:8084 .
# Defaults to: http://127.0.0.1:8086
url=http://localhost:8086

# The name of the database user, e.g. openhab.
# Defaults to: openhab
user=openhab

# The password of the database user.
password=<Passwort des Users openhab>

# The name of the database, e.g. openhab.
# Defaults to: openhab
db=openhab_db

# The retention policy to be used, needs to configured in InfluxDB
# Till v0.13: 'default', since v1.0: 'autogen'
retentionPolicy=autogen

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

OpenHAB Influx 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/persitence/  mit dem Namen influxdb_log.persist und fügen folgenden Inhalt ein:

Items {
    *   : strategy = everyChange
}

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:

Strategies {
    everyMinute : "0 * * * * ?"
    everyHour   : "0 0 * * * ?"
    everyDay    : "0 0 0 * * ?"
}

Items {

    *_Temperature   : strategy = everyChange, everyHour
    *_Humidity      : strategy = everyChange
    
}

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

Row bearbeiten

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

Graph erstellen

  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.

Editieren von Linie

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.

HABPanel Frame Widget

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)

Grafana Share Panel

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

HABPanel iFrame Settings

 

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.

Grafana Direct Link

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.

HABPanel Image Settings

Über den Refresh interval lässt sich die Aktualisierungsfrequenz festlegen, in der HABPanel das Bild neu abruft.

 

Solltet Ihr Fragen haben oder es Unklarheiten in diesem Guide geben, nutzt unsere Kommentarfunktion – wir antworten so schnell es geht.

Patrick

Gründer und Autor von frombeyond.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.