Es ist gerade für Flugschulen nicht schlecht, eine eigene Wetterstation zu haben. Auf einen Blick zu sehen, wie der Wind am Übungshang oder im Höhenfluggelände ist kann manchmal Gold wert sein und so manchen unnützen Weg ersparen. Wetterstationen gibt es viele, aber diese dann auch effizient und autonom arbeitend so ans Internet anzuhängen, dass sie für den jeweiligen Einsatz zugeschnitten werden können, bedarf ein wenig Tüftelei. Dafür kann man sich mit ein wenig investierter Zeit aber einiges an Kosten ersparen.

Standart Funkwetterstation

Im folgenden möchte ich euch erläutern, wie ihr eure eigene kleine und mobile Wetterstation bastelt. Angeregt auch dadurch, dass ich keine wirklich gute und vor allem keine wirklich in deutsch geschriebene Anleitung für den Laienbastler gefunden hab.

 


I. Den Raspberry Pi vorbereiten

Der kleine aber feine Hosentaschencomputer. RaspberryPi

Eigentlich ist es recht simpel, braucht aber etwas Zeit um den RapsPi als Basis für die Automation vorzubereiten. Alles rund um Soft- und Hardware deines Mini-Computers erfährst du hier: https://www.raspberrypi.org/.

  1. Eine SD-Karte (ca. 4 GB) mit folgendem Programm formatieren: SD-Formatter
  2. Die Betriebssystem Distribution NOOBS herunter laden und auf die SD-Karte extrahieren. Grundsätzlich kannst du auch anders vorgehen, wenn du dich mit dem Raspberry auskennst. Wichtig ist, dass wir zu guter letzt ein Raspbian-Linux auf unserem Pi haben.
  3. SD-Karte ab in den Pi. RapsPi mit Maus/Tastatur, Strom, Netzwerk verbinden und den Installationsanweisungen von NOOBS folgen. (Unsere BS Auswahl fällt auf Raspbian)
  4. Wärend die Installation läuft, laden wir uns PuTTY herunter. Dieses kleine Programm wird benötigt um den RasPi über eine Konsole via SSH fernzusteuern. Was das bedeutet werden wir noch genauer herausfinden.

Wenn NOOBS fertig mit der Installation ist startet der RasPi neu und lädt die  grafische Benutzeroberfläche.

  • Mit der Maus ganz nach rechts oben auf den {Netzwerkmanager} gehen und die IP-Nummer anzeigen lassen und notieren.

Ist PuTTY auf deinen Rechner oder Laptop vorhanden, können wir nun eigentlich die Maus/Tastatur und den Bildschirm vom RasPi abziehen. (SSH sollte eigentlich aktiviert sein) Wir werden jetzt nur noch über das Netzwerk mit unserem Pi kommunizieren und nutzen dazu auch keine graphische Fensteroberfläche sondern ein Eingabeterminal. Eine sogenannte Komandozeile. PuTTY ist eigentlich selbsterklärend; für die genaue Bedienung aber bitte die Dokumentation von PuTTY zu rate ziehen.

Alle folgenden Kommandos können über PuTTY per Fernsteuerung eingegeben werden.

  • Zur Sicherheit sollte nun das Standartpasswort des Benutzer “pi” auf dem Raspberry geändert werden, da dieses Gerät im Netzwerk sonst eine riesige Sicherheitslücke darstellt. Dazu mit folgendem Befehl das Konfigurationsmenü aufrufen:

sudo raspi-config

  • Hier können auch gleich regionale Einstellungen vorgenommen werden. ACHTUNG: Standarttastatur = QWERTY

II. Raspbian und Python vorbereiten

Raspbian ist, wie Windows ein Betriebssystem und will immer auf den aktuellen Stand gehalten werden. Genauso verhält es sich mit der Programmiersprache {Python}. Wer mehr über die Programiersprache wissen möchte klickt hier. Es sollte aber genügen zu wissen, dass diese Programiersprache dafür zuständig ist, dass das Programm {pywws} welches unsere Wetterstation ausliest und die Daten aufbereitet, laufen kann. Dazu müssen auch noch einige Zusatzmodule installiert werden. Folgende Eingaben in der Kommandozeile erledigen dies:

sudo apt-get update
lädt Updates des Betriebssystems
sudo apt-get upgrade
Aktualisiert das Betriebssystem mit den geladenen Updates
sudo reboot
Startet den Raspberry neu – PuTTY-Verbindung muss danach neu hergestellt werden
sudo apt-get install python-pip
installiert den python-Paketmanager
sudo apt-get install python-dev
installiert die python-Gerätebibliothek
sudo apt-get install python-usb
installiert die python-USB-Schnittstelle

Jetzt wird die neueste Version von pywws in den weather-Ordner installiert:

cd ~

sudo pip install pywws

Testen der Installation von pywws

Verbinde jetzt deine Wetterstation per USB mit dem RasPi

sudo python -m pywws.TestWeatherStation

Ist alle zur Zufriedenheit abgelaufen sollte nach einer Weile ein Block mit hexadezimalen Zahlen angezeigt werden.

Das Auslesen der ersten Daten hat funktioniert.


III. SetUP von pywws

Dem Benutzer pi die Rechte geben

Bisher haben wir alle Befehle mit [sudo] begonnen. Das bedeutet nicht mehr als “Führe mit Administratorrechten aus…”. Damit das aber der Benutzer “pi” irgendwann automatisch, völlig selbständig und ohne einen Menschen macht, der [sudo] vor die Befehle schreibt müssen wir ihm die richtigen Rechte einräumen. Dabei achten wir darauf, dass pi aber auch nur die Rechte bekommt, die er wirklich braucht.

Eine Nutzergruppe “weather” erstellen und pi der Gruppe hinzufügen:

sudo addgroup --system weather

sudo adduser pi weather

Jetzt benötigen wir noch eine “Regel”, welche die Gerätegruppe bestimmt, die für die Gruppe “weather” offen sein soll. Um die Gruppe eindeutig zuordnen zu können gibt es die idVendor und idProduct -Nummer für jedes USB-Gerät. Diese lesen wir wie folgt aus (Wetterstation bitte jetzt abstecken):

tail -f -n /var/log/kern.log

Jetzt die WS wieder einstecken und in der Anzeige nach idVendor=1941 und idProduct=8021 suchen. Sollten die Zahlen abweichen bitte merken und im Folgenden verwenden. Denn wir erstellen jetzt die Regel mit Hilfe von [nano]. Nano ist ein sehr einfaches Textprogramm (ähnlich dem EDITOR bei Windows) mit dem man aber durchaus funktionierende Programmiersprache anwenden kann.

sudo nano /etc/udev/rules.d/39-weather-stations.rules

Inhalt der Regel wird folgender Text! ACHTUNG zwischen “add|change” ist KEIN “/” sondern ein “|”; [Alt Gr + <]!!!

ACTION!="add|change", GOTO="station_end"

SUBSYSTEM=="usb", ATTRS{idVendor}=="1941", ATTRS{idProduct}=="8021", GROUP="weather"

LABLE="station_end"

Den Text mit [Strg+x], [J], [ENTER] speichern und den RasPi mit <sudo reboot> neustarten.

Jetzt können wir testen ob “pi” auch ohne “sudo” das Wetter auslesen darf:

python -m pywws.TestWeatherStation

Wenn alles soweit funktioniert hat, sehen wir hier wieder die hexadezimalen Zahlenblöcke.

Zusatzfunktionen hinzufügen

Wenn du deine Wetterdaten an Twitter senden willst oder zum erstellen und Übertragen von Grafikenwerden folgende Zusatzmodule benötigt.

cd ~

sudo pip install python-twitter

sudo pip install oauth2

Um die Grafiken zu verwenden muss du {gnuplot} deinem Pi hinzufügen

sudo apt-get install gnuplot

Für den sicheren Upload an ein FTP Laufwerk benötigst du folgende Module

sudo apt-get install python-paramiko

sudo apt-get install python-pycryptopp

Die richtige Ordnung herstellen

Die Text- und Grafiktemplates sollten an einen sicheren Ort kopiert werden. So kann man die in Benutzung befindlichen Vorgaben verwenden und bearbeiten, aber jeder Zeit auf die Originale zurückgreifen ohne, dass diese Überschrieben werden.

mkdir ~/weather

cp -R /usr/local/lib/python2.7/dist-packages/pywws/examples/* ~/weather

Wir brauchen auch einen Ordner der die weather.ini und die Verarbeiteten und Wetterdaten enthält.

mkdir ~/weather/data

mkdir ~/webdata

Ausserdem brauchen wir noch einen Ordner für die Daten, welche durch das FTP-Tool übertragen werden sollen.

mkdir /home/pip/weather/temp

Diese Daten werden immer mit den aktuellsten überschrieben.

Eigentlich sind wir jetzt schon fast fertig. Das Programm kann jetzt schon, wenn manuell gestartet, die Daten hohlen und berechnen.


 IV. Die weather.ini

Das Programm hat den Code – doch wir wissen, was wir mit den Daten anfangen wollen und um diese Information an das Programm weiter zu geben nutzen wir die weather.ini

Der leichteste Weg eine funktionierende weather.ini zu erstellen ist, eine funktionierende weather.ini herunter zu laden. 🙂 Es geht auch anders aber ich empfehle den unerfahrenen Benutzer (wie auch ich einer bin) den Weg des geringsten “bastelns” zu gehen.

Einen Dummy der weather.ini erstellen:

python -m pywws.LogData -vvv ~/weather/data

Die fertige *.ini herunter laden:

wget http://weather.dragontail.co.uk/custom_download/weather.ini -O ~/weather/data/weather.ini

und den LogData-Befehl nochmals ausführen. Jetzt werden die Daten von der Station gehohlt und verarbeitet, dass kann einen Moment dauern.

python -m pywws.LogData -vvv ~/weather/data

Man sollte nun die Funktion überprüfen, in dem man nachsieht, ob im Ordner “raw” welcher ebenfalls gerade eben erstellt wurde, Daten vorhanden sind.

ls ~/weather/data/raw

Diese Rohdaten müssen jetzt noch verarbeitet werden. Dies erstellt die Daten, welche auch der Mensch lesen und verarbeiten kann.

python -m pywws.Process ~/weather/data

Alles klar soweit… Kleiner Tipp – fast am Ende 🙂 mit [Tab] kann man beim eingeben, die Wörter automatisch vervollständigen lassen. Versuchs mal und tippe: ls ~/wea[Tab] –> es wird “~/weather/” vervollständigt 😉


V. Die Daten ausgeben

Webdaten erzeugen

Die vorhandene weather.ini  bestimmt, dass Daten als Text und Grafik in den Ordner ~/webdata ausgegeben werden. Die *.ini bestimmt, welche Templates verwendet werden und in welchem Intervall sie aktualisiert werden.

Wir können diesen Output manuell herbeiführen:

python -m pywws.Hourly -vvv ~/weather/data

  • LogData wird ausgeführt
  • Process wird ausgeführt
  • Dateien werden in ~/webdata gespeichert und via FTP versandt.

das können wir mit

ls ~/webdata

überprüfen.

Webdaten in FTP-Laufwerk bereitstellen

Sind die Grafen und Texte erst einmal auf einem FTP-Laufwerk, welches über das Internet erreichbar ist so steht uns von der Verwendung auf einer Homepage bis hin zur Verarbeitung auf dem SmartPhone alles offen. Dazu muss die weather.ini im Editor {nano} geöffnet und angepasst werden.

sudo nano ~/weather/data/weather.ini

Dann im Fenster mit den Pfeiltasten zur [FTP] Sektion scrollen und diese wie folgt bearbeiten

[ftp]

local site = False

secure = False

site = ftp.deinehostadresse.de

user = Benutzername

password = deinpasswort

Der Port bleibt 21 – es sei denn du hast etwas anderes bei deinem Webhost eingestellt oder nutzt sftp.

Speicher und schließ die ini mit [Strg+x], [J], [ENTER]

 

Die Datenübertragung automatisieren

Dazu nutzen wir ein kleines aber feines Programm, welches es sich einfach zur Aufgabe gemacht hat, Kommandozeilen je nach festgelegter Zeit auszuführen. Cron!

Aufgerufen wird Cron mit:

crontab -e

Dann muss mit einer Zahleneingabe der Editor ausgewählt werden. Am besten wieder nano – meist die [2].

Erstelle folgenden neuen “Cronjob”

5 * * * * python -m pywws.Hourly ~/weather/data >> /home/pi/weather.log 2>&1

wieder speichern und schließen mit [Strg+x], [J], [ENTER]. Wichtig ist, dass der Cronjob mit einer Leerzeile abschliest.

Jetzt werden alle 10 Minuten ein Output nach ~/webdata erzeugt und an das FTP-Verzeichnis übermittelt. Genauer gesagt wird jetzt in jeder Minute einer Stunde, welche eine 5 enthält das Programm pywws.Hourly ausgeführt.


Jetzt ist dein Pi soweit, deine Wetterstation auszulesen, die Daten zu verarbeiten und selbständig an ein FTP-Verzeichnis weiter zu geben. Was die Umsetzung als mobile Station angeht. So werde ich in einem weiteren Artikel berichten.

<links: http://www.weather.dragontail.co.uk/index.php?page=pywws_ini, https://pywws.readthedocs.io/en/latest/>

Raspberry Pi Logo