12.04.2013
RaspberryPi - Wetterstation
In dem Artikel habe ich kurz beschrieben, wie man den RaspberryPi einsetzen kann, um eine kleine Wetterstation zu bauen. Es wird erklärt, welche Hardware vorhanden sein muss und wie die notwendige Software installiert und eingerichtet wird. Das Ziel dieses kleinen Projekts war es, eine stromsparende und "kostengünstige" Lösung zu finden, die Wetterdaten aufzeichnet, in einer Datenbank speichert und eine grafische Darstellung der Temperatur- und Luftfeuchtigkeitsdaten ermöglicht.


(Das rechte Bild ist ein Screenshot von der Webseite von Martin Kompf.)
Hardware
Folgende Hardware wird benötigt, um das Projekt Wetterstation umzusetzen:
- RaspberryPi (Inklusive SD-Karte, Netzteil, installiertes Linux, ...)
- Wetterstation: ELV USB-WDE1 29,98 Euro
- Sender: Funk-Temperatur-/Luftfeuchteaußensensor S 300 TH 14,95 Euro pro Sender
Hinweis: Zum Betreiben der Wetterstation wird kein USB-Hub mit Stromversorgung benötigt. Der RaspberryPI liefert ausreichend Strom damit die Wetterstation funktioniert.
Die Wetterstation habe ich direkt mit dem USB-Port des RaspberryPi verbunden. (Oben auf dem Bild zu sehen.)
Die Sender habe ich an verschiedenen Positionen innerhalb und außerhalb des Gebäudes verteilt.


Die Sender lassen sich auch wunderbar mit doppelseitigem Klebeband an der Decke montieren. :-)
Idee
Die Idee zu diesem kleinen Projekt stammt nicht von mir. :-) D.h. den Einfall zu dem Projekt hatte Martin Kompf. Ursprünglich war das Projekt für die Linksys NSLU2 gedacht.

Ich habe es damit auch realisiert, weil der RaspberryPI zu dem Zeitpunkt noch nicht verfügbar war. Allerdings gestaltete sich das aufspielen der Linux-Distribution immer wieder als Herausforderung. Gerade, wenn man mal schnell ein Update einspielen wollte. Deshalb habe ich mir Anfang des Jahres einen RaspberryPi zugelegt und das ganze neu aufgesetzt.
Man kann jetzt schon sagen, dass es absolut problemlos funktioniert hat... :-)
Für mich liegt der Reiz dieses Projekts darin, dass die Lösung enorm wenig Strom verbraucht und damit ein Dauerbetrieb problemlos möglich ist. Die ELV-Wetterstation an einen "normalen" Desktop-Rechner anzuschließen und im Dauerbetrieb laufen zu lassen, wird wohl kein normaler Mensch machen, weil die Stromkosten viel zu hoch sind. Diese Lösung verbraucht nur maximal 5 Watt. Bei einem angenommenen Strompreis von 25 Cent/kWh ergeben sich maximale Stromkosten von knapp über 10 Euro im Jahr. (Ein Desktop-Rechner mit 100 Watt kostet im Dauerbetrieb 219 Euro im Jahr.)
Software einrichten
Als erstes wird der RaspberryPI gestartet, wobei die Wetterstation am USB-Port angeschlossen sein muss. Außerdem sollten die Sender betriebsbereit sein.
Nachdem man sich mit dem RaspberryPi verbunden hat, kann mit dem Kommando dmesg
überprüft werden, ob die Wetterstation von ELV gefunden wurde.
pi@raspberrypi / $ dmesg Ausgabe: ... [ 29.221618] usb 1-1.3.1: new full-speed USB device number 6 using dwc_otg [ 29.323934] usb 1-1.3.1: New USB device found, idVendor=10c4, idProduct=ea60 [ 29.323965] usb 1-1.3.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 29.323982] usb 1-1.3.1: Product: ELV USB-WDE1 Wetterdatenempf\xffffffc3\xffffffa4\xffffffa4nger [ 29.323996] usb 1-1.3.1: Manufacturer: Silicon Labs [ 29.324009] usb 1-1.3.1: SerialNumber: SHRNGWCT766HB4ES [ 29.381949] usbcore: registered new interface driver usbserial [ 29.383637] USB Serial support registered for generic [ 29.385512] usbcore: registered new interface driver usbserial_generic [ 29.385541] usbserial: USB Serial Driver core [ 29.394511] USB Serial support registered for cp210x [ 29.394713] cp210x 1-1.3.1:1.0: cp210x converter detected [ 29.471650] usb 1-1.3.1: reset full-speed USB device number 6 using dwc_otg [ 29.573987] usb 1-1.3.1: cp210x converter now attached to ttyUSB0 [ 29.575723] usbcore: registered new interface driver cp210x [ 29.575753] cp210x: v0.09:Silicon Labs CP210x RS232 serial adaptor driver ...
Wenn in der Ausgabe Product: ELV USB-WDE1
erscheint, dann wurde der Empänger erkannt.
Zum Ansprechen und Auslesen der Wetterdaten habe ich das Programm socat
verwendet. Normalerweise ist es in der Standard-Distribution nicht installiert. Aber man kann das relativ leicht überprüfen. Einfach auf der Konsole socat
eintippen. Wenn folgende Meldung erscheint, dann ist es nicht vorhanden.
pi@raspberrypi / $ socat -bash: socat: Kommando nicht gefunden.
Das ist aber auch kein Problem, denn mit dem Kommando sudo apt-get install socat
läßt es sich nachinstallieren:
pi@raspberrypi / $ sudo apt-get install socat Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut. Statusinformationen werden eingelesen.... Fertig Die folgenden NEUEN Pakete werden installiert: socat 0 aktualisiert, 1 neu installiert, 0 zu entfernen und 3 nicht aktualisiert. Es müssen 361 kB an Archiven heruntergeladen werden. Nach dieser Operation werden 817 kB Plattenplatz zusätzlich benutzt. Holen: 1 http://mirrordirector.raspbian.org/raspbian/ wheezy/main socat armhf 1.7.1.3-1.4 [361 kB] Es wurden 361 kB in 1 s geholt (246 kB/s). Vormals nicht ausgewähltes Paket socat wird gewählt. (Lese Datenbank ... 60097 Dateien und Verzeichnisse sind derzeit installiert.) Entpacken von socat (aus .../socat_1.7.1.3-1.4_armhf.deb) ... Trigger für man-db werden verarbeitet ... socat (1.7.1.3-1.4) wird eingerichtet ...
In der Konsole sollte das ungefähr so aussehen:

Nachdem socat
installiert ist, können die Daten von den einzelnen Sendern abgefragt werden. Dies ist mit dem Kommando sudo socat /dev/ttyUSB0,b9600 STDOUT
möglich:
pi@raspberrypi /dev $ sudo socat /dev/ttyUSB0,b9600 STDOUT $1;1;;;-0,9;;;;;;;;75;;;;;;;;;;;;0 $1;1;;;-0,9;;;16,9;;;;;75;;;61;;;;;;;;;0 $1;1;;;-0,9;;;17,6;;;;;75;;;59;;;;;;;;;0
In der Beispielausgabe werden die Daten von zwei Sendern empfangen. In der ersten Zeile wird die Temperatur -0,9
und die Luftfeuchtigkeit 75
angezeigt. In der zweiten Zeilen überträgt die Wetterstation nun auch die Daten des zweiten Empfängers.
Beachten: Es kann einen Augenblick dauern, bis sich die Sender mit der Wetterstation verbunden haben und die Temperaturdaten auf der Konsole erscheinen. Bei mir hat es beim ersten Versuch ca. 20 Minuten gedauert. Also Geduld... ;-)
Normalerweise hätte ich jetzt noch beschrieben, wie man eine grafische Ausgabe mit der RRDTool umsetzt. Allerdings hat das Martin Kompf so gut gemacht, dass dazu kein Bedarf besteht. Also einfach hier weiterlesen: Technik der Wetterdatenverarbeitung.
Deshalb hier nur ein paar Worte dazu. Prinzipiell wird der Aufruf sudo socat /dev/ttyUSB0,b9600 STDOUT
in ein kleines Shell-Script gepackt und die ausgelesenen Werte so formatiert, dass sie in die Round-Robin-Datenbank vom rrdtool
geschrieben werden können. Sind die Werte erstmal in der Datenbank kann mit rrdtool graph
eine grafische Darstellung des Temperatur- und Luftfeuchtigkeitsverlaufs erstellt werden.
Die folgende Grafik zeigt eine Darstellung des Temperaturverlaufs mit drei Temperaturfühlern:

Für noch eindrucksvollere Darstellungen verweise ich wieder auf die Seite von Martin: Wetter-Daten.

Dann wünsche ich viel Spaß beim Aufzeichnen von Wetterdaten!