OpenHAB Visualisierung mit Grafana

Hier erfahrt Ihr wie Ihr eine OpenHAB Visualisierung mit mit Grafana einrichten könnt.

openHAB bietet mit seinen mit seinen “Charts” eine eigene Visualisierungsmöglichkeit an. Aber Mal ehrlich – schön sieht anders aus. Außerdem fehlen komfortable Vergleichs- und Auswertungsmöglichkeiten. Grafana hat sich in den letzten Jahren als Platzhirsch unter den Opensource Visualisierungstools etabliert und eignet sich ideal als OpenHAB Visualierung. Es bietet die Möglichkeit individuelle Dashboards zu erstellen und verschiedene Werte in Korrelation darzustellen. Grafana bringt out-of-the-box Konnektoren für verschiedene Datenquellen mit(z.B. Mysql, InfluxDB, PostgresSQL, Prometheus, etc.).

openHAB Persistence

Um überhaupt erstmal Daten aus openHAB zu generieren benötigen wir einen sog. Persistence Storage. Das ist eine Form von Datenspeicher um die in openHAB existierenden Werte in regelmäßigen Zeitabständen zu speichern. Stand heute existieren 7 verschiedene Plugins um Daten zu persistieren. Die openHAB Doku zu Persitence findet Ihr hier.

InfluxDB

Nachdem ich anfänglich ein paar Probleme mit dem MySQL Plugin hatte bin ich nun auf InfluxDB umgestiegen. Das läuft jetzt seit Wochen sehr stabil. InfluxDB ist eine sog. “time-series” Datenbank. Das heißt die Daten werden hier ähnlich wie bei rrd in Zeitserien abgelegt. Solche Speichersystem sind prädestiniert für das Ablegen von Messwerten was im “Internet of Things” immer mehr an Bedeutung gewinnt. Ein weiterer Vorteil ist das Speicherplatzmanagement. Time series Datenbanken speichern die Daten äusserst effizient im Vergleich zu normalen RDBMS Systemen wie MySQL oder Oracle. Ein weiterer interessanter Punkt ist dass InfluxDB direkt via http abgefragt werden kann. Dadurch ergeben sich interessante Möglichkeiten(z.B. Monitoring von Werten etc.).

InfluxDB Installation

Hinweis Die Installation der Datenbank wird in diesem Beispiel auf der Maschine durchgeführt auf der openHAB läuft. Es ist kein Problem InfluxDB woanders zu installieren wenn eine Netzwerkverbindung besteht. Die Parameter müssen dann entsprechend angepasst werden.

Die Installation ist auf der Herstellerseite eigentlich ganz gut beschrieben. Deshalb spare ich mir diese Schritte hier. Was aktuell nicht in der Doku steht ist dass Ihr den Dienst beim Sytemneustart automatisch starten solltet:

InfluxDB Konfiguration

Das Anlegen von Benutzern und Rechten findet Ihr unter dem Punkt “Authentication and authorization in InfluxDB”. Ihr solltet Euch neben dem “admin” einen separaten Benutzer für grafana und openHAB einrichten. Hier sind die einzelnen Schritte beschrieben die für den Zugriff von openHAB nötig sind:

Danach muss noch die Konfiguration in der Datei /etc/influxdb/influxdb.conf angepasst werden. Im Wesentlichen sollte man dort folgende Einstellungen setzen:

Das stellt sicher dass der http-Listener nur mit gültigem User und Password abgefragt werden kann. Zusätzlich habe ich das Logging abgestellt da es mich ehrlich gesagt nicht interessiert und ich nicht unnötig Speicherplatz verschwenden will. Das ist nicht zwingend nötig. Am Ende startet Ihr den InfluxDB Service einmal durch damit die Änderungen wirksam werden:

Von jetzt an ist damit sichergestellt dass sowohl der Commandline Client “influx” als auch der Zugriff über http nur über einen berechtigten User inkl. Passwort erfolgen kann.

Persistence Plugin Konfiguration

Nun müssen wir openHAB dazu bringen unsere Werte in die Datenbank zu schreiben. Dazu müssen wir das Persistence Binding zunächst Mal installieren. Ich habe das über die openHAB Paper UI erledigt. Diese erreicht Ihr über die URL /paperui/index.html. Dort findet Ihr unter dem Menüpunkt “Add-ons” alle verfügbaren “Persistence” Plugins. Hier sollte das Plugin “InfluxDB Persistence” aufgeführt sein und sich über einen Klick auf “INSTALL” einfach installieren lassen. Es gibt wohl noch andere Installationmöglichkeiten (addons.cfg). Wenn das passiert ist muss openHAB mitgeteilt werden wie es die InfluxDB erreichen kann. Das passiert in der Datei influxdb.cfg:

Hier werden nun die Werte analog zu Benutzer und Datenbank(siehe oben) gesetzt:

Persistent Items

Nun müssen wir noch festlegen welche Items wie häufig persistiert werden sollen. Dabei sollte man sich vorher überlegen was sinnvoll ist. Es macht sicher keinen Sinn einfach alles zu persistieren, sondern nur die Werte die man wirklich auswerten möchte. Dann muss man sich noch überlegen wie oft der Wert eines bestimmten Items geschrieben werden soll. Misst man beispielsweise die Außentemperatur macht es vermutlich keinen Sinn diesen Wert jede Minute zu schreiben. Neben festen Zeitintervallen gibt es auch noch die Möglichkeit immer dann zu persistieren wenn sich ein Wert ändert. Möchte man z.B. Präsenzen in Räumen visualisieren wäre das eine sinnvolle Einstellung. Das Mapping der Items wird in folgender Datei konfiguriert:

Hier ist eine Beispiel:

Im “Strategies” Bereich werden Speicherstrategien definiert. D.h. es werden symbolische Namen erstellt die über einen Cron-Ausdruck die Häufigkeit festlegen. Eine Default-Strategie die bereits vorhanden ist, ist “everyChange”. Wie der Name vermuten lässt werden hier die Werte immer dann geschrieben wenn sich ein Wert ändert(zeitunabhängig). Im Bereich “Items” weiter unten legt Ihr nun fest welche Items mit welcher Strategie persistiert werden sollen. Der zusätzliche Parameter “restoreOnStartup” bedeutet dass der Wert dieses Items nach einem Neustart von openHAB automatisch wiederhergestellt werden soll. Damit vermeidet man z.B. dass Items einen undefinierten Zustand erhalten.

Grafana Installation

Ist hier gut beschrieben.
Zur Konfiguration findet Ihr hier alles Nötige.
Die zentrale Konfigurationsdatei befindet sich hier:

Standardmässig läuft Grafana auf Port 3000.

Grafana Datasource einrichten

Wenn Grafana installiert ist und läuft müssen wir uns eine InfluxDb Datasource einrichten um Zugriff auf auf unsere openHAB Daten zu erhalten. Dazu müssen wir eine neue Datasource für InfluxDB anlegen. Dazu klicken wir auf das Grafana Logo und dann auf “Datasources”.

Nun müssen wir die Verbindungsparameter eingeben. Der Name ist frei wählbar. Sinnvoll ist z.B. “openHAB”. Type ist logischerweise “InfluxDB”. Unter “URL” muss die Verbindung zum http-Connector der InfluxDB angegeben werden(also z.B. http://openhab.domain.foo:8086). Unter “Access” hat man die Auswahl zwischen “Proxy” und “Direct”. Proxy bedeutet dass der Grafana SERVER sich zu Eurer InfluxDB verbindet und Daten abholt. Direct hingegen bedeutet dass sich Eurer Browser – also der Client – sich zur Datenbank verbindet. Wenn der Grafana Server sich Richtung InfluxDB verbinden kann sollte man dort Proxy wählen. Unter “HTTP Auth” müsst Ihr einen Haken bei “Basic Auth” setzen da wir uns am InfluxDB Listener authentifizieren müssen. Unter “Basic Auth Details” gebt Ihr nun den User an den Ihr oben eingerichtet habt. Um bei diesem Beispiel zu bleiben wäre das “grafana” und als Passwort “mein_geheimes_grafana_password”. Unter “InfluxDB Details” tragt Ihr nun den Namen der Datenbank ein (z.B. “openhab_db”). User ist im Beispiel wieder “grafana” mit entsprechendem Passwort. Nun könnt Ihr die Datasource speichern indem Ihr auf “Save & Test” klickt.

Ihr müsstet jetzt folgende Fehlermeldung sehen:

Dieser Fehler besagt dass wir mit dem User “grafana” keine Rechte haben uns alle existierenden Datenbanken anzeigen zu lassen. Dies ist o.k. und kann ignoriert werden, da wir den Namen unser Datenbank kennen und dem User grafana nicht unbedingt Schreibrechte auf die Datenbank geben möchten.

Grafana Dashboard einrichten

Als nächstes richten wir uns ein neues Dashboard für unsere Graphen ein. Ein Dashboard ist eine Übersicht in der verschiedene Graphen zusammengefasst werden. Dazu klicken wir wieder auf das Grafana-Logo und dann Dashboard -> New. Jetzt solltet ihr ein leeres Dashboard sehen in das wir neue Komponenten einfügen können.

Grafana Graphen einrichten

Zu guter Letzt fügen wir nun ein Darstellungselement zu unserem Dashboard hinzu. Hier gibt es sehr unterschiedliche Varianten. Um z.B. einen Temperaturverlauf darzustellen fügen wir das Element “Graph” ein und klicken dazu auf gleichnamiges Icon. Um den aktuell leeren Graph mit Leben zu füllen klickt Ihr einmal in der Mitte auf den Titel bzw. “Panel Title”.

Dadurch öffnet sich ein Menü. Hier klickt Ihr nun auf “Edit”. Im Tab “Metrics” solltet Ihr nun in der Lage sein Eure Items auszuwählen die Ihr in der openHAB Konfiguration hinterlegt habt.

Die Abfrage- und Aggregierungsmethoden in InfluxDB sind sehr komplex. Deshalb möchte ich diese an dieser STelle auch nicht ausführlich behandeln. In unseren Fall belassen wir alle voreingestellten Parameter wie sie sind und wählen lediglich die Metrik/Item die wir im Graph sehen möchten aus. Im Beispiel Bild ist das die “Carport Temperatur”. Danach speichert Ihr das Dashboard durch einen Click auf die kleine Diskette ganz oben(“save Dashboard”) und gebt Eurem Dashboard einen Namen (z.B. Temperaturen). In dieses Dashboard kann man dann später auch noch weitere Elemente hinzufügen. Nachdem Ihr das Dashboard gespeichert habt seht Ihr Euren Grafen. Für den Fall dass Ihr allerdings keine Werte/Linien seht probiert bitte folgendes aus: Editiert Euren Graphen durch einen Klick auf den Titel und dann “Edit”. Wählt das Tab “Display” aus, setzt für die Einstellung “Null value” den Wert “connected” und speichert das Ganze. Jetzt solltet Ihr Eure Wert sehen.

Auswertungszeiträume

In der Dashboard Ansicht seht Ihr ganz oben rechts den aktuellen Auswertungszeitraum(z.B. “last 3 hours”). Durch einen Click darauf öffnet sich ein Auswahlmenü. Hier könnt Ihr z.B. direkt die letzten 30 Tage als Zeitraum wählen. Hier werdet Ihr vermutlich noch nicht so viel sehen, da Ihr noch nicht ausreichend Werte gesammelt habt.

Fragen/Kritik

Ich hoffe Euch hat dieses Tutorial weitergeholfen. Bei Fragen oder Verbesserungsvorschlägen hinterlasst mir sehr gerne einen Kommentar.

Please follow and like us:

6 Kommentare

  • Eric Geiger

    Hallo,

    besteht die Möglich mit Grafana beispielsweise Vorhersagen für die Temperatur als Diagramm darzustellen?

    Vielen Dank.

    • Christian

      Hallo Eric,

      sorry für die späte Antwort.

      Ja das geht selbstverständlich.

      Dazu existiert zum Beispiel das Wunderground Plugin für openHAB2.
      Das müsstest Du zunächst einrichten und konfigurieren.

      Ein Item würde dann z.B. so aussehen:

  • Markus

    Kleine Korrektur, da es eine Änderung bei der InfluxDB gab:

    Die influxdb.cfg muss korrekt so aussehen:
    url=http://127.0.0.1:8086
    user=openhab
    password=mein_geheimes_openhab_password
    db=openhab_db
    retentionPolicy=autogen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.