Infos für Technik-Nerds ;)

Wie wurde dieses Projekt umgesetzt?

Dieser Beitrag soll für alle Technik-Interessierten näher beleuchten, wie die Daten aus dem Musterhaus gewonnen werden.

Dies war für mich die wohl größte Herausforderung. Schließlich gibt es da nichts Fertiges von der Stange, was man einfach installiert und dann läuft es. Dennoch musste ich schon zum Beginn der Renovierungsarbeiten am Haus wissen, wie ich es am besten umsetzen könnte, um notwendige Installationen direkt so vorsehen zu können.

Bei Allem galt als Grundsatz: es muss nach Möglichkeit vollautomatisch laufen, damit ich keinerlei Arbeit mit der Aufbereitung der Daten habe.

Von Anfang an stand für mich fest, dass ich so viel wie möglich im Haus über HomeMatic Komponenten umsetzen wollte. HomeMatic ist ein Hausautomationssystem, dass es schon längere Zeit am Markt gibt, viele unterschiedliche Komponenten bietet, ständig weiter entwickelt wird, eine große Community hat und sehr offen auch zu anderen Systemen hin ist.

Da die Thermostate aus dem HomeMatic System zum Einsatz kommen sollten, lag es also auf der Hand, die von den Thermostaten gemessenen Temperaturen direkt für dieses Projekt zu nutzen. Mit der HomeMatic CCU2 besteht bereits die Möglichkeit, die gemessenen Daten auf der Zentrale zu speichern und innerhalb der Benutzeroberfläche grafisch aufbereitet anzuschauen. Ich bin dennoch einen kleinen Umweg gegangen, weil ich scheinbar nicht ohne weiteres an diese Daten auf der Zentrale ran komme. Offenbar werden die Daten in einem Format gespeichert, dass ich nicht auslesen konnte. Daher habe ich ein kleinen Zusatzprogramm auf der CCU2 installiert: CuxD.

CuxD kann sehr viel mehr, als nur Daten aufzuzeichnen, aber das ist ein anderes Thema. In CuxD gibt man die Seriennummern inkl. der Kanäle an von den Daten, die man aufzeichnen will. CuxD speichert diese Daten als CSV in einem festen Ordner auf der Zentrale und der Dateiname beinhaltet das Datum.

So komme ich also an die Temperaturen. Damit das nun automatisch läuft, habe ich ein PHP Skript geschrieben, dass auf meinem Server zu Hause läuft. Dabei handelt es sich um ein NAS, dass einfach einen Webserver bereit stellt, auf dem das PHP Skript läuft. Über einen Cronjob werden einmal am Tag die aktuellen Daten des Vortages ausgelesen.

Das eigentliche Ziel des Projektes war es jedoch aufzuzeigen, wie viel Strom Infrarotheizungen denn nun tatsächlich verbrauchen, wenn sie als vollwertiges Heizsystem eingesetzt werden. Da sind die Raumtemperaturen zwar schön zu wissen, aber nichtmal die halbe Miete… Mit HomeMatic kam ich an dieser Stelle nicht weiter. Zwar gibt es einen Zwischenstecker mit Leistungsmessung, aber der ist völlig ungeeignet, da die Heizungen ja fest verkabelt werden müssen. Müssen deshalb, weil ich Heizungen über einen zweiten Zähler laufen, und somit über einen eigenen Tarif abgerechnet werden.

Die Lösung des Problems ist folgende: Jeder Raum im Haus hat im Sicherungskasten seinen eigenen Zwischenzähler für die Hutschiene bekommen. Diese bekommt man schon für unter 20 Euro überall zu kaufen. Wichtig ist nur, dass der Zwischenzähler eine S0-Schnittstelle hat!

Nun laufen also alle Heizungen in einem Raum über einen eigenen Zähler, so dass ich auf jedem Zähler immer sehen kann, was aktuell an Strom durch läuft und was bisher insgesamt an Strom verbraucht wurde. Um diese Verbräuche nun automatisch aufzuzeichnen brauche ich die S0-Schnittstelle des Zählers. Vereinfacht gesagt funktioniert das wie folgt: wird Strom verbraucht, läuft über die Schnittstelle ein Impuls. Z.B. könnten so 1.000 Impulse einen Verbrauch von 1 kWh bedeuten. Je schneller die Impulse kommen, desto höher ist der aktuelle Verbrauch. Ähnlich der alten Ferraris-Scheibe in den Drehstromzählern: je schneller die Scheibe sich dreht, desto höher ist der aktuelle Verbrauch und sobald eine gewisse Anzahl an Umdrehungen absolviert ist, habe ich 1 kWh Strom verbraucht.

Um diese Impulse an der S0-Schnittstelle auslesen zu können brauchte ich noch einen Datenlogger. Gefunden habe ich den EMI S0 Impuls-Logger mit Webserver, der die Möglichkeit bietet bis zu 9 Schnittstellen gleichzeitig aufzuzeichnen. Die so gemessenen Daten speichert der Logger in einer Datei in einem festen Ordner auf den ich wieder mit meinem PHP Skript automatisch zugreifen kann, um die gespeicherten Daten auszulesen.

Nun habe ich also die Temperaturen der Räume, die Außentemperatur und den Verbrauch eines Tages automatisiert ausgelesen und lasse diese Daten von meinem kleinen Server zu Hause per FTP auf den Server bei meinem Webhoster schreiben. Auch hier läuft wieder ein Cronjob, der kurze Zeit später automatisch schaut, ob eine neue Datei angelegt wurde, diese Datei ausliest und die Daten dann in eine SQL-Datenbank schreibt. Aus dieser SQL Datenbank werden nun die Daten ausgelesen, wann immer ein Besucher der Seite diese Daten abruft. Damit dies so performant wie möglich läuft, werden die Daten per JavaScript angefordert, per JSON übermittelt und dann mit der Dygraph, einem Skript für die visuelle Darstellung von großen Datenmengen angezeigt.