So richtig toll wird es in openHAB erst, wenn wir Daten speichern können. Sei es der Status eines Schalters oder Temperaturwerte im Zeitverlauf, um Diagramme anzeigen zu können. Hierzu haben die Entwickler rund um das Projekt  (Danke an Kai Kreuzer und sein Team) gleich eine ganze Latte an Datenbanken im Programm. Ich möchte zeigen wie ihr eine rrd4j Datenbank, auch Round Robin Datenbank genannt, installiert und anwendet. Das Besondere an dieser Datenbank im Vergleich zu einer SQL Datenbank oÄ ist der Umgang mit alten Daten. Während aktuelle Daten öfter gespeichert werden und so ein genaues Bild wiedergeben, werden die Datenpunkte, die weiter in der Vergangenheit liegen immer weniger und fliegen dann komplett raus.

Das hat auf der einen Seite den Vorteil, dass die Datenbank nicht „zugemüllt“ wird und du irgendwann die Meldung bekommst, dass dein Speicher voll ist. Auf der anderen Seite ist der Zugriff auf historische Daten nicht so richtig gegeben. Nun kommt es darauf an was ihr mit euren Daten bezwecken wollt. Um den Status eines Schalters zu speichern, um ihn bei einem Neustart von openHAB wiederherzustellen oder den Temperaturverlauf der letzten Woche zu betrachten ist Round Robin genau das Richtige. Los gehts!

rrd4j Persistence installieren

openHAB 2 macht uns die Installation der Datenbank sehr leicht. Über die Paper UI kann es mit nur einem Klick installiert werden.

RRD4J Persistence installieren

RRD4J Persistence installieren

 

Hierzu navigierst du in der Paper UI zu Add-ons – PERSISTENCE – RRD4J Persistence und installierst es. Damit ist die Installation schon so gut wie abgeschlossen. Eine spezielle Konfiguration wird nicht benötigt. Im nächsten Schritt muss im Verzeichnis /openHAB-conf/persistence noch die Datei rrd4j.persist angelegt werden. Diese wird mit folgendem Inhalt gefüllt

 

Zuerst werden die „Strategies“ definiert und festgelegt in welchen Intervallen grundsätzlich gespeichert werden soll. „everyMinute“ ist dabei obligatorisch. Am besten immer gleich alle anlegen.

Unter Items landen dann alle Items, die du speichern möchtest. Diese müssen natürlich vorher schon in der .items Datei definiert werden. In diesem Beispiel speichere ich die die Temperatur von meiner Wetterstation jede Minute und stelle die Werte bei Neustart wieder her.

Als zweiten Wert speichere ich den Status meiner Anwesenheit. So weiß openHAB im Falle eines Neustarts ob der Schalter AN oder AUS war.

Im Ergebnis kann die Speicherung der Temperatur zum Beispiel so aussehen:

Temperaturdiagram openHAB mir rrd4j Datenbank

Temperaturdiagram openHAB mir rrd4j Datenbank

Um eine Auswahl nach Tag, Woche, Monat und Jahr anzeigen zu lassen, muss zuvor ein in der .items Datei ein Item für die Auswahl angelegt werden. Damit wird der Zustand der Bereichsauswahl gespeichert.

 

Der Code für die Sitemap kann dann in etwa so aussehen:

Du legst einen Switch mit dem Item für die Bereichsauswahl an. Das Label habe ich bewusst leer gelassen, damit keine störende Beschriftung die Ansicht in der UI zerstört. Jetzt legst du ein Mapping an für die gewünschten Bereiche.

Jetzt legen wir jeweils ein Chart an für jeden Zeitbereich, den wir gerne hätten. Im Prinzip blenden wir mit dem Schalter oben immer ein Diagramm ein und die anderen aus. period definiert den Datenbereich (h=Stunde, D=Tag, W=Woche, M=Monat, Y=Jahr). Mit refresh kannst du festlegen wie oft das Diagramm neu geladen werden soll. Ich habe den Wert bewusst hochgesetzt, da ich keine sekündliche Aktualisierung benötige. Mit visibility gibst du an bei welcher Switch Stellung welches Diagramm angezeigt wird. Achte darauf, dass das mit den Angaben in der mappings des Switches übereinstimmt. Fertig ist deine Bereichsauswahl.