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.

Create New Project Create New Project

(Das rechte Bild ist ein Screenshot von der Webseite von Martin Kompf.)

Hardware

Folgende Hardware wird benötigt, um das Projekt Wetterstation umzusetzen:

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.

Create New Project Create New Project

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.

Create New Project

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:

Create New Project

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

Create New Project

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