Linux-Projekte für den Raspberry Pi
(in Python realisiert)
Temperaturwerte der HomeMatic



Seit etlichen Jahren ist bei mir zur Hausautomatisierung die HomeMatic von ELV / eQ-3 installiert (zuerst die CCU1, jetzt die CCU2). Damit werden unter anderem...

  • alle Lichter geschaltet

  • die Rolläden, gesteuert

  • die Heizung geregelt

  • die Rauchmelder überwacht

  • überwacht, ob im Keller Wasser eingedrungen ist

  • die Warmwasser-Kreislaufpumpe gesteuert

  • Fenster geöffnet/ geschlossen

  • angezeigt, ob die Garage geöffnet/ geschlossen ist

  • abhängig von den Außentemperaturen Elektro-Heizkörper zu- oder abgeschaltet

  • . und und und.

Bildquelle: eQ-3/ Homematic




Bildquelle: eQ-3/ Homematic

Da sich nun in jedem Raum elektronische Thermostate befinden, die die Heizkörperventile regeln, kann ich über das lokale Netzwerk per WEB-Browser auf alle Temperaturwerte zugreifen und mir anzeigen lassen.
Zunächst geht das nur einzeln pro Raum oder Gerät.


Bildquelle: eQ-3/ Homematic

Es ist jedoch auch möglich, Favoriten (Gruppen) zusammenzustellen.
So habe ich mir eine Favoritengruppe mit allen Temperaturwerten erstellt. Damit habe ich sofort alle wichtigen Werte im Überblick.


Bildquelle: eQ-3/ Homematic

In der HomeMatic (NUR CCU2!) besteht außerdem die Möglichkeit Grafiken erzeugen zu lassen, die auf einer internen SD-Karte gespeichert werden. Dabei handelt es sich aber um ein spezielles Round Robin-Format (rrd), das ich noch nicht entschlüsseln konnte.


Das ganze hat jedoch wieder den Nachteil, daß ich immer einen Rechner 'anwerfen' muß, um auf die Werte zugreifen zu können. Der Prozessor der HomeMatic ist etwas 'schwach auf der Brust' (er muß ja eigentlich auch nicht viel können). Wenn er, ich nenn' es mal 'im Leerlauf' ist, ist die Prozessorlast bereits so um die 30%. Hin und wieder, wenn Gerätedaten gespeichert oder gelesen werden oder das WEB-UI bedient wird, geht diese auch schon mal auf 60/ 70 % hoch oder darüber hinaus. Ein simples Abmelden von der Weboberfläche dauert da schon mal ein paar Minuten. Da ich dies vermeiden wollte, habe ich ein System entwickelt, das die Werte von der HomeMatic 'abholt' und auf einem LC-Display auf dem Raspberry anzeigt.

Das Ganze war allerdings nicht ganz so einfach wie ich dachte. Zuerst mußten die Temperaturen, die in der HomeMatic nur als aktuelle Einzelwerte vorlagen, dort in Abfolge gespeichert werden.
In der WEB-Oberfläche der HomeMatic können Programme erstellt werden, die Aufgaben bei bestimmten Ereignissen oder zu definierten Zeitpunkten ausführen. Als Vorbereitung wurden zunächst manuell alle Thermostate in einer Gruppe, dem sogenannten Gewerk (TempLog), zusammengefasst. Dann ging es daran das HomeMatic-Programm zu erstellen.

Als erstes wurde die Bedingung definiert. Hier habe ich ausgewählt, daß das Programm alle 10 Minuten laufen soll (die Thermostate liefern ca. alle 6 Minuten neue Werte, aber nicht alle gleichzeitig. Daher habe ich diesen Kompromiß gewählt). Nun fragt ein Script (mit dem man auf die Logikschicht zugreifen kann) alle 10 Minuten die Temperatur aller Geräte ab, die sich im Gewerk 'TempLog' befinden. Anschließend werden diese Daten aufbereitet und mit einem Zeitstempel versehen in der HomeMatic auf einen USB-Stick abgespeichert, den ich dafür extra manuell in das Betriebssystem eingebunden (mount) hatte.



Bildquelle: eQ-3/ Homematic

So sieht das HomeMatic-Programm aus.


HssArt = item.HssType();
if ((HssArt.Substr(0,7) == "WEATHER") & (HssArt.Find("RECEIVER") < 0))
{Temp ="";
Feucht="";
foreach(itemID, item.ChnRoom())
{
raum = dom.GetObject(itemID).Name();
}


Und hier ein Teil des darin ausgeführten Scriptes


AusText = AusText + vDatum + " " + vZeit + ";" +raum + ";" + Temp + ";" + Feucht + "\n";}}
AusText = AusText.Substr(0, AusText.Length()-1);
!WriteLine("Dateitext:");
!WriteLine(AusText);
AusText = "\"" + AusText + "\"";
system.Exec("sh -c 'echo " + AusText + ">>" + pfad + "temp" + dDat + "'" , &out, &err);

Die Daten werden dann durch diesen Sriptteil gespeichert



Das komplette Script befindet sich ____HIER____