|
|
|
|
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____
|