MOSMIX: Wettervorhersage mit Open Data des DWD

Stand: 2021-07-03


Worum geht es?

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.


Das Programm mosmixparser

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:

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.


Download

mosmixparser-1.0.1.tar.gz, Version 1.0.1 vom 2021-06-21

Kompilieren mit (C++-Standard >= 17) / compile using:

c++ mosmixparser.cpp -o mosmixparser

Beispielausgabe einer einmal tĂ€glich aktualisierten Wettervorhersage fĂŒr den Raum Selters (Westerwald) hier.


Versionsgeschichte

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.


Schrittweise Anleitung fĂŒr Einsteiger

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.1.tar.gz und tar xzf mosmixparser-1.0.1.tar.gz.

Per cd mosmixparser-1.0.1 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.1/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.


English Summary

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.



Über mich

Schon in jungen Jahren war ich fasziniert von den Möglichkeiten, die Computer und Technik bieten. In dieser Zeit brachte ich mir das Programmieren selbst bei und konfigurierte Betriebssysteme und Software bis spÀt in die Nacht.

Im Studium erweiterte und vertiefte ich mein Wissen. ZunÀchst in Bonn, wo ich Physik studierte. Die Physik ist ideal, um analytisches Denken zu erlernen und lösungsorientiertes Handeln zu verinnerlichen.
Dabei kam der Wunsch auf, praxisnÀheres Wissen zu erlangen und mich wieder stÀrker auf den Bereich Technik und IT zu fokussieren. Deshalb setzte ich mein Studium in Bochum fort, wo ich IT-Sicherheit studierte und mit dem Master of Science abschloss.

Seitdem entwickle ich IT-Lösungen und Internet-of-Things-Anwendungen und berate Kunden im Bereich IT-Sicherheit und Netzwerke. Schauen Sie sich doch einmal meine Dienstleistungspalette an!



Kontakt

E-Mail kontakt (a) rudo.info
PGP-SchlĂŒssel   939E96E995890F9C
Telefon+49 1590 18 222 97

Sie erreichen mich am besten per E-Mail oder ĂŒber das Kontaktformular. Schildern Sie darin bitte kurz Ihr Anliegen und ich werde mich schnellstmöglich bei Ihnen melden. Da ich unterschiedlich in meine Projekte eingebunden bin, schwankt meine telefonische Erreichbarkeit entsprechend.

Ich freue mich von Ihnen zu hören!
Ihr Thomas Rudolph

Kontaktformular



Ihr Name

Ihre E-Mail-Adresse

Leer lassen


Ihre Nachricht

Ihre Anfrage wird verschlĂŒsselt an den Webserver geschickt. Sie erklĂ€ren sich damit einverstanden, dass Ihre Angaben zur Beantwortung Ihrer Anfrage von mir verwendet werden dĂŒrfen.

Ich stimme den DatenschutzerklÀrungen zu.


     
Impressum, Schlichtungsstelle und DatenschutzerklĂ€rung