Commentum

Der Einfall, die Lüge, die Erdichtung



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 MANTELLA 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 Konfigurationsdateien "weather.ini" und "status.ini"

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

Die INI-Dateien werden im Verzeichnis /home/wetter/station/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 wetter zuordnen

sudo usermod -a -G wetter wetter


Udev-Rule zuweisen

Um die zuvor erstellte Gruppe auch dauerhaft der Wetterstation zuzuweisen, muss die nachfolgende Regel erstellt werden. 

Also editiere ich eine Datei mit dem Namen 38-weather-station.rules im Verzeichnis /etc/udev/rules.d

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


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. 


/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


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 


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.

sudo python3 -m pywws.livelogdaemon -v /home/wetter/station /home/wetter/station/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:


Da pywws noch mehr kann und ich eigentlich nur bestimmte Daten möchte habe ich mich für die nächste Variante entschieden: Der klassische CRON-Job. Hierzu startet alle 10 Minuten ein BASH-Script, sammelt die Daten ein, generiert aus den Templates Grafiken und erzeugt Textdateien zur Einbindung in eine Website. Weiterhin erzeugt es die CSV-Dateien, die ich zum "Füttern" einer Mysql-Datenbank benötige.

/home/wetter/station/stunde.sh

stunde.sh

#!/bin/bash
# Startet Python zur Abfrage der Daten der Wetterstation WS3080
log=/home/wetter/station/stunde.log
aktuellesdatum=$(date '+%d-%m-%Y')
aktuellezeit=$(date '+%H-%M-%S')
python3 -m pywws.hourly -v /home/wetter/station >> $log 2>&1
python3 -m pywws.logdata -v /home/wetter/station >> $log 2>&1
echo "Logdateien/Bilder/Texte wurden erzeugt am: "$aktuellesdatum" um: "$aktuellezeit >> $log

Das Script wird jede Stunde über einen Cronjob ausgeführt.  So erfolgt dann auch die Aktualisierung der Website jede Stunde.

Die Seite findest Du unter:  https://www.commentum.de/Wetter/WS3080/Wetter.html oder mit dem Button ganz unten auf dieser Seite.

stunde.sh


Die ausführbaren Dateien und Profile für pywws findet man übrigens im Verzeichnis "/usr/local/lib/python3.9/dist-packages".

Der Aufbau der als Textdatei gespeicherten Stationsdaten ist folgender:

key_list= ['idx', 'delay', 'hum_in', 'temp_in', 'hum_out', 'temp_out', 'abs_pressure', 'wind_ave', 'wind_gust', 'wind_dir', 'rain', 'status', 'illuminance', 'uv']

Für eine Umwandlung in eine für Mysql (je nach Datenbankstruktur) lesbare CSV-Datei ergibt sich damit folgende Ausgangsstruktur:

Datum/Uhrzeit

Verzögerung

Zähler

Luftfeuchtigkeit innen

Temperatur innen

Luftfeuchtigkeit aussen

Temperatur aussen

Luftdruck

Windgeschwindigkeit (Durchschnitt)

Windgeschwindigkeit (Böen)

Windrichtung

Regen

Status

Helligkeit

UV-Wert

2022-05-16 14:37:03

 

5

40

25.1

73

20.8

1008.6

1

2.7

10

45.3

0

24676

1

2022-05-17 09:17:03

5

49

24.7

58

22.5

1013.1

0

0.7

1

45.3

0

55009

4

2022-05-17 10:57:03


5

48

24.5

55

23.8

1012.6

0

0

8

45.3

0

66278

5

Also kann es an die Arbeit gehen und mit der Programmierung der Übergabe-/Übernahme-Scripte der ausgegebenen Werte  in die Datenbank begonnen werden. Ziel ist es einfach, eine abfragbare Historie zu erhalten. Aber das wird dann das nächste Kapitel...

Zum Testen habe ich die Wetterstation zuerst einmal an einem ausziehbaren Rohr (stammte noch von einem defekten "Schlammsauger") installiert (dadurch konnte ich auch einen eventuell notwendigen Batteriewechsel vereinfachen). Das Rohr wurde mit Kabelbindern provisorisch an einem Sichtschutz montiert. Auf Dauer aber macht das natürlich keinen Sinn, denn man kann es so gar nicht in eine absolute Senk-/Waagerechte bringen. Für die endgültige Installation habe ich daher die Stromversorgung (Batteriepole) "umgelötet". Die Batterien sind nun in einem wetterfesten Gehäuse am unteren Ende des Installationsmastes mit einem eigenen Schalter (für einen Reset) zugänglich und leichter austauschbar. Der Montagemast sollte eigentlich ja auch einen Durchmesser von 50 mm haben, das Provisorium war deutlich dünner (35 mm). Da bot es sich an, einfache HT Rohre statt teurer Stahlrohre zu verwenden. Die Befestigung an einem Gartenhaus habe ich mit Stützwinkeln und darauf festgeschraubten Holzplatten mit entsprechenden 50 mm Löchern gelöst. Mit Hilfe von 2D-Wasserwaagen konnte so die Installation unabhängig von der waagerechte/senkrechten Standsituation des Gartenhauses (das Haus konnte ich ja wohl kaum noch justieren, oder besser: Das wollte ich auch gar nicht). Für mögliche Erweiterungen habe ich weitere Kabel durch das Rohr gezogen. Deren Polenden münden in wasserdichten Kabelboxen am unteren und oberen Ende des Installationsmastes. Dort werden/wurden Raspberry/Arduino und die Platinen der Sensoren in einem wasserdichten Verteilergehäuse (einfache Boxen zur Stromverteilung, 230V, Bohrungen für externe Kühlung) mit Rohrschellen befestigt. Die Stromversorgung des Raspberry Pi und des Arduino für die zusätzlichen Sensoren wird über eine Insellösung (12V-Akku, Laderegler, Solarpanel) sichergestellt, der Internet Router wird bei Stromausfall auf eine USV geschaltet. Damit ist bei einem Stromausfall die Übertragung der ermittelten Daten für einen längeren Zeitraum (max. 6h) weiterhin sichergestellt. Ist alles eigentlich nicht notwendig, in erster Linie ging es mir hierbei um das Austesten verschiedener Möglichkeiten zur technischen Konfiguration.

Die Datenbank wird mit einem BASH-Script regelmäßig mit den Wetterdaten gefüttert, die Ergebnisse werden mit einem PHP-Programm auf der Homepage mit dazu passenden Grafiken angezeigt.

 Anmerkung: Die USB-Verbindung funktioniert manchmal etwas "zickig". Das passiert bereits beim Einstellen der Uhrzeit am Display. Auch sollte man ein gut abgeschirmtes USB-Kabel möglichst ohne Verlängerung verwenden. Die Kontakte sollten sehr fest sitzen, damit eine Störung zum Beispiel beim Versetzen des Displays verhindert wird.

Auch kommt es immer wieder vor, daß ein USB-Error die Abfrageprogramme der Wetterstation abstürzen läßt. Dann hilft selbst ein Reboot nicht mehr, der ganze Empfänger muß hart von der Stromversorgung getrennt werden. Sehr ärgerlich, da der Empfänger auch nicht auf das DCF-Signat reagiert und Uhrzeit/Datum manuell eingestellt werden muß.

Insgesamt kann man nach wenigen Monaten feststellen, daß es insgesamt betrachtet keine sehr pflegeleichte Installation ist.

Und noch eine Anmerkung:

Das Solarzellenfeld der Wetterstation ist durch transparenten Kunstoff abgedeckt. Nach wenigen Monaten hat sich zwischen Telle und Abdeckung bereits Wasser angesammelt.  Ob und ab wann es hierdurch zu Beeinträchtigungen kommen wird steht in den Sternen. Ob auch Feuchtigkeit ins Gehäuse gelangen kann? Hoffen wir es nicht... 

Zur Regenmessung

Die Regenmessung müsste ich noch einmal gesondert überprüfen. Am einfachsten mit einem "klassischem" Regenmesser für ein paar Euro aus einem Baumarkt...

sudo adduser -shell /bin/bash -home /media/wetter/Wetter/wetteradmin

Lege Benutzer »wetteradmin« an ...
Lege neue Gruppe »wetteradmin« (1001) an ...
Lege neuen Benutzer »wetteradmin« (1001) mit Gruppe »wetteradmin« an ...
Erstelle Home-Verzeichnis »/media/wetter/Wetter/wetteradmin« ...
Kopiere Dateien aus »/etc/skel« ...
Geben Sie ein neues Passwort ein:

wetter@PALUSTRIS:/media/wetter/Wetter $ sudo addgroup wetteradmin adm
Füge Benutzer »wetteradmin« der Gruppe »adm« hinzu ...
Benutzer wetteradmin wird zur Gruppe adm hinzugefügt.
Fertig.

wetter@PALUSTRIS:/media/wetter/Wetter $ sudo addgroup wetteradmin sudo

Füge Benutzer »wetteradmin« der Gruppe »sudo« hinzu ...
Benutzer wetteradmin wird zur Gruppe sudo hinzugefügt.
Fertig.

wetter@PALUSTRIS:/media/wetter/Wetter $ sudo addgroup wetteradmin audio
Füge Benutzer »wetteradmin« der Gruppe »audio« hinzu ...
Benutzer wetteradmin wird zur Gruppe audio hinzugefügt.
Fertig.


wetter@PALUSTRIS:/media/wetter/Wetter $ sudo addgroup wetteradmin video
Füge Benutzer »wetteradmin« der Gruppe »video« hinzu ...
Benutzer wetteradmin wird zur Gruppe video hinzugefügt.
Fertig.

wetter@PALUSTRIS:/media/wetter/Wetter $ sudo addgroup wetteradmin plugdev
Füge Benutzer »wetteradmin« der Gruppe »plugdev« hinzu ...
Benutzer wetteradmin wird zur Gruppe plugdev hinzugefügt.
Fertig.

wetter@PALUSTRIS:/media/wetter/Wetter $ sudo addgroup wetteradmin games
Füge Benutzer »wetteradmin« der Gruppe »games« hinzu ...
Benutzer wetteradmin wird zur Gruppe games hinzugefügt.
Fertig. 

wetter@PALUSTRIS:/media/wetter/Wetter $ sudo addgroup wetteradmin users
Füge Benutzer »wetteradmin« der Gruppe »users« hinzu ...
Benutzer wetteradmin wird zur Gruppe users hinzugefügt.
Fertig.

wetter@PALUSTRIS:/media/wetter/Wetter $ sudo addgroup wetteradmin netdev
Füge Benutzer »wetteradmin« der Gruppe »netdev« hinzu ...
Benutzer wetteradmin wird zur Gruppe netdev hinzugefügt.
Fertig.

wetter@PALUSTRIS:/media/wetter/Wetter $ sudo addgroup wetteradmin input
Füge Benutzer »wetteradmin« der Gruppe »input« hinzu ...
Benutzer wetteradmin wird zur Gruppe input hinzugefügt.
Fertig.

Als nächstes wird der Account angelegt, unter welchem später pywws automatisch laufen soll. Ebenso wie für "wetteradmin" ist der hier verwendete "pywwsuser" als Platzhalter zu sehen.

wetter@PALUSTRIS:/media/wetter/Wetter $ sudo adduser -shell /bin/bash -home /media/wetter/Wetter/pywwsuser pywwsuser
Lege Benutzer »pywwsuser« an ...
Lege neue Gruppe »pywwsuser« (1002) an ...
Lege neuen Benutzer »pywwsuser« (1002) mit Gruppe »pywwsuser« an ...
Erstelle Home-Verzeichnis »/media/wetter/Wetter/pywwsuser« ...
Kopiere Dateien aus »/etc/skel« ...
Geben Sie ein neues Passwort ein:
Geben Sie das neue Passwort erneut ein:
passwd: Passwort erfolgreich geändert
Benutzerinformationen für pywwsuser werden geändert.
Geben Sie einen neuen Wert an oder drücken Sie ENTER für den Standardwert
Vollständiger Name []:
Zimmernummer []:
Telefon geschäftlich []:
Telefon privat []:
Sonstiges []:
Sind die Informationen korrekt? [J/n]

wetter@PALUSTRIS:/media/wetter/Wetter $ sudo addgroup pywwsuser plugdev
Füge Benutzer »pywwsuser« der Gruppe »plugdev« hinzu ...
Benutzer pywwsuser wird zur Gruppe plugdev hinzugefügt.
Fertig.

wetter@PALUSTRIS:/media/wetter/Wetter $ sudo addgroup pywwsuser users
Füge Benutzer »pywwsuser« der Gruppe »users« hinzu ...
Benutzer pywwsuser wird zur Gruppe users hinzugefügt.
Fertig.

wetter@PALUSTRIS:/media/wetter/Wetter $ sudo addgroup pywwsuser input
Füge Benutzer »pywwsuser« der Gruppe »input« hinzu ...
Benutzer pywwsuser wird zur Gruppe input hinzugefügt.
Fertig.

wetter@PALUSTRIS:/media/wetter/Wetter $ sudo addgroup wetterstation
Lege Gruppe »wetterstation« (GID 1003) an ...
Fertig.

wetter@PALUSTRIS:/media/wetter/Wetter $ sudo adduser wetteradmin wetterstation
Füge Benutzer »wetteradmin« der Gruppe »wetterstation« hinzu ...
Benutzer wetteradmin wird zur Gruppe wetterstation hinzugefügt.
Fertig.

wetter@PALUSTRIS:/media/wetter/Wetter $ sudo adduser pywwsuser wetterstation
Füge Benutzer »pywwsuser« der Gruppe »wetterstation« hinzu ...
Benutzer pywwsuser wird zur Gruppe wetterstation hinzugefügt.
Fertig.

wetter@PALUSTRIS:/media/wetter/Wetter $ sudo adduser wetter wetterstation
Füge Benutzer »wetter« der Gruppe »wetterstation« hinzu ...
Benutzer wetter wird zur Gruppe wetterstation hinzugefügt.
Fertig.

sudo visudo /etc/sudoers

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root    ALL=(ALL:ALL) ALL
wetter  ALL=(ALL) NOPASSWD: ALL
wetteradmin      ALL=(ALL) NOPASSWD: ALL
# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "@include" directives:
@includedir /etc/sudoers.d

wetter@PALUSTRIS:/media/wetter/Wetter $ sudo pip install --upgrade pip
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: pip in /usr/lib/python3/dist-packages (20.3.4)
Collecting pip
Downloading pip-22.3.1-py3-none-any.whl (2.1 MB)
|████████████████████████████████| 2.1 MB 4.1 MB/s
Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 20.3.4
Not uninstalling pip at /usr/lib/python3/dist-packages, outside environment /usr
Can't uninstall 'pip'. No files were found to uninstall.
Successfully installed pip-22.3.1

wetter@PALUSTRIS:/media/wetter/Wetter $ pip install libusb1
Defaulting to user installation because normal site-packages is not writeable
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting libusb1
Downloading https://www.piwheels.org/simple/libusb1/libusb1-3.0.0-py3-none-any.whl (62 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.1/62.1 kB 736.8 kB/s eta 0:00:00
Installing collected packages: libusb1
Successfully installed libusb1-3.0.0

wetter@PALUSTRIS:/media/wetter/Wetter $ pip install pyusb
Defaulting to user installation because normal site-packages is not writeable
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting pyusb
Downloading https://www.piwheels.org/simple/pyusb/pyusb-1.2.1-py3-none-any.whl (58 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 58.4/58.4 kB 1.0 MB/s eta 0:00:00
Installing collected packages: pyusb
Successfully installed pyusb-1.2.1

wetter@PALUSTRIS:/media/wetter/Wetter $ pip install python-daemon
Defaulting to user installation because normal site-packages is not writeable
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting python-daemon
Downloading https://www.piwheels.org/simple/python-daemon/python_daemon-2.3.2-py3-none-any.whl (34 kB)
Requirement already satisfied: setuptools in /usr/lib/python3/dist-packages (from python-daemon) (52.0.0)
Collecting lockfile>=0.10
Downloading https://www.piwheels.org/simple/lockfile/lockfile-0.12.2-py2.py3-none-any.whl (13 kB)
Requirement already satisfied: docutils in /usr/lib/python3/dist-packages (from python-daemon) (0.16)
Installing collected packages: lockfile, python-daemon
Successfully installed lockfile-0.12.2 python-daemon-2.3.2

wetter@PALUSTRIS:/media/wetter/Wetter $ sudo pip install pywws
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting pywws
Downloading https://www.piwheels.org/simple/pywws/pywws-22.10.0-py3-none-any.whl (238 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 238.3/238.3 kB 1.8 MB/s eta 0:00:00
Collecting python-dateutil
Downloading https://www.piwheels.org/simple/python-dateutil/python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 247.7/247.7 kB 4.0 MB/s eta 0:00:00
Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil->pywws) (1.16.0)
Installing collected packages: python-dateutil, pywws
Successfully installed python-dateutil-2.8.2 pywws-22.10.0

wetter@PALUSTRIS:/media/wetter/Wetter $ sudo pip3 install pyusb
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting pyusb
Downloading https://www.piwheels.org/simple/pyusb/pyusb-1.2.1-py3-none-any.whl (58 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 58.4/58.4 kB 629.7 kB/s eta 0:00:00
Installing collected packages: pyusb
Successfully installed pyusb-1.2.1
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv


Erster Test:

wetter@PALUSTRIS:/media/wetter/Wetter $ sudo python3 -m pywws.testweatherstation
12:02:37:pywws.logger:pywws version 22.10.0, build 1701 (f05cac2)
0000 55 aa 4b ff ff ff 18 01 02 07 26 18 01 02 08 19 1e 20 02 58 09 00 00 00 11 00 00 e8 01 00 0c 27
0020 a4 27 8c 27 00 00 00 00 00 00 00 22 12 06 12 01 41 23 c8 00 00 00 46 2d 2c 01 64 80 c8 00 00 00
0040 64 00 64 80 a0 28 80 25 a0 28 80 25 00 b4 00 00 68 01 00 0a 00 f4 01 12 00 c0 c6 2d 0a 01 5a d5
0060 02 00 3d 28 63 41 d0 00 ae 00 6d 00 04 00 6d 00 04 00 4c 00 18 80 fb 27 31 27 33 28 40 27 1f 00
0080 44 00 15 00 2d 00 00 00 18 00 72 00 00 22 12 01 08 31 18 01 02 13 28 18 01 02 01 40 22 11 27 14
00a0 59 18 01 01 12 11 18 01 02 07 24 18 01 01 12 09 22 12 05 19 14 18 01 01 12 09 22 12 05 19 14 22
00c0 11 29 07 22 18 01 02 08 35 18 01 02 06 55 22 11 28 05 23 22 12 01 10 32 22 11 28 05 23 22 11 27
00e0 11 13 22 11 27 19 48 22 11 29 07 00 22 12 06 00 00 18 01 01 12 00 22 12 01 00 00 22 11 28 15 09
wetter@PALUSTRIS:/media/wetter/Wetter $

Wenn die Wetterstation erst kurz in Betrieb ist, dann kann es sein, dass der DCF Empfänger die Zeit noch nicht synchronisiert hat. Mit dem folgenden Befehl kann man versuchen, die Zeit mit dem Raspberry abzugleichen:
wetter@PALUSTRIS:/media/wetter/Wetter $ sudo python -m pywws.setweatherstation -c

12:07:19:pywws.logger:pywws version 22.10.0, build 1701 (f05cac2)
Clock setting is not known to work on any model of weather station.
If it works for you, please let Jim Easterbrook know.
waiting for exact minute
wetter@PALUSTRIS:/media/wetter/Wetter $ sudo python -m pywws.setweatherstation -r 5
12:09:26:pywws.logger:pywws version 22.10.0, build 1701 (f05cac2)
wetter@PALUSTRIS:/media/wetter/Wetter $

wetter@PALUSTRIS:/media/wetter/Wetter $ su - pywwsuser
Passwort:
pywwsuser@PALUSTRIS:/media/wetter/Wetter$ mkdir wetterdaten
pywwsuser@PALUSTRIS:/media/wetter/Wetter$ cd wetterdaten
pywwsuser@PALUSTRIS:/media/wetter/Wetter/wetterdaten$ mkdir templates
pywwsuser@PALUSTRIS:/media/wetter/Wetter/wetterdaten$ mkdir log
pywwsuser@PALUSTRIS:/media/wetter/Wetter/wetterdaten$ mkdir tmp
pywwsuser@PALUSTRIS:/media/wetter/Wetter/wetterdaten$ mkdir results
pywwsuser@PALUSTRIS:/media/wetter/Wetter/wetterdaten$ exit
Abgemeldet

Kopiere die Templates:

wetter@PALUSTRIS:/media/wetter/Wetter $ sudo cp -r /usr/local/lib/python3.9/dist-packages/pywws/examples/templates /media/wetter/Wetter/pywwsuser/wetterdaten

sudo nano /etc/udev/rules.d/38-weather-station.rules

# WH-3080 Weather Station
ACTION!="add|change", GOTO="weather_station_end"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1941", ATTRS{idProduct}=="8021", GROUP="wetterstation"
LABEL="weather_station_end"

wetter@PALUSTRIS:/media/wetter/Wetter $ sudo chown -R pywwsuser:wetterstation /media/wetter/Wetter/pywwsuser/wetterdaten

Daten der neuen Wetterstation


E-Mail
Infos