ioBroker History – Verlaufsdaten
Täglich fallen im Smart Home Unmengen an Daten an, die alle nur darauf warten, ausgewertet zu werden. In vielen Fällen passiert das in Echtzeit und die Daten geraten beim nächsten Aktualisieren schon wieder in Vergessenheit. Um das zu verhindern, suchen viele im Netz nach ioBroker History.
Das Konstrukt ist dabei ziemlich charmant. Denn es werden Zustände von den jeweiligen Datenpunkten gespeichert und stehen so auch zu einem späteren Zeitpunkt noch zur Verfügung. Hierzu werden die Daten auf dem jeweiligen Speicher abgelegt und können über Skripte wieder aufgerufen oder einfach nur angezeigt werden.
Praktische Beispiele gibt es dafür einige. Ich zum Beispiel habe diese Funktionalität dazu genutzt, um meine Lampen bei einem Wechsel wieder zurück in den eigentlichen Zustand zu versetzen. Das hat zwar in den letzten Tagen nicht ganz so gut geklappt, scheint aber eher an einem Fehler in meiner Logik zu liegen. Man kann die Funktionalität jedoch auch dazu nutzen, um zum Beispiel Verlaufsdaten verfügbar zu haben, um ein spezielles Verhalten im Smart Home mit ioBroker näher zu untersuchen.
Wie bei so vielen anderen Dingen, sind der Fantasie hierbei wieder einmal kaum Grenzen gesetzt. Wenn du also eine spannende Idee für den Einsatz hast, dann schreib es gerne mal unten in die Kommentare. Vielleicht finden wir so noch ein paar interessante Anwendungsfälle.
ioBroker History Adapter einrichten
Bevor du natürlich mit dem ioBroker History Adapter durchstarten kannst, musst du ihn erstmal installieren und entsprechend einrichten. Die Installation erfolgt dabei wie gewohnt über den Menüpunkt Adapter. Dort suchst du ganz einfach nach History und findest auch ziemlich schnell den korrekten Adapter.
In den Speichereinstellungen hast du dann die Möglichkeit, ein spezielles Verzeichnis festzulegen. In dieses Verzeichnis werden die jeweiligen Daten dann gespeichert. Solltest du an dieser Stelle nichts eingeben, verwendet der Adapter sein Standardverzeichnis. Denn die Speicherung der Daten über den ioBroker History Adapter erfolgt über Dateien auf deinem Dateisystem. Also auf der Festplatte.
Ich habe in meinem Fall alle drei Einstellungsmöglichkeiten aktiviert und mich für das Standardverzeichnis entschieden, da meine Festplatte für den ioBroker entsprechend ausreichend dimensioniert ist. Zumindest scheinen die 100 GB meiner virtuellen Festplatte in meiner Proxmox-Umgebung auszureichen.
Unter den Standardeinstellungen hast du außerdem noch die Möglichkeit, unter anderem die Aufbewahrungsdauer einzustellen. Das halte ich persönlich für eine der besten Einstellungsmöglichkeiten, da du so auch den Speicherbedarf ein wenig regulieren kannst. Zumal einige Daten über die Zeit hinweg irgendwann irrelevant wären und das System sich so selbst bereinigen kann.
ioBroker History Speicherort ändern
Den Speicherort für die Dateien zu ändern ist immer wieder ein Anliegen für diverse Internetrecherchen.
Standardmäßig (also wenn du die Einstellung nicht anpasst) werden die Daten im Verzeichnis /opt/iobroker/iobroker-data/history gespeichert. Der Ordner wird dabei automatisch angelegt, sofern er bislang noch nicht besteht. Beachten musst du hierbei, dass du den Ordner zwar ändern kannst, du aber niemals den Ordner node_modules angeben darfst. Das hat damit zutun, dass dieser Ordner für die Paketverwaltung von ioBroker genutzt wird (um es ganz kurz runter zu brechen).
Du kannst jedoch relative oder absolute Verzeichnisse eingeben und so den Speicherort für die Daten verändern. Das macht zum Beispiel in einem solchen Szenario Sinn, in dem du eine zweite Festplatte für diese Daten nutzen willst. Du könntest die Daten somit auch direkt auf ein Netzlaufwerk (z. B. ein NAS) sichern, nachdem du es in deine Umgebung eingebunden hast.
Nähere Informationen dazu findest du in der Dokumentation des Adapters auf GitHub.
Einschränkungen beachten
Ohne dass darauf näher eingegangen wird, empfehlen die Entwickler für größere Datenmengen eine richtige Datenbank. Eine solche richtige Datenbank kann zum Beispiel eine SQL-Datenbank wie MySQL oder PostgreSQL sein. Dass du dabei keinen Datenverlust erleidest, kannst du die Daten über Converter in die entsprechende Form bringen und so in die neue Datenbank importieren.
Hintergrund des Ganzen dürfte vermutlich sein, dass eine Verwaltung von Datensätzen über den History-Adapter in großen Mengen nicht sehr vorteilhaft ist. Denn richtige Datenbanken haben ein viel effizienteres Management für Daten und stellen auch entsprechende Funktionen für das Abfragen bereit. Aus genau diesem Grund werden sie auch in der Praxis von Unternehmen für die Datenverwaltung eingesetzt. Denn dort arbeitet (hoffentlich) niemand mit vielen kleinen Textdateien, die irgendwo auf einem Speicher liegen. Auch wenn mich das nicht wundern würde.
Doch zurück zum Thema.
Es ist nun wesentlich effizienter und einfacher, wenn eine Datenbank bereits wichtige Funktionen für das Verarbeiten und Abrufen von Daten mitliefert. Hierdurch kann man größere Datenmengen verarbeiten, ohne dass es dabei zu langen Zugriffszeiten und komplexen Verarbeitungsmechanismen kommt. Und auch für Entwickler ist es wesentlich komfortabler, auf bereits vorhandenen Funktionen aufzubauen, solange sie für das vorliegende Beispiel auch geeignet sind.
Mehr Informationen zum Konvertieren von Daten findest du auch in der offiziellen Dokumentation des Adapters.
ioBroker History Daten speichern
Nachdem du nun also die Grundeinrichtung für den History Adapter vorgenommen hast, musst du auch entscheiden, für welche Datenpunkte du eine Speicherung wünschst. Dazu musst du wissen, dass du jeden einzelnen Datenpunkt extra konfigurieren musst, damit er seine Daten speichert. Das beugt im System dem wahllosen Speichern von Daten vor und vermeidet so vor allem Datenmüll.
Im Grund ist die Einrichtung der Speicherung auch sehr simpel und verständlich gestaltet. Zuerst suchst du dir den gewünschten Datenpunkt heraus. Danach klickst du auf der rechten Seite auf das Einstellungsrädchen und kannst dann die gewünschte Speicherung festlegen.
An dieser Stelle hast du dann auch nochmal die Möglichkeit, die jeweiligen Standardeinstellungen zu überschreiben und individuelle Einstellungen für den jeweiligen Datenpunkt und dessen Daten festzulegen. Unter anderem kannst du dort auch festlegen, dass die Speicherung für eine andere Zeitdauer erfolgen soll und ob leere Werte (ignoriere 0 oder Nullwerte) gespeichert werden sollen.
Nachdem du das festgelegt und gespeichert hast, ist die Speicherung für diesen Datenpunkt auch schon fertig eingerichtet.
ioBroker History Daten auswerten
Um nun auf deine gespeicherten Daten zuzugreifen hast du grundsätzlich mehrere Möglichkeiten. Wichtig ist dabei zu unterscheiden, wie der Zugriff erfolgen soll. Möchtest du einfach einen Blick auf deine Daten werfen, so kannst du ganz bequem im Objektbaum auf den entsprechenden Menüpunkt klicken. Willst du hingegen die Daten in einem Skript auswerten, dann wird es schon etwas komplizierter.
Sehr angenehm an der Lösung mit der ioBroker History ist ja, dass du komplette Automationen um die Logik herum bauen kannst. So hast du die Möglichkeit, in Blockly (Beispiele für Blockly) einen entsprechenden Block zu verwenden, um auf deine Daten zuzugreifen. Dadurch kannst du wiederum deine Automationen nicht nur auf Basis von aktuellen Daten ausführen, sondern auch auf Altdaten. Oder um es richtig auszudrücken, du kannst die Daten zumindest in deinen Automationen verwenden.
Eine wirklich effiziente Auswertung von Daten wird allerdings mit der ioBroker History nur eingeschränkt möglich sein. Das liegt einfach daran, dass die Daten sehr rudimentär dargestellt werden und auch nur bedingt miteinander verknüpft sind. Im Grunde besteht die einzige wirklich Verknüpfung darin, dass du die Daten in mehreren Tabs miteinander vergleichst.
Aus diesem Grund greifen viele Menschen (mich eingeschlossen) gerne auf Grafana und eine SQL-Lösung zurück.
History vs Grafana
So wirklich korrekt ist es eigentlich gar nicht, die zwei Methoden als etwas völlig anderes hinzustellen. Denn im Kern erfüllen beide die gleichen Aufgaben. Sie unterscheiden sich jedoch in der Art und Weise wie sie das tun.
Eine Lösung mit Grafana baut auf einer eigenständigen Datenbank auf. Das ist in vielen Fällen eine SQL-Datenbank (meist MySQL), in der die Daten von deinem Smart Home gespeichert werden. Grafana kann dann wiederum auf diese Datenbank zugreifen und die Daten entsprechend visualisieren. Dabei kannst du Daten per Abfrage untereinander kombinieren und dir dein eigenes und individuelles Dashboard für deine Auswertung bauen.
Die Auswertung über den ioBroker History Adapter erfolgt hingegen in ioBroker selbst und stellt dir im Grunde nur eine visuelle Ansicht der Daten zur Verfügung. Eine Kombination ist hier nicht möglich und auch nicht Aufgabe der so grundlegenden Speicherung von Daten. Das bedeutet damit im Kern, dass du bei der History-Variante eine eher rudimentäre Lösung bekommst, während andere Lösungen etwas ausgefeilter sind.
Wann History? Wann Datenbank?
Beim Lesen des Artikels kann nun schnell die Frage aufkommen, wann denn nun welche Lösung zu präferieren ist. Und die Antwort darauf ist wie in so vielen Fällen in der IT: Es kommt darauf an.
Gleichzeitig bedeutet das, dass du auch hier wieder die individuellen Gegebenheiten in Betracht ziehen musst. Während du den ioBroker History Adapter genau dann einsetzen kannst, wenn es dir um die Aufzeichnung und rudimentäre Auswertung geht, solltest du in anderen Fällen zu einer richtigen Datenbank greifen.
Diese anderen Fälle können sein, wenn du zum Beispiel von weiteren Systemen auf diese Daten zugreifen willst. Oder du eine wirklich detaillierte Auswertung deiner Daten erstellen willst. Genauso gibt es da draußen Menschen, die ihre Daten in anderen System verwenden oder sie vielleicht auch für ChatGPT exportieren wollen. Zwar kannst du auch mit dem History Adapter einen Export machen, über eine eigene Datenbank kannst du den Export jedoch noch etwas spezieller anpassen.
Das führt im Grunde genommen also dazu, dass du für umfangreichere Projekte immer auf eine richtige Datenbank zurückgreifst. Für kleinere Auswertungen oder Visualisierungen kannst du jedoch auch jederzeit den History Adapter verwenden. Denn er erledigt seine Arbeit wirklich sehr zuverlässig und gut.
Kurzer MySQL-Exkurs
Wenn wir von Datenspeicherung reden, taucht in vielen Foren und in diversen Blogs immer wieder der Name MySQL auf. Das hat dabei meist einen ganz elementaren und wichtigen Grund.
MySQL ist eine Datenbank, welche kostenlos einsetzbar ist. Das bedeutet, dass du dir deinen eigenen Datenbankserver erstellen kannst, welcher keinerlei Lizenzkosten verursacht und dennoch so einen Standard darstellt, dass er auch von größeren Unternehmen eingesetzt wird. Damit hast du wiederum den Vorteil, dass du auf eine bewährte Lösung setzen kannst, die sogar in kleineren Projekten in Betracht gezogen werden kann.
Andere Lösungen, wie zum Beispiel von Microsoft, verursachen hingegen Lizenzkosten. Und diese Kosten fallen gar nicht mal so gering aus. Damit disqualifiziert sich so manch andere Lösung gerade im Smart Home, da sie in keinerlei Kosten-/Nutzenverhältnis steht.
Es gibt jedoch auch Enthusiasten da draußen, die auf eine solche kommerzielle Lösung zurückgreifen. Zum Beispiel weil sie noch eine Studentenlizenz haben oder über ihren Job günstiger an derartige Lizenzen kommen. Lass dir jedoch keinen Bären aufbinden und dir einreden, dass diese Lösungen immer besser sind als MySQL. Das mag vielleicht auf manche Funktionen zutreffen, aber pauschal ist die Aussage nicht korrekt.
0 Kommentare