Homematic Sensoren mit Plug-In einlesen
Posted: Mon Mar 25, 2013 10:31 pm
Hallo,
ich möchte hier meinen Weg beschreiben, mit dem ich Daten der Homematic Haussteuerung per Plug-In in Meteohub importiere, speziell die Sensorwerte des OC-3 Kombisensors sowie diverse Temperatur/Feuchtesensoren, z.B. von Thermostatsteuerungen.
Zunächst muss einiges auf der Homematic vorbereitet werden (ftp server installieren, Sensoren in Gewerk zuordnen, HM-Skript und TCL-Skript erstellen), aber dies kann hier nachgelesen werden und soll nicht nochmal wiederholt werden: http://homematic-forum.de/forum/viewtop ... ten#p84420
Das Ergebnis ist eine Textdatei auf der Homematic, in der die jeweils persönlich konfigurierten Sensorwerte in dieser Form vorliegen:
>>Wetter Kombisens;23.03.2013;23:40;2,00;62;false;188,80;5,10;175;67;192;8;6,68
>>Thermostat Wohnzimmer I;23.03.2013;23:40;22,20;32;;;;;;;;
Wetter Kombisens ist der OC3 Sensor mit folgendem Datenaufbau: Name;Datum;Uhrzeit;Temperatur;Feuchte;Status Regenmelder;Regenmenge;Windgeschwindigkeit;Windrichtung;Schwankungsbreite Wind;Sonnenscheindauer;Helligkeit; (der letzte Wert (6,68) ist meine Garagentemperatur, den Wert habe ich mir in dieser Kollation noch mit aufgenommen)
Die Häufigkeit des Updates wird auf der Homematic selbst im entsprechenden Skript entschieden. Gemäß diesem Updateintervall habe ich einen Cronjob auf Meteohub definiert, der per FTP die CSV-Datei von der Homematic abholt.
FTP-Skript:
Nun müssen die ganzen Daten in die vom Plug-In gewünschten Formate umgerechnet werden, geht bestimmt eleganter, aber es funzt:
In meiner x86 Distro unter VM-Ware (auf Win Server 2003) funktioniert die Ausgabe nach STDOUT über printf nur, wenn ich das Shell-Skript manuell starte.
Der Aufruf über das Plug-In hatte das Skript zwar gestartet, aber es wurde kein Sensorwert eingelesen.
Die einzige Lösung, die ich gefunden habe, ist folgender Workaround: die Ausgaben werden in eine Textdatei umgeleitet ("hm_conv_data.txt") und danach von "cat" auf STDOUT geschrieben - komisch, aber immerhin funktioniert es so!
Was ich noch generell sagen wollte: Es ist großartig, daß es eine kostenlose Demoversion von Meteohub gibt, mit der man alles erst testen kann. Ich gabe mir gestern abend dann auch die Lizenz bestellt, aber es war mir wichtig vorher zu sehen, ob alles stabil und so läuft, wie ich mir das vorstelle. Echt gutes Programm, auch die Möglichkeit WD Live direkt zu verwenden.
Stationen in Betrieb:
WS2300 Matrix
WS 300 PC-II
Homematic
Gruß aus Biblis
Richard Schwinn
ich möchte hier meinen Weg beschreiben, mit dem ich Daten der Homematic Haussteuerung per Plug-In in Meteohub importiere, speziell die Sensorwerte des OC-3 Kombisensors sowie diverse Temperatur/Feuchtesensoren, z.B. von Thermostatsteuerungen.
Zunächst muss einiges auf der Homematic vorbereitet werden (ftp server installieren, Sensoren in Gewerk zuordnen, HM-Skript und TCL-Skript erstellen), aber dies kann hier nachgelesen werden und soll nicht nochmal wiederholt werden: http://homematic-forum.de/forum/viewtop ... ten#p84420
Das Ergebnis ist eine Textdatei auf der Homematic, in der die jeweils persönlich konfigurierten Sensorwerte in dieser Form vorliegen:
>>Wetter Kombisens;23.03.2013;23:40;2,00;62;false;188,80;5,10;175;67;192;8;6,68
>>Thermostat Wohnzimmer I;23.03.2013;23:40;22,20;32;;;;;;;;
Wetter Kombisens ist der OC3 Sensor mit folgendem Datenaufbau: Name;Datum;Uhrzeit;Temperatur;Feuchte;Status Regenmelder;Regenmenge;Windgeschwindigkeit;Windrichtung;Schwankungsbreite Wind;Sonnenscheindauer;Helligkeit; (der letzte Wert (6,68) ist meine Garagentemperatur, den Wert habe ich mir in dieser Kollation noch mit aufgenommen)
Die Häufigkeit des Updates wird auf der Homematic selbst im entsprechenden Skript entschieden. Gemäß diesem Updateintervall habe ich einen Cronjob auf Meteohub definiert, der per FTP die CSV-Datei von der Homematic abholt.
FTP-Skript:
Code: Select all
#!/bin/sh
#
path="/usr/local/usbstick/"
file="wetter.csv"
hostname="homematic"
username="username"
password="password"
ftp -in $hostname <<EOF
quote USER $username
quote PASS $password
cd $path
binary
prompt
hash
get $file
quit
Code: Select all
#!/bin/sh
#
while :
do
#Innensensoren (Temp+Luftfeucht)
grep "Wohnzimmer I" /home/meteohub/wetter.csv | gawk '{ (split($3,feld,";"))} {gsub(",",".",feld[4])} {printf "th5 %2.0f %d\n", feld[4]*10, feld[5] >>"/home/meteohub/hm_conv_data.txt"}'
#Aussentemp
grep "Kombisens" /home/meteohub/wetter.csv | gawk '{ (split($2,feld,";"))} {gsub(",",".",feld[4])} {printf "th9 %2.0f %d\n", feld[4]*10, feld[5] >>"/home/meteohub/hm_conv_data.txt"}'
#Wind
grep "Kombisens" /home/meteohub/wetter.csv | gawk '{ (split($2,feld,";"))} {printf "wind9 %d 0 %2.0f\n", feld[9], lround (feld[8]/0.36) >> "/home/meteohub/hm_conv_data.txt" }'
#Regenmenge
grep "Kombisens" /home/meteohub/wetter.csv | gawk '{ (split($2,feld,";"))} {gsub(",",".",feld[7])} {printf "rain9 0 %3.0f\n", feld[7] >> "/home/meteohub/hm_conv_data.txt" }'
#Regenstatus
grep "Kombisens" /home/meteohub/wetter.csv | gawk '{ (split($2,feld,";"))}
{if(feld[6]=="false") {printf "data0 0\n" >> "/home/meteohub/hm_conv_data.txt" }
else {printf "data0 1\n" >> "/home/meteohub/hm_conv_data.txt" }}'
#Helligkeit
grep "Kombisens" /home/meteohub/wetter.csv | gawk '{ (split($2,feld,";"))} {printf "sol9 %d\n", lround (feld[12]/28.333) >> "/home/meteohub/hm_conv_data.txt" }'
#Sonnenscheindauer
grep "Kombisens" /home/meteohub/wetter.csv | gawk '{ (split($2,feld,";"))} {printf "data1 %d\n", feld[11]*100 >> "/home/meteohub/hm_conv_data.txt" }'
#Garagentemperatur
grep "Kombisens" /home/meteohub/wetter.csv | gawk '{ (split($2,feld,";"))} {gsub(",",".",feld[13])} {printf "t9 %2.0f\n", feld[13]*10 >>"/home/meteohub/hm_conv_data.txt"}'
# write to stdout (funzt nicht mir printf oder echo, warum auch immer)
cat "/home/meteohub/hm_conv_data.txt"
sync
# Aufräumen
rm -f /home/meteohub/wetter.csv
rm -f /home/meteohub/hm_conv_data.txt
sleep 120
done
Der Aufruf über das Plug-In hatte das Skript zwar gestartet, aber es wurde kein Sensorwert eingelesen.
Die einzige Lösung, die ich gefunden habe, ist folgender Workaround: die Ausgaben werden in eine Textdatei umgeleitet ("hm_conv_data.txt") und danach von "cat" auf STDOUT geschrieben - komisch, aber immerhin funktioniert es so!
Was ich noch generell sagen wollte: Es ist großartig, daß es eine kostenlose Demoversion von Meteohub gibt, mit der man alles erst testen kann. Ich gabe mir gestern abend dann auch die Lizenz bestellt, aber es war mir wichtig vorher zu sehen, ob alles stabil und so läuft, wie ich mir das vorstelle. Echt gutes Programm, auch die Möglichkeit WD Live direkt zu verwenden.
Stationen in Betrieb:
WS2300 Matrix
WS 300 PC-II
Homematic
Gruß aus Biblis
Richard Schwinn