Datenvisualisierung mit Openhab

Du wirst in deinem täglichen Leben mit Daten überflutet. Temperaturen, Umsatzzahlen, Telefonnummern, E-Mailadressen … All das muss von uns erfasst und verarbeitet werden. Dabei könnte es mit Hilfe von Visualisierung doch so einfach sein. Wir erkennen Muster, leiten Informationen aus Grafiken ab und betrachten sie bei Interesse genauer. Aus diesem Grund möchte ich dir heute die Datenvisualisierung mit Openhab vorstellen.

Die Visualisierung von Daten macht sich unter anderem die Farbenlehre zunutze, indem man für unterschiedliche Datenbestände verschiedene Farben nutzt. So lassen sich Bereiche kennzeichnen, von anderen abgrenzen und direkt Informationen daraus ableiten. Dabei ist die Farbenlehre nicht nur für die Visualisierung von Datenbeständen gut, sie untermalt auch die Bedeutung von Daten. Rot wird von uns oft als negativ wahrgenommen, während Grün eher dafür steht, dass alles in Ordnung ist (mehr zur Farbenlehre).

Du bist nun irritiert? Farbenlehre und Smart Home? 😕

Ja, tatsächlich. Doch keine Sorge, wir kratzen dieses Thema nur an und wollen nicht tiefer einsteigen. Sagen möchte ich allerdings damit, dass in Smart Home weitaus mehr stecken kann, als nur das Verknüpfen von Komponenten oder Programmieren von Software. Und dieses Wissen, welches darüber hinaus geht, kann man sich durchaus zu Nutze machen.

Diagramme – Vergangenheit und Gegenwart

Nehmen wir an, du lässt durch IoT-Devices deine Raumtemperatur oder die Luftfeuchtigkeit in deinem Zuhause überwachen.

Hierbei spielt nicht nur die Erfassung von Daten eine Rolle, sondern auch die Auswertung und Aufbereitung. Diese Auswertungen können visuell geschehen, so dass du aus diesen Daten Muster ableiten kannst oder entsprechend reagieren kannst. Manchmal interessiert man sich auch einfach nur für die Entwicklung über einen bestimmten Zeitraum. Insbesondere auch für Zeiträume in denen man nicht Zuhause ist. Ein ganz gutes Beispiel war die Auswertung der Temperatur während der Hitzewelle in Deutschland. Das fand ich sehr spannend.

Sich allerdings durch langweilige Mengen an Daten zu wühlen, die kontinuierlich mehr werden, sollte man sich das Leben einfach machen. Ein Liniendiagramm ist praktisch wie geschaffen für die Auswertung von Temperaturdaten, da man den Anstieg und Abfall auf einen Blick erfassen kann. So erkennst du auch, wie sich die Temperatur durch welche Aktionen entwickelt. Du erkennst weiterhin, ob sich die Temperatur beim Öffnen der Fenster verändert oder ob du anderweitig gegensteuern musst.

Diese Diagramme lassen sich am besten erstellen, indem du diese Aufgabe an deine Zentrale im Smart Home auslagerst. Sie bildet den Knotenpunkt zwischen allen einzelnen Komponenten und verfügt über alle wichtigen Informationen, die für die Erstellung benötigt werden. Dazu gehören der Zeitpunkt, Wert und die Komponente, an der die Daten erfasst wurden. Durch den Zeitpunkt lässt sich ein Wert in einen Zeitstrahl einordnen, während die Übermittlung der Komponente eine Kategorisierung bzw. Gruppierung ermöglicht.

Wofür der Wert benötigt wird, ist hoffentlich selbsterklärend … 😉

Ein weiterer Vorteil beim Einsatz der Zentrale besteht darin, dass diese ohnehin rund um die Uhr verfügbar ist und die Arbeit daher über den Tag verteilt erledigen kann. Ein zusätzliches Gerät würde einem der ungeschriebenen Grundgedanken von Smart Home widersprechen (Stichpunkt Energieoptimierung).

Liniendiagramme auswerten

Beim Auswerten von Liniendiagrammen – auch im Smart Home – gibt es einen wichtigen Punkt zu beachten.

Trotz immer genauerer und besser werdenden Technik, kann es jederzeit zu Messfehlern kommen. Bei ausreichend vielen Werten, fallen diese Messfehler weniger ins Gewicht, als bei einem geringen Datenbestand. Dies wirkt sich auch auf den durchschnittlichen Mittelwert aus, wenn es beispielsweise um die Temperatur geht.

Aus diesem Grund solltest du immer eine größere Zeitspanne abwarten, bevor du dir aus deinem Datensatz einen Mittelwert bildest – oder ein Bild machst. Hilfreich ist hierbei im Übrigen die Verwendung einer Ausgleichslinie, die gewissermaßen den Mittelwert symbolisiert. Die Abweichung von diesem Mittelwert wird fachlich als Streuung bezeichnet, wobei dies im Smart Home wohl eher von kleinerer Bedeutung sein dürfte.

Openhab liefert die Tools

Smart Home Daten

Quelle: eigene OpenHab-Instanz

Über Openhab hast du – sofern du meinen Blog bereits besucht hast – sicherlich schon öfter gehört. Dieses System ist in meinen Augen das Schweizer Taschenmesser im Bereich Smart Home, insbesondere wenn es um Open Source Software geht.

Mit Openhab kannst du nicht nur Daten anzeigen lassen, Knöpfe drücken oder dich der Einrichtung erfreuen, du kannst Daten auch auswerten lassen. Neben Regeln und daraus resultierenden Aktionen lassen sich Grafiken erstellen. Genauer gesagt lassen sich wunderbare Liniendiagramme generieren, die dir eine Übersicht über den Datenbestand eines Aktors oder mehreren Aktoren liefert. Das System nimmt hierfür die Daten auf Befehl entgegen, speichert diese in einer Datenbank ab und ruft sie zur Auswertung wieder auf. Man nennt das Ganze OpenHab Charts.

Doch das Besondere hierbei ist, dass sich die Größe der Daten (meist in Megabyte) nicht kontinuierlich erweitert, wie man annehmen könnte. Die Entwickler von Openhab setzen hierbei auf eine rrd4j-Persistierung, welche unter anderem für eine Verdichtung der Daten sorgt.

Puh, ganz schön kompliziert oder?

rrd4j, Verdichtung, Round Robin und Ringpuffer

Lass es mich versuchen, in einem Exkurs in die Informatik, zu erklären …

rrd4j (mehr über rrd4j Persistence) ist ein System, das für die Speicherung (Logging) und Visualisierung (Graphing) von Daten zuständig ist. Es macht sich dabei das Round-Robin-Verfahren zunutze, welches für die Zuordnung begrenzter Ressourcen für viele Prozesse verantwortlich ist. Das Round-Robin-Verfahren kommt dabei allerdings nicht nur bei der Speicherung (Persistence) von Daten zum Einsatz, sondern kann auch der Lastverteilung (Load-Balancing) dienen.

Wie kann es nun sein, dass die Datenbank nicht kontinuierlich größer wird?

Ganz einfach! Eine Verdichtung sorgt dafür, dass die Datenbank immer bei einer bestimmten Größe gehalten werden kann. Das bedeutet, dass Daten aus der Vergangenheit zusammengefasst werden. Du kannst dir das vorstellen, wie wenn du Daten aus der Vergangenheit zusammenrechnest und daraus einen Mittelwert bildest.

Angenommen du misst Temperaturen über ein Jahr. Dann hast du zu Beginn pro Tag mehrere Datensätze. Nach einem Tag fasst du die Daten zu einem durchschnittlichen Tageswert zusammen. Am Ende einer Woche zu einem durchschnittlichen Wochenwert. Und am Ende eines Monats gegebenenfalls zu einem Monatswert.

Dadurch sparst du dir Speicherplatz und kannst dennoch in die Vergangenheit schauen.

Läuft der Speicher eines Tages trotz all diesen Mechanismen voll, kommt der Ringpuffer zum Einsatz. Dabei werden alte Daten überschrieben. Ringpuffer heißt er deshalb, weil man ihn sich als einen Kreis vorstellen kann, der nach und nach aufgefüllt wird. Ist der Kreis eines Tages voll, überschreibt man von Beginn an die Daten.

Gar nicht so kompliziert wie gedacht, oder? 😉

Daten visualisieren mit Openhab

Doch nun haben wir genug zur Theorie. Du möchtest sicherlich endlich loslegen.

Kann ich verstehen … Daher legen wir jetzt sofort los!

Die Installation

Was du für die Visualisierung brauchst, ist das Paket rrd4j. Dieses installierst du dir mit folgendem Befehl:

sudo apt-get install openhab-addon-persistence-rrd4j

Die Einrichtung

Nachdem die Installation abgeschlossen ist, kannst du auch direkt loslegen. Zuerst überlegst du dir, welche Items du nutzen möchtest, um sie grafisch aufzuwerten bzw. auszuwerten. Ich für meinen Teil habe mich für die Temperatur sowie den Energieverbrauch entschieden, wobei ich dir jetzt hier die Einrichtung nur an einem der Beispiele zeigen möchte. Ich widme mich ganz der Temperatur, denn ich denke, dass diese für die meisten Personen am interessantesten sein wird.

Navigiere auf deinem Raspberry Pi in den Ordner

/etc/openhab2/persistence

Hier findest du alle Konfigurationsdateien, welche die Einstellungen zur Speicherung deiner Daten beinhalten. Hier legst du nun auch eine neue Datei an. Du kannst sie nennen wie du möchtest, allerdings muss sie die Dateiendung .persist haben. Nur so kann Openhab automatisch erkennen, dass es sich um eine entsprechende Konfigurationsdatei handelt, die das System auswerten muss.

Schreibe nun in deine neue Konfigurationsdatei folgenden Inhalt hinein:

Strategies {
        everyMinute : "0 * * * * ?"
        default = everyChange
}

Items {
        tmpwhg : strategy = everyUpdate, everyMinute, restoreOnStartup
        humwhg : strategy = everyUpdate, everyMinute, restoreOnStartup
}

Der Bereich Strategies umfasst alle Konfigurationen rund um die Speicherung an sich. Beispielsweise ist hier in meinem Beispiel eine Variable angelegt, die sich everyMinute nennt. So muss ich nicht in jedem Item diesen Text aus Zahlen, Sternchen und Fragezeichen erneut abtippen. (Das sorgt auch für eine höhere Fehlerfreiheit)

Im Bereich Items kannst du festlegen, welche Items persistiert, also gespeichert werden sollen. Hier habe ich mich für die Luftfeuchtigkeit und die Temperatur eines DHT11-Sensors entschieden.

Dazu habe ich den Namen des Items (oder der Gruppe – das funktioniert auch) angegeben und definiere nun nach dem Doppelpunkt alle wichtigen Eigenschaften für dieses Item. Beispielsweise sage ich Openhab, dass die Strategie besagen soll, dass nach jedem Update des Items (neue Werte treffen ein) und jede Minute der Wert des Items gespeichert werden soll.

Die Eigenschaft restoreOnStartup hingegen besagt, dass die Werte nach dem Neustart von Openhab wiederhergestellt werden sollen. Andernfalls wäre deine Ansicht nach dem Neustart des Systems leer und würde erst einmal nichts mehr anzeigen.

So kannst du nun für jedes deiner Items – sofern es einen Sinn ergibt – die Persistierung nutzen, um vergangene Werte visuell schnell erfassen zu können und daraus deine Ableitungen über dein Verhalten und das Verhalten deines Zuhauses ziehen zu können.

Die Datenvisualisierung anzeigen

Im letzten Abschnitt hast du die Einrichtung vollzogen, so dass deine Openhab-Instanz Daten speichert und du später darauf zurückgreifen kannst.

Nun erkläre ich dir noch, wie du diese Daten in deine Sitemap einbaust, so dass du auf all deinen Geräten auf die Auswertungen zugreifen kannst. Hierfür benötigst du den Namen des Items und schon kann es losgehen!

Der Code zur Einbindung ist denkbar einfach:

Switch item=PeriodHum label="Zeiteinheit" icon="time" mappings=[0="Stunde", 1="Tag", 2="Woche", 3="Jahr"]
Chart item=humwhg period=h refresh=7200 visibility=[PeriodHum==0, PeriodHum=="Uninitialized"]
Chart item=humwhg period=D refresh=14400 visibility=[PeriodHum==1]
Chart item=humwhg period=W refresh=14400 visibility=[PeriodHum==2]
Chart item=humwhg period=Y refresh=14400 visibility=[PeriodHum==3]

Mit Sicherheit stellst du dir nun an dieser Stelle die Frage, wieso das Item direkt vier Mal definiert wurde. Hintergrund ist der, dass ich gerne meine Daten in unterschiedlichen Zeitintervallen ansehen möchte. Zum einen habe ich die Darstellung pro Stunde, zum anderen pro Jahr. Dazwischen gibt es auch noch die Zwischenschritte Tag und Woche.

Datenvisualisierung mit Openhab

Quelle: eigene Openhab-Instanz

Je nachdem, welchen Button ich nun in der Sitemap auswähle, werden die Daten entsprechend angezeigt und ich habe so die Möglichkeit, meine Daten über einen längeren Zeitraum im Auge zu behalten.

Die Variable PeriodHum speichert den Wert des Buttons, welchen ich ausgewählt habe und durch die Eigenschaft visibility, wird die richtige Grafik angezeigt. Das bedeutet, dass eigentlich in deiner Sitemap alle Grafiken enthalten sind, durch eine Plausibilitätsprüfung wird allerdings die Sichtbarkeit festgelegt. Entspricht PeriodHum nun dem Wert 1, lautet das Ergebnis der Prüfung der Sichtbarkeit für den Tag true und beim Rest false.

Was du in diesem Beitrag gelernt hast

Dieser Beitrag steckte voller Informationen aus unterschiedlichen Bereichen.

Begonnen haben wir bei der Farbenlehre, gingen weiter zur Statistik, haben einen Exkurs in die Informatik gewagt und schlussendlich die Einrichtung der Diagramme in Openhab gemeistert.

Wie du siehst gilt also nicht umsonst, dass die Informatik stark an die Mathematik angelehnt ist. Theorien wie das Round-Robin-Verfahren, aber auch die Erstellung von Diagrammen beinhalten mathematische Modelle. Diagramme beinhalten dabei allerdings zusätzlich noch die Statistik, wobei diese schon (zumindest in meinen Augen) als ein Teil der Mathematik angesehen werden kann.

Du brauchst dir jedoch keine Sorgen zu machen, als Endanwender von Software wirst du niemals in Berührung mit solchen Dingen kommen. Jeder Software Engineer und jeder User Interface Designer hat keinerlei Interesse daran, dich hinter die Kulissen blicken zu lassen. Zum einen wäre dies für viele ein Grund die Technik abzulehnen und zum anderen wirkt die Komplexität eher unattraktiv.

Wenn du allerdings mehr über diese Themen erfahren möchtest, bietet dir dieser Beitrag eine gute Grundlage für eigenständige Nachforschungen und als ein Einstieg in die Speicherung von Daten innerhalb des Systems Openhab.

Außerdem bist du nun einen Schritt weiter in der Einrichtung deines wirklich cleveren Zuhauses und kannst dir automatisch Grafiken erstellen lassen, welche später auf deinem Control Panel zu sehen sind. Das alles, dank der Datenvisualisierung, die Openhab schon von Haus aus mitliefert. Wahnsinn, oder?

Das könnte Dich auch interessieren …

1 Antwort

  1. 19. September 2018

    […] Beitrag Datenvisualisierung mit Openhab erkläre ich dir, wie du in deinem Smart Home Statistiken einrichten kannst und das mit nur wenigen […]

Schreibe einen Kommentar

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

Translate »