Wie im dritten Teil schon erwähnt, hatte ich ja bereits ein Auge auf Grafana geworfen. Nun musste ich mir überlegen, wie das Ganze dann zusammen mit OpenHAB gebracht wird. Grafana unterstützt viele Datenquellen, sinnvoll für eine Verbrauchsdarstellung ist eine klassische Datenbank. Da Grafana an dieser Stelle deutlich flexibler als OpenHAB ist, muss ich mich nach OpenHAB richten. Dieses unterstützt unter anderem eine InfluxDB-Datenbank. Das erleichtert einiges, denn InfluxDB ist eine weit verbreitete Datenbank für Zeitreihen und auch in Grafana gut unterstützt. Diese Kombination wird auch im Internet oft zusammen genannt.
Also installiere ich zunächst InfluxDB auf dem Raspberry Pi. Auch hier hilft eine Recherche im Internet. In wenigen Minuten ist InfluxDB installiert und eingerichtet. Mir reichen hier meistens die Standardeinstellungen. Über die Administrationswebseite von InfluxDB lege ich mir eine Datenbank nach Anleitung an und erstelle Nutzerrechte. Das wars für den Teil Datenbank. Hier ist die Administrationswebseite zu sehen:
Nun muss ich OpenHAB dazu bringen, die Werte in die Datenbank zu schreiben. Dafür gibt es so genannte Persistence-Dienste.
Diese lassen sich – wie fast alles andere auch – nur auf Konfigurationsdateiebene in OpenHAB anlegen. In der Datei /etc/openhab2/services/influxdb.cfg ergänze ich nun ein paar Zeilen, damit auf die InfluxDB zugegriffen werden kann.
Die Datenbank ist nun verfügbar. Nun muss ich noch festlegen, wie oft die die Werte für die Leistungsaufnahme und die Zählerstände für Elektrizität und Gas nach Bedarf in der Datenbank abgelegt werden.
Da ich den Momentanwert der Leistungsaufnahme möglichst hochauflösend erfassen will, konfiguriere ich diesen auf Speicherung bei jeder Änderung. Bei den Zählern interessieren mich nur die 15min-Werte, eine häufigere Auslesung erscheint mir unnötig.
Nach dem Speichern der Konfiguration sollten nun die Daten in die Datenbank laufen. Über die Administrationswebseite von InfluxDB sehe ich auch sehr schnell, dass die Daten tatsächlich geschrieben werden. Sehr gut. Nun noch Grafana.
Auch hier orientiere ich mich bei der Installation an Beschreibungen im Internet. Auch dies dauert nur wenige Minuten und Grafana startet auf dem Raspberry Pi. Nach dem ich einen Nutzer angelegt habe, lege ich meine InfluxDB-Datenbank als Datenquelle an. Der Treiber ist soweit vorbereitet, es sind lediglich der Datenbankname und die Zugangsdaten anzugeben. Das ist schnell gemacht. Auch hier bin ich überrascht, wie gut das Zusammenspiel mehrerer Komponenten ist.
Die Daten landen in der Datenbank, die Datenbank ist eingebunden, fehlt nun noch die eigentliche Visualisierung. Ich erstelle ein Dashboard in Grafana. Über die Webseite von meinem Grafanasystem geht das sehr intuitiv und es lässt sich ganz einfach auf das Dashboard ein Panel – also eine Diagrammfläche – einfügen. Beinahe selbsterklärend ist die Anbindung der Datenbank als Datenquelle für das Diagramm. Ich wähle einfach den Namen meines Presisitence-Objekts aus und schon erscheint eine Grafik dazu. Geschafft, zumindest grob. Eine erste grafische Visualisierung steht.
Da ich erst einmal einen Zählerstand anzeigen lassen wollte, erscheint im Versuch eine treppenartige Grafik. Klar, denn jeweils nach 15 Minuten ist der Wert um einen gewissen Wert größer als 15 Minuten davor. Dazwischen wird der Wert nicht gespeichert, bleibt also beim alten Wert. Da die 15min-Verbräuche zum eigentlichen Zählerstand sehr klein sind, sind die Stufen klein und schwer zu unterscheiden. Da muss ich mir also noch etwas überlegen. Ich lasse mir daher erstmal die Momentanleistungen anzeigen. Das funktioniert auch sofort und sieht richtig gut aus. Man kann wirklich Lastspitzen, Rampen, zeitbasierte Lasten usw. voneinander unterscheiden. So wünsche ich mir das.
Aber was mache ich mit den Zählerständen? Mich interessiert ja eigentlich nur die Differenz des Zählerstands alle 15 Minuten. Also muss ich irgendwie die Differenz ausrechnen und auch diese in die Datenbank schreiben. Aber wo soll ich da ansetzen? In OpenHAB? Auf der Suche im Internet stoße ich auf einen sehr eleganten Weg. Dieser deutet auf die Mächtigkeit von Grafana hin. Denn ich muss nur noch einen Parameter im Diagramm ergänzen, um an das Ziel zu kommen. Grafana sorgt selbst für die Differenzbildung.
Damit kann ich nun meinen 15-Minuten-Lastgang der Elektrizität darstellen. Und weil es so gut funktioniert hat, erstelle ich auch noch zwei Panels mit der Darstellung des Tagesverbrauchs von Elektrizität und Gas. Auch hier bildet Grafana selbst die Tagesdifferenz.
Damit bin ich vorerst am Ziel. Mein Verbrauch wird mir grafisch ansprechend visualisiert.