Wenn wir bereits items zu openHAB hinzugefügt haben, wäre eine Anzeige eines Werteverlaufes sehr interessant. Beispielsweise haben wir ein Thermometer im Wasser unseres Aquariums. Die aktuelle Wassertemperatur wird zwar in openHAB angezeigt, aber wie entwickelt sich die Temperatur im Tagesverlauf? Um einen solchen Verlauf anzuzeigen ist es notwendig, das openHAB Daten speichert, um auf eine Historie zugreifen zu können.
openHAB bietet mehrere Anbindungen an Datenbanken, wo unsere Werte gespeichert und ausgelesen werden können. Die für die meisten Fälle effektivste Möglichkeit bietet uns RRD4J. Diese „Round-Robin Datenbank“ speichert zwar zunächst alle Werte, aber umso länger die Daten in der Vergangenheit liegen, um so „durchschnittlicher“ werden diese gespeichert. Das heißt, dass für Temperaturwerte, die vor einem halben Jahr erfasst wurden, nicht mehr jeder einzelne Wert gespeichert wird, sondern nur noch der Durchschnitt. Damit ergibt sich der Vorteil der Platzersparnis, auch die Zugriffszeit auf die Daten erhöht sich deutlich.
Weitere Möglichkeiten der Datenspeicherung bietet openHAB für die Backends InfluxDB, MongoDB, MQTT, MySQL uvm. In diesem Artikel wird zunächst nur das Backend RRD4J beschrieben. Vielleicht folgen später weitere Artikel zu anderen Backends.
Installation
Die Installation verläuft ziemlich unspektakulär. Wir benutzen die apt-Paketverwaltung und installieren das Addon mit:
Shell
1
apt-getinstall openhab-addon-persistence-rrd4j
Grundkonfiguration
Nun erstellen wir eine Konfigurationsdatei im Ordner „/etc/openhab/configurations/persistence„, beispielsweise mit dem Dateinamen „rrd4j.persist„. Die Dateiendung ist dabei wie im Beispiel zu wählen, damit die Konfigurationsdatei von openHAB als solche erkannt wird.
In dieser Konfigurationsdatei werden zunächst Strategien erstellt, wann Daten gespeichert werden sollen. Dies könnte beispielsweise so aussehen:
Shell
1
2
3
4
5
Strategies{
everyMinute:"0 * * * * ?"
everyHour:"0 0 * * * ?"
everyDay:"0 0 0 * * ?"
}
Dann geben wir an, für welche Items welche Strategie zählt. Im einfachsten Fall lassen wir sämtliche Items minütlich speichern und stellen den letzten Wert des Items beim Start von openHAB wieder her:
Shell
1
2
3
Items{
*:strategy=everyMinute,restoreOnStartup
}
Abschließend übertragen wir den Besitz dieser Konfigurationsdatei an openHAB mit:
In unserer Sitemap lassen wir ein Diagramm zu einem bestehenden Item wie folgt anzeigen, eine Erweiterung der Item-Definition ist hierfür nicht notwendig.
Shell
1
Chart item=INET_PING period=Wrefresh=3600
Mit item geben wir das Item an, für welches das Diagramm erzeugt werden soll, period gibt an, über welchen Zeitraum sich die Anzeige erstreckt. Für period sind beispielsweise folgende Werte zulässig:
h, 4h, 12h, D, 3D, W, 2W, M, 2M, 4M, Y
refresh gibt den Aktualisierungsintervall an, in welchem die Grafik in der Sitemap erneuert werden soll. Mit service könnten wir noch angeben, welche Datenquelle zu nutzen ist, da wir jedoch nur eine einzige einsetzen, kann der Punkt entfallen.
Datenbereich dynamisch wählen
Mit einer Erweiterung unserer Konfiguration ist es sogar möglich, direkt am Diagramm den Datenbereich zu wählen, um beispielsweise von einer Wochenansicht mit einem Button zu einer Tagesansicht zu wechseln. Dazu erstellen wir zunächst ein neues Item, dass den Zustand der Datenbereichsauswahl speichert:
Shell
1
Number CHART_PERIOD
Dann setzen wir die Schalter für das Umschalten der Ansicht über das Diagramm:
In der Sitemap sieht das Ganze dann in etwa so aus:
Dieser Schalter mit seiner item-Definition kann für alle eingebundenen Diagramme verwendet werden, wenn es nicht stört, dass die Datenbereichsanzeige aller Diagramme gleichzeitig geändert wird.
Diagramm extern anzeigen
Es besteht die Möglichkeit, dass wir unser Diagramm auch außerhalb der openHAB-Sitemap anzeigen lassen können.
Dazu rufen wir das Diagramm z.B. im Browser wie folgt auf:
Die Angabe „items“ kann durch „groups“ ersetzt werden, wenn eine solche Gruppe zuvor definiert wurde. Mit „h“ (height) und „w“ (width) geben wir die Größe an, in welcher das Diagramm dargestellt werden soll. „period“ gibt, wie bereits zuvor gezeigt, den Datenbereich an, der angezeigt werden soll, in diesem Beispiel die letzte Woche.
Wenn mehrere Items kommasepariert angegeben werden, werden diese kombiniert in einem Diagramm dargestellt:
openHAB :: Datenspeicherung und Statistiken mit RRD4J
Wenn wir bereits items zu openHAB hinzugefügt haben, wäre eine Anzeige eines Werteverlaufes sehr interessant. Beispielsweise haben wir ein Thermometer im Wasser unseres Aquariums. Die aktuelle Wassertemperatur wird zwar in openHAB angezeigt, aber wie entwickelt sich die Temperatur im Tagesverlauf? Um einen solchen Verlauf anzuzeigen ist es notwendig, das openHAB Daten speichert, um auf eine Historie zugreifen zu können.
Verfügbare Artikel zu openHAB
Inhaltsverzeichnis
openHAB bietet mehrere Anbindungen an Datenbanken, wo unsere Werte gespeichert und ausgelesen werden können. Die für die meisten Fälle effektivste Möglichkeit bietet uns RRD4J. Diese „Round-Robin Datenbank“ speichert zwar zunächst alle Werte, aber umso länger die Daten in der Vergangenheit liegen, um so „durchschnittlicher“ werden diese gespeichert. Das heißt, dass für Temperaturwerte, die vor einem halben Jahr erfasst wurden, nicht mehr jeder einzelne Wert gespeichert wird, sondern nur noch der Durchschnitt. Damit ergibt sich der Vorteil der Platzersparnis, auch die Zugriffszeit auf die Daten erhöht sich deutlich.
Weitere Möglichkeiten der Datenspeicherung bietet openHAB für die Backends InfluxDB, MongoDB, MQTT, MySQL uvm. In diesem Artikel wird zunächst nur das Backend RRD4J beschrieben. Vielleicht folgen später weitere Artikel zu anderen Backends.
Installation
Die Installation verläuft ziemlich unspektakulär. Wir benutzen die apt-Paketverwaltung und installieren das Addon mit:
Grundkonfiguration
Nun erstellen wir eine Konfigurationsdatei im Ordner „/etc/openhab/configurations/persistence„, beispielsweise mit dem Dateinamen „rrd4j.persist„. Die Dateiendung ist dabei wie im Beispiel zu wählen, damit die Konfigurationsdatei von openHAB als solche erkannt wird.
In dieser Konfigurationsdatei werden zunächst Strategien erstellt, wann Daten gespeichert werden sollen. Dies könnte beispielsweise so aussehen:
Dann geben wir an, für welche Items welche Strategie zählt. Im einfachsten Fall lassen wir sämtliche Items minütlich speichern und stellen den letzten Wert des Items beim Start von openHAB wieder her:
Abschließend übertragen wir den Besitz dieser Konfigurationsdatei an openHAB mit:
Diagramm in der Sitemap
In unserer Sitemap lassen wir ein Diagramm zu einem bestehenden Item wie folgt anzeigen, eine Erweiterung der Item-Definition ist hierfür nicht notwendig.
Mit item geben wir das Item an, für welches das Diagramm erzeugt werden soll, period gibt an, über welchen Zeitraum sich die Anzeige erstreckt. Für period sind beispielsweise folgende Werte zulässig:
h, 4h, 12h, D, 3D, W, 2W, M, 2M, 4M, Y
refresh gibt den Aktualisierungsintervall an, in welchem die Grafik in der Sitemap erneuert werden soll. Mit service könnten wir noch angeben, welche Datenquelle zu nutzen ist, da wir jedoch nur eine einzige einsetzen, kann der Punkt entfallen.
Datenbereich dynamisch wählen
Mit einer Erweiterung unserer Konfiguration ist es sogar möglich, direkt am Diagramm den Datenbereich zu wählen, um beispielsweise von einer Wochenansicht mit einem Button zu einer Tagesansicht zu wechseln. Dazu erstellen wir zunächst ein neues Item, dass den Zustand der Datenbereichsauswahl speichert:
Dann setzen wir die Schalter für das Umschalten der Ansicht über das Diagramm:
und die Einbindung des Diagramms erweitern bzw. ändern wir wie folgt:
In der Sitemap sieht das Ganze dann in etwa so aus:
Dieser Schalter mit seiner item-Definition kann für alle eingebundenen Diagramme verwendet werden, wenn es nicht stört, dass die Datenbereichsanzeige aller Diagramme gleichzeitig geändert wird.
Diagramm extern anzeigen
Es besteht die Möglichkeit, dass wir unser Diagramm auch außerhalb der openHAB-Sitemap anzeigen lassen können.
Dazu rufen wir das Diagramm z.B. im Browser wie folgt auf:
Die Angabe „items“ kann durch „groups“ ersetzt werden, wenn eine solche Gruppe zuvor definiert wurde. Mit „h“ (height) und „w“ (width) geben wir die Größe an, in welcher das Diagramm dargestellt werden soll. „period“ gibt, wie bereits zuvor gezeigt, den Datenbereich an, der angezeigt werden soll, in diesem Beispiel die letzte Woche.
Wenn mehrere Items kommasepariert angegeben werden, werden diese kombiniert in einem Diagramm dargestellt:
Wer sich nun fragt, wie man überhaupt solche Daten der Internetleitung in openHAB bekommt, dem sei dieser Artikel empfohlen.
Verwandte Beiträge
In diesem Artikel geht es um die Installation der Hausautomatisierungssoftware openHAB auf ein bereits installiertes und…
Wenn wir OpenHAB aus den entsprechenden Repositories installiert haben, wurde ein neuer, nicht priviligierter Nutzer…
Als ein kleines Gimmik habe ich in openHAB einen kleinen Wecker realisiert. Dabei nutzte ich ein…
Auch von unterwegs ist es möglich, auf seine Hausautomatisierung zuzugreifen. Gern wüsste man, ob das…
Die heutigen Smartphones enthalten meist ein NFC-Modul mitsamt intern verbauter Antenne. Mit dieser "Near-Field-Communication"-Technologie ist…