PID Banner

Freitag, 4. November 2016

RaspberryPi als Wetterstation mit Telegram Bot

Nach vielen Jahren treuen Dienstes ging vor Kurzem meine Wetterstation von TFA kaputt. Das Display blieb trotz neuen Batterien und Reset leer. Da die Außensensoren einwandfrei funktionieren und in regelmäßigen Abständen ihre gemessenen Daten senden, wollte ich sie nicht entsorgen. Aber was tun?

Da kam mir die Idee, mein Raspberry Pi dafür zu nutzen. Aber wie soll die Raspberry Pi die Daten über Funk empfangen? Nach einer kleinen Recherche im Netz gibt es dafür mehrere Möglichkeiten. Und ich war sehr erstaunt, dass es scheinbar möglich ist, mit einem einfachen DVB-T USB-Stick die Daten zu empfangen. Man muss nur aufpassen, dass in dem Stick ein spezieller Chip von Realtek verbaut ist.



Ich habe mich für diesen Stick entschieden:



Dieser kleine, sehr günstige Stick war für mich der Opener in die faszinierende Welt des SDR (Software Defined Radio). Mit diesem Gerät empfängt man nicht nur DVB-T-Signale, sondern auch FM-Radio, DAB, Amateurfunk, Flugzeugfunk usw. Eigentlich alles was zwischen 24 und 1766 MHz sendet. Man kann ihn sogar als Doppler-Radar einsetzen und Flugzeuge, Hubschrauber oder Meteoriten orten.

Wer sich dafür interessiert, dem lege ich folgende Seite ans Herz: www.rtl-sdr.com.

Back to topic

Der Anschluss des Sticks an der Raspberry Pi ist über USB denkbar einfach. Antenne muss noch angesteckt werden und los gehts. Natürlich ist der richtige Platz für die Antenne wichtig. Computer, Monitore und ähnliches senden elektro-magnetische Felder aus, die den Empfang stark beeinträchtigen können. Je weiter weg die Antenne vom Computer steht, umso besser.

Kommen wir zur Software. Die mitgelieferte Mini-CD lassen wir lieber in der Hülle und nutzen andere Tools. Auf meiner Raspberry Pi ist das Betriebssystem Raspian installiert. Sollte auch mit anderen Linux-Distributionen gehen:
sudo apt-get update
sudo apt-get install rtl-sdr
rtl_test
rtl_fm -f 433.844M -s 30k > sensor.dat
Damit kann man schon ein paar Beispiel-Daten sehen.

Es kann sein, dass beim ersten Start ein falsches Kernel-Modul für den Stick geladen wurde. Dieses Modul muss zuerst entladen werden:
sudo rmmod dvb_usb_rtl28xxu
Nun brauchen wir noch ein Programm, dass uns die empfangenen Signale in verwertbare Daten umwandelt. Dafür habe ich rtl_433 genutzt. Dabei handelt es sich um ein C-Programm das ziemlich viele Protokolle der Wetterstationen verstehen und ausgeben kann.

Installation auf der Pi:
git clone https://github.com/merbanan/rtl_433
cd rtl_433/
autoreconf -i
./configure
make
make install
Nach dem erfolgreichen Kompilieren und Installieren sollte
rtl_433 -F csv
brauchbare Werte im CSV-Format liefern. Damit das ganze noch cool wird, habe ich einen Telegram-Bot geschrieben, der die Daten aus einer Datenbank lesen und versenden kann. Der Bot ist natürlich Open-Source und auf GitHub verfügbar. Wer mitmachen will, ist herzlich eingeladen.

rasswareBot auf GitHub

Viel Spaß beim Nachbauen und Experimentieren!


Keine Kommentare: