![]() |
![]() |
![]() |
Display W831 | Raspberry Pi im Tek-Berry Gehäuse |
Einsatz:
Einbindung einer Ventus W831 Wetterstation in Symcon. Die Wetterstation Ventus W831 ist ein Clone/ReBrand einer Hideki Wetterstation. Weitere bekannte Modelle sind z.B. TFA Nexus,Mebus TE923,IROX Pro X und ggfls. weitere.
Die Wetterstation (ca.99Eur) habe ich bereits auf meiner Wetterseite beschrieben.
Sie besitzt ein grosses LCD-Display mit Innen- und Luftdrucksensor. Mitgeliefert werden außerdem batteriebetriebene Aussensensoren für Wind,
Regen und ein Temperatur/Feuchte-Sensor (max 5 möglich, ca. 15-20Eur). Der bei manchen Modellen verfügbare UV-Strahlungssensor ist nicht vorhanden.
Das Problem bei dieser Wetterstation ist, dass sie zu weit Weg von meinem Server steht. Zwar kann mein Ezcontrol XS1 die Sensoren empfangen,
aber er kann nicht auf die Daten des internen Sensors der Station zugreifen und macht zudem öfters Probleme beim Abholen der Daten
Die mitgelieferte Software ist nicht für IPSymcon nutzbar und das USB-Protokoll wurde nicht veröffentlicht.
Meine Lösung nutzt den sehr preisgünstigen Minicomputer Raspberry Pi als Webserver
und dem darauf laufenden Ausleseprogramm
te923con als Datenlieferant für ein CGI. IPsymcon kann sich die Daten dann bequem über HTTP abholen.
Funktion:
Zur Verarbeitung in IPS wird über ein zyklisches Event durch ein CGI das Programm te923con auf dem Raspberry aufgerufen,
welches die Daten der über USB angeschlossenen Wetterstation ausliest und als String via http IPS bereitstellt. Anschliessend wird der
String in IPS vom Modul te923 auf die einzelnen Sensoren aufgesplittet und in selbstständig angelegte Variablen eingetragen.
Für bestimmte Felder werden noch Konvertierungen durchgeführt, um über Variablenprofile eine optimale Darstellung zu erreichen.
Von der Wetterstation als "Inaktiv" gekennzeichnete Sensoren werden nicht angelegt.
Dynamisch erzeugte Variablen
Einrichtung Raspberry Pi
Checkliste:
Software auf Raspberry konfigurieren
Das te923tool muss erst noch aus den Sourcen erstellt werden . Als user root im Homeverzeichnis (copy/paste in Putty, die te923tool version 0.6.1 ggfls anpassen)#Installierte Packete mit neuen Versionen Online aktualisieren aptitude update aptitude upgrade #installation Webserver, C-Compiler und libusb Bibliotheken aptitude install gcc make apache2 libusb-dev #te923tool holen und kompilieren wget http://te923.fukz.org/downloads/te923tool-0.6.1.tgz tar -xvzf te923tool-0.6.1.tgz cd te923tool-0.6.1/ make all #testen ls -l te923con #nach /usr/bin kopieren cp te923con /usr/bin/Jetzt müssen noch udev-rules für das USB-Gerät angelegt werden:
vi /etc/udev/rules.d/99-te923.rulesInhalt:
ATTRS{idVendor}=="1130", ATTRS{idProduct}=="6801", MODE="0660", GROUP="plugdev", RUN="/bin/sh -c 'echo -n $id:1.0 > /sys/bus/usb/drivers/usbhid/unbind'"mit :x abspeichern!
udevadm control --reload-rules
Jetzt kann die Wetterstation an den Raspberry angeschlossen werden.
vi /usr/lib/cgi-bin/get_data.cgiNachfolgenden Inhalt reinkopieren
#!/bin/bash TE923=/usr/bin/te923con #header content type end empty line echo "Content-type: text/plain" echo #end header #parameter PARAM="$QUERY_STRING" #oder $1 #run if [ -x $TE923 ]; then #binary must be placed into same dir #this runs only if apache user www-data is member of group plugdev #and udev rule is added case "$PARAM" in data) $TE923 -i 'i';; status) $TE923 -s -i 'i';; debug) $TE923 -D -i 'i';; version) $TE923 -v;; esac fiWieder mit :x abspeichern ausführbar machen und testen
chmod a+x vi /usr/lib/cgi-bin/get_data.cgi export QUERY_STRING=data /usr/lib/cgi-bin/get_data.cgi Output: /usr/lib/cgi-bin/get_data.cgi Content-type: text/plain 1356296694:23.00:45:9.50:89:10.50:84:i:i:i:i:i:i:1006.9:i:4:0:8:0.7:0.7:7.9:389Abschliessend muss der Webserver-User noch angepasst werden. Der te923con aufrufender User muss in der Gruppe "plugdev" sein:
adduser www-data plugdev invoke-rc.d apache2 stop invoke-rc.d apache2 startWenn alles klappt kann man von seinem PC im Browser die Wetterstations-Daten manuell abholen:
http://<ip_des_raspberry>/cgi-bin/get_data.cgi?data
IPS-Konfiguration:
Es ist ein neues Script mit dem Inhalt von te923_reader.phps zu erstellen. Der Wert von $host ist entsprechend dem Aufruf des eigenen Rasperry zu ändern$host = 'http://raspbi1/';
Kategorie- und Variablen Erzeugung:
Die Automatische Erstellung von Variablen kann man abstellen, wenn $autocreate=false; setzt.
$catname ist der Name der Kategorie unterhalb von IP-Symcon. Der Name wird auch als Parent für die Suche nach den Variablen via Ident genutzt.
$autocreate=true; $catname='TE923';
Modifikation der Sensordaten
Tipp: Wenn für einen Sensor an der Station keine Daten mehr anzeigt, kann man häufig durch längers (ca.5s) drücken der PfeilDown-Taste einen neuen Sensor-Suchlauf anstossen. Wenn die Baterien noch OK sind, wird der Sensor dann wieder korrekt empfangen. Bis zur Übertragung eines Wertes durch te923con kann es dann nocheinmal ca. 10-15min dauern.
Referenzen