4314 Zeichen
Score aktualisiert
100%
Code: 8225c4f366844ad1820817dfd79c4b28
Token in Entwicklung nicht aktualisiert
img-Tag in Entwicklung deaktiviert
Es gibt mittlerweile sehr viele Möglichkeiten, HomeMatic-Daten in Datenbanken zu
speichern. Bei einigen Lösungen erfolgt die Speicherung auf der CCU selbst, bei anderen
extern, manches geht per Push und anderes – wie mein altes Add-on DB-Access – muss regelmäßig die
Daten absaugen.
Benennung von Systemvariablen
Prinzipiell kann man Systemvariablen – so wie allen Objekten in der CCU – beliebige
Namen geben, also z. B. auch Umlaute und Sonderzeichen verwenden. Ich empfehle jedoch,
sich auf reguläre Buchstaben (a-z, A-Z) zu beschränken: Bei Umlauten und Sonderzeichen
besteht die Gefahr, dass Systemvariablen in Scripten nicht überall gefunden werden.
Das Problem
Bei einem Freund, dem ich meine alte CCU 1 angedreht habe, stand ich nun vor folgendem
Problem: Die Verbrauchsdaten seiner damals neuen Warmwasser-Wärmepumpe sollten
protokolliert werden, um Fehlfunktionen zu identifizieren.
Für die Erfassung des Momentanverbrauchs bot sich ein HomeMatic Funk-Schaltaktor mit
Leistungsmessung HM-ES-PMSw1-Pl an, der von der alten Firmware der CCU 1 noch unterstützt
wird. Datenspeicherung auf der Zentrale war allerdings ausgeschlossen – hier mussten wir
eine andere Lösung finden.
Die Lösung
Wenn man nur einen Hammer hat, sieht bekanntlich jedes Problem aus wie ein Nagel.
Der Hammer war in diesem Fall – neben CCU 1 und Schaltaktor – ein vorhandener Webspace
mit PHP- und MySQL-Unterstützung. Der Nagel ist eine kleine Sammlung von PHP-Scripten,
mit denen die CCU ihre Daten in die MySQL-Datenbank schreiben und mit denen man sie
anschließend rudimentär wieder auslesen kann.
Das Paket ist nur ein simpler Einstieg, um auf die Schnelle ein paar Daten zu
speichern. Wer mehr möchte, kann es leicht erweitern – PHP-Kenntnisse vorausgesetzt. Wer
viel mehr möchte, müsste freilich andere Lösungen suchen.
Konzept
Das Konzept ist relativ einfach: Auf dem LAMP-Server gibt es ein PHP-Script, das die
CCU aus HomeMatic-Scripten heraus per wget ansprechen und dort Daten speichern
kann. Weitere PHP-Scripte können im Browser aufgerufen werden, um die protokollierten
Daten auszulesen.
LAMP ist ein gängiges Akronym für „Linux Apache MySQL PHP“ und bechreibt
einen typischen Webserver. Auf dem Server laufen ein paar Scripte, mit denen per URL
Einzelwerte in eine Tabelle einer Datenbank geschrieben werden.
Die Werte werden mit Timestamps versehen. Wird eine Tabelle angegeben, die noch nicht
existiert, so wird sie einfach angelegt.
Dieser Teil ist auf der Seite PHP-Paket für den
Webspace beschrieben.
Auf der CCU laufen ganz normale WebUI-Programme, die per Script die passenden URLs auf
dem LAMP-Server aufrufen und so Daten in die Datenbank schreiben können.
Ich habe es ein wenig abstrahiert, so dass in den jeweiligen Scripten einfach nur Werte
in Systemvariablen geschrieben werden müssen.
Dieses neueste Mini-Framework findet man auf der Seite Daten-Push mit der WebUI.
Auch wenn es theoretisch möglich ist, alles komplett ohne Zusatzsoftware auf der CCU
zu realisieren: Für den Aufruf der PHP-Scripte wird wget auf der CCU gestartet.
Daher empfehle ich hier dringender denn je die Installation des CuX-Daemons.
Wie die CCU reagiert, wenn die PHP-Seiten aus irgendeinem Grunde nicht erreichbar sind,
ist nicht unbedingt vorherzusagen. Mit system.Exec() statt des CuX-Daemons kann
man jedoch fest davon ausgehen, dass die CCU schon im laufenden Betrieb hängen wird, ganz
zu schweigen von der erwartbaren Instabilität nach einiger Laufzeit.
Allgemeine Informationen zu diesem Thema auf der Seite Ersatz für system.Exec().
Bei meinem Freund war passender Webspace bereits vorhanden, deswegen haben wir diesen
einfach genutzt. Man kann aber auch einen eigenen Server betreiben (was ich für die
Entwicklung gemacht habe), kostenlosen Webspace nutzen (für diese Dokumentation greife
ich auf bplaced zurück) oder einen Vertrag bei einem Webhoster abschließen.
Wichtig ist PHP-Unterstützung mit einer MySQL-Datenbank. Anderes wäre sicher machbar,
wenn die hier vorgestellte Lösung entsprechend angepasst wird, aber meine kurze Anleitung
deckt genau diesen einen Anwendungsfall ab.
Datenabruf
Für die ultimative Anwendungserfahrung gibt es noch ein paar weitere Scripte im Paket:
Eine topgeile Index-Seite, auf der eine Kurzanleitung für das Paket steht, und einige
Scripte, um die erfassten Daten abzurufen und anzuzeigen.
Man kann natürlich mit den Daten noch viel mehr machen – graphisch aufbereiten,
statistisch auswerten, überall einbinden … Für das Problem, schnell ein paar Daten zu
sammeln und dann einen Report über den Tagesverbrauch abzurufen oder die Daten als
CSV-Datei in Excel zu importieren reicht die Minimal-Ausstattung aber schon.