Wir verwenden Cookies um Ihr Benutzer-Erlebnis zu verbessern. Ich bin einverstanden Ich bin nicht einverstanden

Grafana und InfluxDB zur Auswertung statistischer Daten im SmartHome

Geschrieben von Christian Becker in der Kategorie SmartHome


am Sonntag 10 September 2017


mit der Schlagworte , , , , ,


In einem typischen SmartHome Setup fallen eine Vielzahl an statistischen Daten an. Dazu gehören vor allem Informationen, welche sich im Tagesverlauf permanent ändern, wie bspw. Temperatur, Luftfeuchtigkeit, Helligkeit und viele andere mehr.

Mit den Boardmitteln von OpenHAB lassen sich diese Informationen nur schwer visualisieren und auswerten.

 

Ansicht der Daten in der OpenHAB App
Anzeige der Daten in der OpenHAB iPhone App. Visualisiert mit RRD4J

 

Zudem ist bei Verwendung von RRD4J keine Langzeitbetrachtung möglich, da die Daten stärker (verlustbehaftet) komprimiert werden, je älter sie sind. Folglich muss eine Persistenz her, welche mit solchen Datenmengen umgehen kann.

Hierfür bietet sich InfluxDB an. InfluxDB wurde mit dem Ziel entwickelt, sogenannte Time Series Data effizient zu speichern und performant abzurufen. Eine Anbindung an OpenHAB ist dank des InfluxDB Persistence Plugins kinderleicht.

In einer ersten Version habe ich InfluxDB auf einem Server im Internet betrieben. Das hat sich als keine gute Idee herausgestellt, da bei Störung der Internetanbindung nicht nur keine Daten übermittelt werden konnten, sondern OpenHAB teilweise vollständig den Dienst verweigert hat. Um beiden Problemen zu begegnen habe ich meinem Raspberry Pi ein PiDrive spendiert und betreibe InfluxDB nun direkt auf dem Pi. Einzige Einschränkung hierbei: Man sollte aufpassen, keine Queries zu stellen, welche „alle“ TimeSeries über einen größeren Zeitraum liefern sollen. Das überlastet den Pi derart, dass er den Dienst verweigert.

Hat man seine Daten nun in InfluxDB gespeichert, braucht man einen Weg, um diese wieder heraus zu bekommen. Dies lässt sich sehr einfach mit Grafana realisieren. Grafana ist eine Webanwendung, welche dir ein Dashboard zum visualisieren vieler Daten bereitstellt. Mit wenigen Klicks lassen sich Queries erstellen, welche dann in einer schönen Grafik münden. Diese Dashboards lassen sich speichern und so für Analyse oder auch reine Visualisierungszwecke nutzen.

Ansicht der Daten in Grafana
Ansicht der Daten in Grafana

 

Das Erstellen von Queries ist dabei sehr einfach. Man muss nicht einmal die Querysprache von InfluxDB erlernen, sondern kann sich seine Anfrage zusammen klicken.

So sieht die Quere in Grafana aus
Aufbaue einer Query in Grafana

 

Darstellung aggregierter Daten in einem Balkendiagramm
Darstellung aggregierter Daten in einem Balkendiagramm

 


Meta-Blogging - Die Wahl der Blogsoftware

Geschrieben von Christian Becker in der Kategorie Default


am Mittwoch 1 März 2017


mit der Schlagworte , , , ,


Nachdem ich mich entschieden habe, mal wieder ein Blog zu schreiben, unter anderem um meine Erfahrungen mit meiner Hausautomatisierung zu schildern, stand ich vor der Entscheidung, welche Blog Software es zu verwenden gilt. Ich kann schonmal vorweg greifen: Es kam zu einer emotionalen Entscheidung.

Als erstes denken die Meisten wahrscheinlich an Wordpress als DIE Blog-Software schlechthin. Gerade in der täglichen Benutzung bietet Wordpress viele Vorteile, da es komplett auf das erstellen von Blogs optimiert ist. Also Wordpress runter laden, auf den Webserver schieben und Glücklich sein? Vergiss es! Die Installation von Wordpress gestaltete sich deutlich komplizierter als erwartet.
Mein Setup sieht vor, dass Wordpress in einem eigenen Container läuft, zusammen mit einem NGINX und der nötigen DB und dieser Container dann per Reverse Proxy angebunden wird. Dies sollte normalerweise kein Problem darstellen, wenn der Reverse Proxy sauber konfiguriert ist und alle relevanten Informationen wie Domain, Protokoll und Port an den Upstream Server weiter gibt. Das ist aber Wordpress alles scheiß egal. Wordpress geht davon aus, dass es direkt auf dem nach außen hin exponierten Webserver betrieben wird. Wobei: Das stimmt auch nur so halb. Bei der installation geht es nämlich hin und ermittelt den Domain Namen, unter dem es soeben ausgeführt wird und schreibt den hart in die Datenbank. Zu dumm, wenn der Naive Admin die Installationsroutine lokal aufruft und die Domain "blog" lautet... ihr könnt euch denken, dass danach nix mehr geht.
Was mit der Domain "funktioniert", funktioniert aber nicht mit SSL. Hier weigert sich Wordpress, die Informationen des Reverse Proxy zu verwenden und nimmt statt dessen die des Upstream. Interessanterweise führt dies nur zu Problemen im Admin-Backend, welches dann in einer Redirect Loop hängen bleibt. Fixen kann man dies übrigens, dass man in der Konfiguration selbst den Code einträgt, der für das Ermitteln des SSL-Status verantwortlich ist (LINK).
Generell gefällt mir an Wordpress nicht, dass es nicht sauber zwischen Webserver und Applikation trennt. Wobei "nicht sauber" eine scherzhafte Umschreibung von "überhaupt nicht" ist. Normalerweise sollte man die Webserver-Konfiguration für eine PHP-Anwendung 1:1 für eine andere PHP-Anwendung verwenden können. Bei Wordpress ist aber nichts Standard, was zu einer riesigen, schier unüberschaubaren Konfiguration führt. (Zum Vergleich: HIER die Joomla Variante).

Nachdem ich mehrere Stunden (letztlich erfolgreich) damit zugebracht habe, Wordpress zu installieren, stellt ich mir die Frage, ob ich wirklich mein Blog auf Basis einer Software aufbauen möchte, die mir bei der Installation schon den Verstand raubt? Die Antwort war klar: Nein.

Da ich in der Vergangenheit bereits mehrere Nicht-Blog-Projekte mit Joomla umgesetzt habe, habe ich mir testweise ein Joomla aufgesetzt. Installationsaufwand: 15min. Joomla hat zwar den Nachteil, dass es nicht für Blogs optimiert ist und deshalb der Einrichtungsaufwand größer ist, aber wenn es einmal läuft, dann läuft es.