fast bedeckt -1,1 °C

Software

echte Wöllsdorfer Meßwerte für Döbeln und Umgebung

WeeWX

freie Software für Ihre Wetterstation

WeeWX-Logo

Da die Homepage von WeeWX nur auf Englisch verfügbar ist, habe ich die allgemeinen Informationen hier frei übersetzt. Hier finden Sie die Originalseite.

WeeWX ist eine frei verfügbare Wettersoftware. Sie wurde von Tom Keffer und Matthew Wall geschrieben und wird von einer Gruppe aktiver Programmierer aus der ganzen Welt weiterentwickelt. Für viele Wetterstationen und Meßhardware gibt es Treiber. Auch Sensoren, die nichts mit Wetterstationen zu tun haben, können eingebunden werden, zum Beispiel von der Heizung oder der Solaranlage. Die Meßwerte werden in einer erweiterbaren Datenbank gespeichert.

Die Datenerfassung ist das eine, die Darstellung ist das andere. WeeWX erlaubt dem Nutzer die Erstellung eigener Visualisierungen (Skins genannt). Das hat viele Nutzer angeregt, und es stehen zahlreiche Varianten zur Verfügung, auch für den, der sich nicht in die Webprogrammierung einarbeiten will. Werte können als Zahlenwerte und in Form von Graphiken dargestellt werden.

WeeWX ist in der Programmiersprache Python geschrieben und damit praktisch betriebssystemunabhängig. Es kann unter jedem Betriebssystem installiert werden, für das ein Python-Interpreter verfügbar ist, darunter Linux, MacOS und Windows. Als Datenbank können SQLITE und MySQL genutzt werden.

Visualisierung Seasons

Skin "Seasons"

Visualisierung Belchertown

Skin "Belchertown"

Wesentliche Eigenschaften:

  • arbeitet mit vielen Wetterstationsfabrikaten zusammen
  • ermöglicht die Datenübertragung (Upload) an viele Wetternetzwerke, darunter Wetternetz Sachsen, Regionalwetter Sachsen-Anhalt, Windy, AWEKAS, AerisWeather (PWSweather) u.a.
  • Installationspakete für Debian (Ubuntu), Red Hat (CentOS) und SuSE
  • Upload auf eigenen Webspace
  • Mond- und Sonnendaten (Aufgang, Untergang, Ereignisse)
  • Unterstützung für unterschiedliche Visualisierungen, genannt skin (Auch der Nutzer selbst kann Visualisierungen gestalten.)
  • Daten können sowohl mit SQLITE als auch mit MySQL gespeichert werden
  • bis Version 4.X kompatibel sowohl mit Python 2 als auch mit Python 3, ab Version 5.0 nur noch Python 3
  • systematische Meßabweichungen können mit Kalibrierungswerten ausgeglichen werden
  • Filterung unlogischer Werte
  • einfache, leicht verständliche Micro-Kernel-Architektur
  • umfangreiche Erweiterbarkeit mit Treibern, Visualisierungen, Berechnungen
  • eine Support-Gruppe auf Google, die bei Problemen hilft

Informationsquellen zu WeeWX

Installationsanleitung für Debian, Ubuntu und Raspberry Pi

Diese Anleitung gilt für Linux-Distributionen, die zur Paketverwaltung DEB-Pakete verwenden. Dazu zählen neben Debian selbst u.a. Ubuntu und seine Ableger, Mint und Raspbian. Anleitungen für andere Linux-Distributionen und macOS finden Sie hier (englisch).

Paketverwaltung konfigurieren

Zuerst muß der WeeWX-Server als vertrauenswürdige Paketquelle definiert werden. Bitte den Bindestrich am Ende nicht vergesssen. Das Zeichen hinter dem 'q' ist der Buchstabe 'O'.

Bis WeeWX 4 mit Debian ab 10 mit Python 3:

wget -qO - https://weewx.com/keys.html | sudo apt-key add -
wget -qO - https://weewx.com/apt/weewx-python3.list | sudo tee /etc/apt/sources.list.d/weewx.list

Bis WeeWX 4 und Debian 9 mit Python 2:

wget -qO - https://weewx.com/keys.html | sudo apt-key add -
wget -qO - https://weewx.com/apt/weewx-python2.list | sudo tee /etc/apt/sources.list.d/weewx.list

WeeWX-Version 4 und 5 mit Python 3:

wget -qO - https://weewx.com/keys.html | sudo gpg --dearmor --output /etc/apt/trusted.gpg.d/weewx.gpg
echo "deb [arch=all] https://weewx.com/apt/python3 buster main" | sudo tee /etc/apt/sources.list.d/weewx.list

Installation und Konfiguration

Die Installation wird mit folgenden Befehlen ausgeführt:

sudo apt-get update
sudo apt-get install weewx

Während der Installation werden die wesentlichen Parameter der Station abgefragt. Danach läuft WeeWX bereits im Hintergrund als Dienst (daemon). Weitere Einstellungen können dann durch Editieren der Konfigurationsdatei /etc/weewx/weewx.conf vorgenommen werden. Nach Änderungen an der Datei muß WeeWX neu gestartet werden.

Neustart von WeeWX

Abhängig davon, welche Init-Methode das verwendete Linux benutzt, gibt es zwei verschiedene Arten, WeeWX neu zu starten.

Neustart von WeeWX bei Linux-Installationen mit SysVinit:

sudo /etc/init.d/weewx stop
sudo /etc/init.d/weewx start

Neustart von WeeWX bei Linux-Installationen mit systemd:

sudo systemctl stop weewx
sudo systemctl start weewx

Hinweise zu WeeWX 5.0

WeeWX 5.0 hat andere Hilfsprogramme als die Vorgängerversionen. Einstellungen werden einheitlich mit dem Tool weectl vorgenommen.

Achtung!
Wurde die Beta von WeeWX 5.0 aus dem DEB-Paket installiert, findet WeeWX installierte Erweiterungen nicht. Als Workaround kann man unmittelbar nach der Installation von WeeWX und vor Installation von Erweiterungen eingeben:
cd /etc/weewx/bin
sudo rm user
sudo ln -s /usr/share/weewx/user user

Einstellungen für Davis Vantage Pro 2

Da die Wetterstation Davis Vantage Pro 2 sehr weit verbreitet ist und häufig eingesetzt wird, sollen hier ein paar Hinweise extra für sie gegeben werden. Zur Übertragung der Wetterdaten auf den Computer gibt es für diese Wetterstation vier verschiedene Hardware-Varianten, für die unterschiedliche Treiber verwendet werden müssen.

Mit dem Treiber "Vantage" aus dem Lieferumfang von WeeWX werden angesprochen:

  • WeatherLink Serial-Port Data Logger 6510SER (Adapter mit serieller Schnittstelle (RS232, V.24) zum Einbau in die Konsole)
  • WeatherLink USB Data Logger 6510USB (USB-Adapter zum Einbau in die Konsole)
  • WeatherLink IP 6555 (Ethernet-Adpater zum Einbau in die Konsole; wird nicht mehr hergestellt)

Ein extra zu installierender Treiber ist nötig für:

  • WeatherLinkLive 6100EU als eigenständiges Gerät mit Ethernet-Anschluß

Es gibt mehrere Treiber, die für das WeatherLinkLive 6100 gedacht sind. Mir bekannt sind die folgenden Treiber:

WeeWX unter Windows

Die weitaus meisten WeeWX-Installationen werden wohl unter Linux laufen. Linux ist das typische Betriebssystem für kleine technische Anwendungen. Ein in fast jedem Haushalt vorhandenes Beispiel ist die Fritz-Box von AVM, die die Verbindung zum Internet herstellt. Da es mit Installationen unter Linux viel mehr Erfahrung gibt, wird man dafür auch viel mehr Hilfe erfahren können.

Schritt 1: Installation von Python

Gleichwohl, wer WeeWX partout unter Windows laufen lassen will, benötigt zunächst einen Python-Interpreter für dieses Betriebssystem. Den gibt es als Installationspaket hier. Bei der Installation muß "Add Python to PATH" ausgewählt werden, damit Windows das Programm später auch findet.

Schritt 2: Installation der nötigen Python-Module

Als nächstes müssen die nötigen Python-Module mittels pip installiert werden. Dazu öffnen Sie ein Terminalfenster (Kommandofenster) und führen diese Befehle der Reihe nach aus:

python3 -m pip install configobj
python3 -m pip install Cheetah3
python3 -m pip install Pillow
python3 -m pip install pyephem
python3 -m pip install pyserial
python3 -m pip install pyusb

Schritt 3: Installation von WeeWX

Da es für Windows kein vorgefertigtes WeeWX-Paket gibt, erfolgt die Installation mittels setup.py (bei WeeWX 5 auch mittels pip möglich). Dazu muß das Quellpaket unter https://weewx.com/downloads/ heruntergeladen und entpackt werden. Das Entpacken gelingt mittels WinZIP oder einem ähnlichen Entpacker. Anschließend muß die Datei setup.cfg mit einem Editor geöffnet und dort der Installationspfad eingetragen werden. Zum Schluß startet man die Installation in einem Terminalfenster mit:

python3 setup.py install

Schritt 4: Installation von Treibern und Erweiterungen

Bei den einzelnen Erweiterungen gibt es jeweils eine Installationsanleitung. Sie gilt im Grundsatz auch für Windows. Zuerst ist das Paket herunterzuladen. Dann wird es mit dem folgenden Befehl in einem Terminalfenster installiert:

python3 wee_extension --install Dateiname

Hinweis: Leider fehlt auch mir die praktische Erfahrung, so daß dieser Abschnitt nur die grundsätzliche Vorgehensweise beschreiben kann.

Regen in mm und Wind in km/h

WeeWX kennt zwei metrische Einheitensysteme, METRIC und METRICWX. Leider verwenden beide nicht die in Deutschland übliche Kombination der Maßeinheiten für Regen in mm und Wind in km/h. Das kann aber individuell in weewx.conf eingestellt werden.

Einheiteneinstellung bis Version 4.5

Einstellung einheitlich für alle Skins:

[StdReport]
    ...
    [[Defaults]]
        [[[Units]]]
            [[[[Groups]]]]
                group_rain = mm
                group_rainrate = mm_per_hour
                group_speed = km_per_hour

Diese Einstellung kann auch individuell bei jeder einzelnen Skin in derselben Weise getroffen werden. Außerdem kann diese Einstellung in skin.conf vorgenommen werden.

Einheiteneinstellung ab Version 4.6

Ab Version 4.6 ermöglicht WeeWX, das Einheitensystem für die Anzeige bei der Skin-Konfiguration direkt auszuwählen. Es ist nicht mehr nötig, jede Größe einzeln auf metrische Einheiten einzustellen. Dies erleichtert die Konfiguration deutlich, aber Änderungen der Einheit für einzelne Größen müssen dadurch anders konfiguriert werden.

[StdReport]
    ...
    [[zu konfigurierender Report]]
        ...
        unit_system = METRIC
        [[[Units]]]
            [[[[Groups]]]]
                group_rain = mm
                group_rainrate = mm_per_hour
                group_speed = km_per_hour

Die Einstellung muß für jede Skin einzeln vorgenommen werden.

Zeitspannen für Diagramme und Zusammenfassungen

Konfigurationsoptionen wie etwa aggregate_interval verlangen die Angabe einer Zeitspanne in Sekunden. Monate und Jahre haben aber nicht immer dieselbe Länge. Selbst der Tag hat eine abweichende Länge, wenn die Sommerzeit beginnt oder endet. Daher kann man die Länge nicht einfach in Sekunden angeben. WeeWX verwendet an der Stelle spezielle Zahlenwerte, die nicht als Sekunden sondern als Zeitspannen mit besonderer Bedeutung interpretiert werden. Diese Werte sind in der folgenden Tabelle aufgeführt.

Zeitspanne Englisch einzutragender Wert Berechnung Länge
Stunde hour 3600 60 * 60 Schaltsekunden werden nicht berücksichtigt
Tag day 86400 24 * 3600 Standard 86400s, Sommerzeitumstellung 82800s oder 90000s
Woche week 604800 7 * 86400 7 Tage
Monat month 2629800 365,25 / 12 * 86400 28, 29, 30 oder 31 Tage
Jahr year 31557600 365,25 * 86400 Normaljahr 365 Tage, Schaltjahr 366 Tage

An manchen Stellen können die englischen Wörter anstelle der Zahlenwerte verwendet werden, an anderen wiederum nicht.

Formatierung von Werten in Skins

Wie Werte grundsätzlich formatiert werden sollen, kann man in der Konfiguration im Abschnitt "Units" einstellen. Das geht sowohl in weewx.conf als auch in skin.conf. Möchte man im Einzelfall davon abweichen, ist der Weg nicht immer so offensichtlich. Das Konfigurationshandbuch beschreibt es zwar, aber nicht in allen Details. Dieser Abschnitt ergänzt Besonderheiten.

Allgemeine Regeln

Grundsätzlich kann man überall eine Formatierungsanweisung anhängen. Der allgemeine Aufbau ist wie folgt:

.format(format_string=None, None_string=None, add_label=True, localize=True)

Im Parameter "format_string" steht die von den Programmiersprachen C und auch Python bekannte mit dem Prozentzeichen beginnende Codierung. Beispiele sind:

  • "%s": Standardformat für den betreffenden Datentyp
  • "%.1f": reelle Zahl mit einer Nachkommastelle
  • "%02d": ganze Zahl mit zwei Stellen und ggf. führender Null

Zeitstempel, Datum, Uhrzeit

Für Werte mit den Einheiten "unix_epoch", "unix_epoch_ms" und "unix_epoch_ns" gibt es spezielle Platzhalter:

%a %A %d %m %b %B %Y %H %M %S
Wochentag abgekürzt ausgeschrieben Tag Monat als Zahl abgekürzt ausgeschrieben Jahr Stunde Minute Sekunde

Beispiele:

Der GTS-Frühlingsanfang war am $current.GTSdate.format("%d.%m.%Y").
Die aktuelle Uhrzeit ist $current.dateTime.format("%H:%M:%S").
Heute ist $current.dateTime.format("%A").

Werte des Typs group_deltatime

Formatierung bis Version 4.9

Werte des Typs group_deltatime werden immer aufgegliedert in die Komponenten Tag, Stunde, Minute und Sekunde ausgegeben. Die normalen Formatierungs-Strings funktionieren deshalb hier nicht. Stattdessen muß man nach dem Prozentzeichen den Namen der gewünschten Komponente in runden Klammern angeben. Zum Beispiel:

.format("%(hour)d:%(minute)02d:%(second)02d")

Folgende Kennungen können benutzt werden: day hour minute second day_label hour_label minute_label second_label. Wenn "day" fehlt, werden die Tage den Stunden zugeschlagen.

Formatierung ab Version 4.10

Mit Version 4.10 wurde eine grundsätzliche Änderung vorgenommen, die inkompatibel zu früheren Versionen ist. Zeitspannen werden jetzt wie andere Größen behandelt. Das heißt, es wird ein Zahlenwert mit Einheit ausgegeben. Durch Anfügen einer Einheit kann man die Ausgabe auf die entsprechende Einheit umstellen. Für die Formatierung dieser Werte gilt dasselbe wie unter Allgemeine Regeln beschrieben. Zum Beispiel zur Darstellung einer Zeitspanne in Stunden:

.hour.format("%.1f")

Will man eine Aufteilung in Tage, Stunden, Minuten und Sekunden, muß man jetzt die neue Option long_form benutzen. Sie kann mit und ohne Parameter stehen:

.long_form
.long_form("%(hour)d:%(minute)02d:%(second)02d")

Hier können dieselben Kennungen wie früher benutzt werden: day hour minute second day_label hour_label minute_label second_label. Wenn "day" fehlt, werden die Tage den Stunden zugeschlagen.

WeeWX-Installation der Wetterstation Wöllsdorf

Grundinstallation

Andere Erweiterungen

  • MQTTSubscribe (Empfang von MQTT-Nachrichten)
  • MQTT (Veröffentlichung der Wetterdaten per MQTT)
  • GTS (Sonnenenergie, Grünlandtemperatursumme)
  • DWD (Vorhersage und Warnungen des Deutschen Wetterdienstes)
  • airQ (Luftqualität)
  • photovoltaics (Solaranlage)
  • SNMP (Abfragen von Meßwerten per SNMP)
  • Funktionsüberwachung (Monitoring)
  • weathericons (Wettersymbole im SVG-Format, skalierbar)
  • svg2png (SVG mit Wetterinformationen in PNG konvertieren, Webcam-Bilder mit Wetterinformationen versehen)
  • PrecipMeter (Distrometer, Gerät zur Bestimmung von Niederschlagsart und -menge)