ws3080-bild
ws3080-bild

Wetterstation WS3080 

Nach längerem Betrieb einer Wetterstation WS1080 mit WEEWX und dern Totalausfall nach einem Sturm habe ich mich parallel zum Aufbau einer "Eigenkonstruktion" aus den noch vorhandenen alten Komponenten für die Neuanschaffung einer noch erschwinglichen Wetterstation WS3080 entschlossen (auch diese kann Daten über die USB-Verbindung zum Basismodul liefern). Alternativ zur bei der WS1080 verwendeten Software "WEEXW" wollte ich aber einmal die mögliche Alternative pywws zum Einsatz bringen. Also geht es mit der Installation los. Als RASPBERRY habe ich den Rechner TEMPORARIA gewählt. Nach dem üblichen Update/Upgrade des Systems folgen diese Schritte:

  • Korrekte Zeitzone des Raspberry Pi einstellen:

sudo timedatectl set-timezone Europe/Berlin

Phyton und weitere Bibliotheken installieren

  • Installation von python, libusb, croniter und gnuplot
  • Phyton ist in der Regel bereits vorhanden, jedoch nicht in der richtigen Version. Libusb wird als USB-Verbindung zur Wetterstation benötigt. Gnuplot benötige ich zum Erstellen von Wettergrafiken (Alternative zu WEEWX).

Also geht's los:

sudo pip install --upgrade pip 

pip_install
  • pip ist der Paketmanager für die Programmiersprache Python. Es kann auf einem Linux-System installiert und dann in der Befehlszeile verwendet werden, um Python-Pakete und ihre erforderlichen Abhängigkeiten herunterzuladen und zu installieren.

sudo pip install tzlocal 

  • Dies ist ein praktisches kleines Modul, das Informationen zur lokalen Zeitzone liefert.
tz_local

pip install libusb1

libusb_1
  •  libusb-Systembibliothek

pip install pyusb

pyusb
  • Python-Schnittstelle zur libusb-Systembibliothek

pip install croniter 

croniter
  • Das Modul pywws.regulartasks kann Aufgaben zu bestimmten Zeiten ausführen. Dies erfordert die Croniter-Bibliothek.

pip install python-daemon

python-daemon
  • Das pywws.livelogdaemon-Modul führt pywws live logging als echten UNIX-Daemon-Prozess aus. Es erfordert die Python-Daemon-Bibliothek.

sudo ap-get install gnuplot 

gnuplot
  • Das Pywws.plot-Modul verwendet gnuplot, um Graphen zu zeichnen. Wenn man Diagramme von Wetterdaten erstellen möchte muss man die gnuplot-Anwendung installieren.

Dann installiere ich pywws

cd ~

sudo pip install pywws

pywws.pmg


  • Jetzt kommt der Test ob pywws läuft und die Wetterstation erkannt wird. Dazu muss jetzt die Basisstation der Wetterstation mit dem USB-Kabel an einen der vier USB-Ports des Raspberry verbunden werden. Testbefehl:

sudo python3 -m pywws-testweatherstation

  • Im Terminal sollte einiges an Zahlen erscheinen
testweatherstation


Wenn hier Fehler auftreten, kann im Handbuch von pywws einiges an Hilfestellungen gefunden werden.

Erzeugen der notwendigen Konfigurationsdatei "weather.ini" und "status.ini"

sudo python3 -m pywws.logdata -vvv /home/wetter/station/alternate

Die INI-Dateien werden im Verzeichnis /home/wetter/alternate gepeichert und können dort editiert werden.

Einrichtung/Einstellungen

Wenn der Test zu einem positiven Ergebnis geführt hat, dann geht es mit den Einstellungen/der Einrichtung weiter.

  • Abfrage der idVendor und idProduct-Parameter

Um die Wetterstation eindeutig zu identifizieren, müssen diese beiden Parameter abgefragt und bei Bedarf in folgenden Anweisungen ersetzt werden. Die Abfrage geht ganz einfach:

cat /var/log/kern.log | grep hid

identifikation2


Die beiden benötigten Werte sind im mit dem Pfeil gekennzeichneten Bereich zu finden.

In der Ausgabe finde ich also folgenden Wert „0003:1941:8021.0001“. 

Dies bedeutet folgende Zuweisung:

idVendor=1941
idProduct=8021

Gruppe wetter anlegen

sudo addgroup wetter

Benutzer der Gruppe zuordnen

sudo usermod -a -G wetter wetter


Udev-Rule zuweisen

Um die zuvor erstellten Gruppen auch dauerhaft der Wetterstation zuzuweisen, muss die nachfolgende Regel erstellt werden. 

Also editiere ich eine Datei mit dem Namen 38-weather-station.rules:

udev_rules
udev_rules


# Wetterstation
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="1941", ATTRS{idProduct}=="8021", GROUP="wetter", MODE="0660"
ACTION=="change", SUBSYSTEM=="usb", ATTRS{idVendor}=="1941", ATTRS{idProduct}=="8021", GROUP="wetter", MODE="0660"


Raspberry rebooten

Nun wird der Raspberry neu gestartet. 

sudo shutdown -r now

  • Dann teste ich die Verbindung zur Wetterstation erneut:
pywws-testweatherstation_2
pywws-testweatherstation_2



pywws: Anpassung des Systems


Jetzt geht die "Feinarbeit" los. Anpassungen an Initialisierungsdateien, Einrichten der Umgebung, Verzeichnisse, Rechte.

Das Basis-Verzeichnis soll nicht (wegen der vielen Schreib- und Lesezugriffe) auf der SD-Karte, sondern auf der USB-Festplatte liegen, das Gleiche gilt für das Webverzeichnis.  

Basisverzeichnis

mkdir -p  data

mkdirdata


Erfassungsintervall


Dann setze ich das Erfassungsintervall der WH3080. Dieses Minutenintervall bestimmt die Messungen zwischen zwei Messungen der Wetterstation. Im Standard-Modus sind  dies auf 30 Minuten gestellt, ich möchte aber nun alle 5 Minuten eine Messung durchführen:

sudo pyhon3 -m pywws-setweatherstation -r 5

intervall
intervall


Anpassung der  ini-Datei von pywws

Die ini-Datei, also das Config-File, welches pywws zur Steuerung benutzt, kann im Pfad /home/pi/data/weather/data gefunden werden. Soviel zur Theorie. Bei meinen Tests habe ich das File manuell anlegen müssen:


cd ~/station/alternate/

nano weather.ini


In die Datei schreibe ich folgende Daten:

weatherini


Dies ist das Standard-ini-File, ich werde es erst einmal so verwenden. Weitere Anpassungen werde ich später vornehmen. 

Wie geht es nun weiter?

Wenn bis zu diesem Punkt alles korrekt läuft, kann pywws als Cron-Job eingerichtet werden. Jedoch sollte man dies laut Hersteller nicht mehr machen, da es in der aktuellen Version bessere Wege gibt. Zur Verdeutlichung beschreibe ich dennoch diesen Weg:https://homepagedesigner.telekom.de/.cm4all/widgetres.php/com.cm4all.wdn.PhotoGrid/images/thumbnail-grid.svg
Mit dem nachfolgenden Weg startet man den Datenabzug stündlich:

hourly


sudo python3 -m pywws.hourly -vvv /home/wetter/station/alternate


Durch diesen Aufruf werden alle Wetterdaten aus der WH3080 ausgelesen. Im Verzeichnis „raw“ findet man die „Rohdaten“ aus der Wetterstation. Doch pywws kann noch mehr. Es generiert aus den von der Wetterstation zur Verfügung gestellten Rohdaten auch stündliche, tägliche und monatliche Statistikdaten. Diese findet man in den entsprechenden Ordnern. Ein Hauptaugenmerk sollte man, gerade bei der Fehlersuche, neben dem Logfile-Ordner auch auf den Inhalt des nachfolgenden Ordner haben. In diesem werden die generierten Dateien, die beispielsweise für den FTP-Upload bereitstehen, zwischengespeichert:


/home/wetter/station/data/tmp/output/


In älteren Versionen wurde empfohlen, den stündlichen Aufruf wie folgt per Cron-Job zu implementieren:
0 * * * * python3 -m pywws.hourly /home/wetter/station/alternate


Dies kann man testweise eine Weile so durchführen, es gibt elegantere Möglichkeiten.


Pywws-livelog: Der andere Weg


Der andere Weg heißt “Live-Log”. Der Aufruf für diesen Befehl lautet:


sudo python3 -m  pywws.livelog -vvv ~/alternate


Damit “Live-Log” funktioniert, müssen noch einige Anpassungen vorgenommen werden. Zuerst benötigt der Job einen „tmp“-Ordner, in dem Daten zwischengespeichert werden können:
Wenn der Job ohne Fehlermeldung startet, lasse ich den Job fünf bis zehn Minuten lang laufen. Abbrechen kann ich den Job mittels ‘STRG + C’. Nun ist es angebracht, die Logs zu prüfen und sich mit dem Dateisystem auseinanderzusetzen. Es wurden neue Ordner angelegt und mit Daten gefüllt.

livelog_1
livelog_1


Der Daemon

Eine weitere Möglichkeit ist es, die Datensammlung einem Daemon zu überlassen.

python3 -m pywws.livelogdaemon -v /home/wetter/station/alternate /home/wetter/station/alternate/pywwstask.log start

livelogdaemon

Der Start und die Ausführung werden mit der Option -v unter Angabe des Pfades und Dateinamens (hier pywwstask.log) protokolliert.

pywwslog
pywwslog


So lassen sich nach kurzer Zeit bereits die ersten Grafiken anblicken:






Zurück zur Startseite


Commentum
Der Einfall, die Lüge, die Erdichtung
E-Mail
Infos