Der Deutsche Wetterdienst (DWD) stellt seit einigen Jahren Vorhersagedaten als Open Data zur Verfügung. Es handelt sich dabei um MOS-Daten (Model Output Statistics) für 5000 Orte weltweit, die allermeisten davon in Deutschland. Vom DWD werden diese Daten MOSMIX genannt und bieten eine Kurzfristvorhersage, die stündlich aktualisiert wird und eine 10-Tages-Vorhersage mit sechsstündigem Aktualisierungsintervall. Aufgrund eines Urteils bereitet der DWD diese Daten jedoch nicht grafisch und ansprechend auf. Die Rohdaten müssen also selbst verarbeitet werden. Informationen zu Dateiformaten und eine Liste mit Stationen hält der DWD am rechten Rand dieser Seite bereit. Im Stationskatalog bezeichnet der Wert in der Spalte id die ID der jeweiligen Station, unter der die Daten auf dem Open-Data-Server unter weather/local_forecasts/mos/MOSMIX_L/single_stations heruntergeladen werden können. Hier empfiehlt es sich, die Datei MOSMIX_L_LATEST_ID.kmz
zu nutzen.
Es existieren bereits Initiativen, diese Daten ansprechend aufzuarbeiten. Beispiele sind die Website morgendwirdes.de und die Android-Anwendung Kleine Wettervorschau Deutschland, die im F-Droid heruntergeladen werden kann.
Aus persönlicher Neugier und weil ich mit diesen Lösungen noch nicht ganz zufrieden war, habe ich selbst eine Software geschrieben, die die MOSMIX-Daten aufbereitet und als HTML5 ausgibt. Sie kommt gänzlich ohne Grafiken aus, da sie zur Visualisierung des Wetters auf Text, Farben und Emojis setzt und Graphen mittels HTML5-Canvas-Elementen und etwas Javascript erzeugt. Die komplette Vorhersageseite ist daher nur ca. 35 kB groß und damit ein großer Kontrast zu kommerziellen Plattformen.
Diese Darstellung entspricht nur bedingt den Designvorstellungen der Gegenwart. Mein Ziel war es, zwischen einer möglichst kompakten Darstellung aller relevanten Werte ohne aufgeblähte Effekte und der Notwendigkeit der Einbindung großer Bibliotheken sowie einer ästhetischen Darstellung abzuwägen.
Der Ablauf geschieht folgendermaßen und ist auf Linux-Systeme optimiert:
wget
-Befehl im beiliegenden Skript lädt die Daten von der URL des angegebenen MOSMIX-Standorts herunter. Die kmz-Datei wird mit unzip
entpackt und erhält mit dem mv
-Befehl einen konstanten Dateinamen. Nun wird der mosmixparser
aufgerufen mit der kml
-Datei als Eingabe und der Datei wx.htm
als Ausgabe: ./mosmixparser -m MOSMIX.kml -h wx.htm
mosmixparser
filtert nun die Daten für einige relevante Werte wie Datum, Bewölkung, Regenwahrscheinlichkeit und Windgeschwindigkeit heraus und schreibt sie in Arrays. Der Code hierfür befindet sich in der Datei mosmixparser.cpp
. Es ist außerdem möglich, die Daten mit dem Paramter -c
und unter Angabe eines Dateinamens in eine CSV-Datei schreiben zu lassen, um sie beispielsweise mittels Gnuplot visualisieren zu können. Der Code, der die HTML-Seite erzeugt, befindet sich in mosmixhtml.cpp
.Das Programm ist in C++ geschrieben und sollte als schneller Proof-of-Concept angesehen werden, der aber bei mir seit Monaten zuverlässig funktioniert, jedoch keine hohen Ansprüche an die Codequalität stellt. Der Code ist absichtlich recht schlicht gehalten und damit hoffentlich leicht verständlich, um Anpassungen zu ermöglichen. Verbesserungen sind durchaus sinnvoll und erwünscht. Die Software ist unter der GPL-3.0-or-later lizenziert. Der Code, der für die Ausgabe in die HTML-Datei zuständig ist, neigt in Richtung Spaghetticode. Dies gilt insbesondere, da der HTML-CSS-Header, die HTML-Formatierung und der Javascript-Code im C++-Code verkapselt ist. Diese Daten stattdessen aus externen Dateien einzulesen, könnte sinnvoll sein. Auch kann es sein, dass Feinanpassungen bei der Auswertung der Wetterdaten nötig werden. Manche Ausgaben (insbesondere die Wettersymbole) beruhen rein auf empirischen Erfahrungen.
Alle Werte werden über sechs Stunden gemittelt. Bei einigen Werten wird stattdessen (z.B. bei Windböen) der Höchstwert innerhalb dieser sechs Stunden angezeigt. Als Temperatur wird zweimal rund um die Nachtstunden der Tiefstwert und tagsüber zweimal der Höchstwert angezeigt wird.
mosmixparser-1.0.2.tar.gz, Version 1.0.2 vom 2023-09-08
Kompilieren mit (C++-Standard >= 17) / compile using:
c++ mosmixparser.cpp -o mosmixparser
Beispielausgabe einer Wettervorhersage für den Raum Selters (Westerwald) hier.
Version 1.0.2: Felder mit "-" in der MOSMIX.kml-Datei führen nicht mehr zum Abbruch der Auswertung der Variable
Version 1.0.1: Das Regen-Symbol wird nicht mehr nur bei >= 30 % Regenwahrscheinlichkeit, sondern auch bei >= 1 l/m² Regenmenge angezeigt, um sommerliche Gewitter-Regenschauern besser erfassen zu können.
Zunächst müssen die notwendigen Compiler installiert sein. Auf Debian-/Ubuntu-basierten Systemen (u.a. Linux Mint) sind diese im Metapaket build-essential
enthalten, das über die Paketverwaltung installiert werden kann.
In einen beliebigen Ordner kann nun der mosmixparser heruntergeladen und entpackt werden. Wenn das Terminal benutzt wird, geschieht dies z.B. mit den Befehlen wget https://rudo.info/mosmixparser-1.0.2.tar.gz
und tar xzf mosmixparser-1.0.2.tar.gz
.
Per cd mosmixparser-1.0.2
wird nun in den entpackten Ordner gewechselt und dort mit c++ mosmixparser.cpp -o mosmixparser
das Programm kompiliert. Nun wird aus dem Stationskatalog des DWD die ID des gewünschten Ortes herausgesucht und im Editor der Wahl in die Datei mosmixskript
geschrieben. Beispielsweise wird für den ersten Ort in der Liste (Beveringen) EW002
eingesetzt. Dies muss überall dort geschehen, wo in der vorhandenen Datei K172
steht (also dreimal). Im Terminal lässt sich für die Änderung statt eines Editors auch der Befehl sed -i 's/K172/EW002/g' mosmixskript
nutzen (hier muss K172
bleiben und EW002
durch die gewünschte Station ersetzt werden).
Jetzt ist mosmixparser einsatzbereit und kann im Ordner per ./mosmixskript
(oder von jedem anderen Ort im Dateisystem mit vollem Pfad, feststellbar mit dem Befehl pwd
) aufgerufen werden. Es erzeugt die HTML-Datei wx.htm
mit der Wettervorhersage, die im Browser aufgerufen werden kann.
Fortgeschrittene Nutzer können mosmixparser nun mittels crontab automatisch zu einem bestimmten Zeitpunkt aufrufen lassen. Per crontab -e
öffnet sich ein Editor und erlaubt die Konfiguration der automatischen Ausführung. Ganz unten in die Datei geschrieben, führt die Zeile 10 12 * * * /home/nutzer/mosmixparser-1.0.2/mosmixskript
dazu, dass jeden Tag um 12 Uhr 10 (sic!) eine neue wx.htm erzeugt wird, sofern der Pfad an die örtlichen Gegebenheiten angepasst wurde. Unterhalb dieser Zeile muss zudem eine Leerzeile eingefügt werden.
This program uses the open MOSMIX data by the German weather service (DWD) to create an HTML5 based weather forecast for the next ten days at a station selected by the user and chosen among 5000 stations provided by the DWD (most of them in Germany). A script downloads the data from the DWD servers as a kmz file, unzips it to a kml file and feeds it to the mosmixparser
software. The software itself is written in C++. The HTML output routines in mosmixhtml.cpp
tend to be spaghetti code as they include the encapsulated Javascript and HTML formatting within the code as well as empirical decisions on how to display the weather. Reading this data from a file might be a cleaner solution. The software is licensed under GPL-3.0-or-later. Feel free to fork.
Sie finden hier Kontaktmöglichkeiten und weitere Informationen über mich.