Wettervorhersagen mit Daten des DWD – Teil [1/4]: Übersicht

Das Problem mit kommerziellen Wetter-APIs

Wetter-Daten braucht man überraschend häufig. Irgendein Projekt, eine kleine App, ein Skript, das einem morgens die Jacken-Entscheidung abnimmt. Und fast immer landet man früher oder später bei derselben Frage: Welche API nutze ich?

Die Antwort, die man überall findet, ist OpenWeatherMap. Manchmal auch Weather.com, AccuWeather oder den eingestellten DarkSky-Dienst von Apple. Diese Antworten haben gemeinsam, dass sie alle entweder zu einer Kreditkarteneingabe oder zu einer Tracking-ID bei jedem Request führen.

Update: Johannes Spielmann hat mich auf Mastodon darauf hingewiesen, dass Open-Meteo.com kostenlos ist und keinen API-Key verlangt.

Dabei gibt es für Deutschland und ausgwählte Orte weltweit eine bessere Option. Sie ist kostenlos und qualitativ überlegen: der Deutsche Wetterdienst (DWD).

Deutscher Wetterdienst – offen und kostenlos

Wettervorhersagen für Deutschland stammen maßgeblich vom Deutschen Wetterdienst (DWD). Eine öffentliche Behörde, finanziert über Steuermittel, die ihre Daten auf opendata.dwd.de veröffentlicht.

Kein API-Key. Kein Rate-Limiting (jenseits normaler HTTP-Höflichkeit), keine Nutzungsbedingungen, die kommerzielle Verwendung einschränken. Die Daten sind gemeinfrei.

DWD OpenData bietet unter anderem:

MOSMIX: Daten für ca. 2.700 Stationen nicht nur in Deutschland, stündlich aufgelöst, 10 Tage Horizont, 4× täglich aktualisiert

ICON-D2: Hochaufgelöste Gitterdaten für Deutschland (2,2 km), aktualisiert 8× täglich, z.B. für Wetterwarnungen

Klimaarchiv: Historische Beobachtungsdaten von Stationen weltweit, jahrzehnteweise

Ensemble-Vorhersagen: wahrscheinlichkeitsbasierte Vorhersagen mit Schwankungsbreiten

Die Frage ist nur: Kann man direkt damit arbeiten, ohne Mittelsmann?
Die kurze Antwort lautet ja. Die lange Antwort ist diese Artikelserie.

Was DWD OpenData technisch bietet

Das MOSMIX-System (Model Output Statistics Mix) ist das operative Vorhersageprodukt. Es kombiniert numerische Modelle (ICON, ECMWF) mit statistischen Korrekturen aus historischen Beobachtungen.

ca. 2.700 Messstationen weltweit

~115 Wetterparameter pro Station: Temperatur, Wind, Niederschlag, Bewölkung, Sichtweite, Wettercode, Luftdruck, Taupunkt, und dutzende weitere

10 Tage Vorhersage, stündlich aufgelöst

4 × täglich aktualisiert: 00:00, 06:00, 12:00, 18:00 UTC

Der Zugriff erfolgt über HTTP, ohne Authentifizierung:

https://opendata.dwd.de/weather/local_forecasts/mos/MOSMIX_L/single_stations/10382/kml/MOSMIX_L_LATEST_10382.kmz

https://opendata.dwd.de/weather/local_forecasts/mos/MOSMIX_L/single_stations/10382/kml/MOSMIX_L_LATEST_10382.kmz

Die einzige Anforderung: ein User-Agent-Header, der identifiziert, wer die Anfragen stellt, muss gesetzt sein Nicht als technische Hürde, sondern als Höflichkeit, damit der DWD nachvollziehen kann, wie seine Daten genutzt werden.

Der typische Datenfluss

Um eine Wettervorhersage zu erstellen sind folgende Schritte notwendig:

Geocoding (OpenStreetMap Nominatim oder eigene Koordinaten)
Input: „Berlin“
Output: { lat: 52.5174, lon: 13.3951 }

Stationssuche (Haversine-Distanz über den Stationskatalog)
Input: Benutzerkoordinaten Aktion: Suche nach nächster Station
Output: Station 10382 (Berlin-Tegel, 8.3 km)

KMZ Download URL: opendata.dwd.de/…/10382/kml/MOSMIX_L_LATEST_10382.kmz

ZIP entpacken
Input: MOSMIX_L_LATEST_10382.kmz (ZIP) Output: MOSMIX_L_2026032821_10382.kml (KML/XML)

KML parsen
Input: XML mit Zeitreihen
Output: JavaScript-Objekt mit ~240 Zeitpunkten × 115 Parametern

Einheiten konvertieren
Kelvin → Celsius, Pa → hPa, m/s → km/h

Ausgabe
Terminal, JSON-API, Datenbank, …

Dafür sind keine speziellen Biblotheken notwendig. Man muss sich allerdings etwas ausführlicher mit dem Datenformat auseinandersetzen.

Ein CLI als einfachstes Beispiel

Um zu zeigen, dass der direkte DWD-Zugriff praktisch funktioniert, bietet sich ein CLI-Tool als einfache Implementierung an. Keine Infrastruktur, kein Hosting und keine Datenbank. Als Umgebung wähle ich Node.js, weil JavaScript momentan die meist genutzte Programmiersprache ist.

node forecast.js Berlin

node forecast.js Berlin

Ausgabe: eine vollständige 10-Tage-Vorhersage, mit aktuellen Bedingungen, stündlicher Vorhersage für die nächsten 24 Stunden und einer täglichen Zusammenfassung.

AKTUELLE BEDINGUNGEN (22:00 UTC)
Temperatur: 10,4°C 72% (Taupunkt: 5.1°C)
Wetter: Leicht bewölkt [ww=2]
Wind: NNW 14 km/h (Böen 22 km/h)
Bewölkung: 45%
Sichtweite: 22 km
Luftdruck: 1018,2 hPa
Sonnenaufgang: 06:14 UTC
Sonnenuntergang: 18:42 UTC

Stündliche Vorhersage — nächste 24 Stunden
Zeit       Temp Regen Richt Wind Wolken Wetter
─────────────────────────────────────────────────────────────────
22:00 10,4° 0,0mm NNW 14(22)km/h 45% Teilw. bewölkt
23:00 10,8° 0,0mm N 10(16)km/h 40% Gering bewölkt
00:00 10,2° 0,1mm NW 8(14)km/h 35% olkenlos

AKTUELLE BEDINGUNGEN (22:00 UTC)
Temperatur: 10,4°C 💧 72% (Taupunkt: 5.1°C)
Wetter: Leicht bewölkt [ww=2]
Wind: NNW 14 km/h (Böen 22 km/h)
Bewölkung: 45%
Sichtweite: 22 km
Luftdruck: 1018,2 hPa
Sonnenaufgang: 06:14 UTC
Sonnenuntergang: 18:42 UTC

Stündliche Vorhersage — nächste 24 Stunden
Zeit       Temp Regen Richt Wind Wolken Wetter
─────────────────────────────────────────────────────────────────
22:00 10,4° 0,0mm NNW 14(22)km/h 45% Teilw. bewölkt
23:00 10,8° 0,0mm N 10(16)km/h 40% Gering bewölkt
00:00 10,2° 0,1mm NW 8(14)km/h 35% olkenlos

Der Vorteil eines CLI gegenüber einer Web-App für diesen Zweck: es gibt keinen HTTP-Layer zwischen der Kernlogik und dem Test. Wenn node cli.js Berlin funktioniert, weiß man, dass die Verarbeitung stimmt — bevor man an eine weiterführende Infrastruktur denkt.

Minimale Abhängigkeiten

Für eine DWD-MOSMIX-basierte Applikation braucht man in Node.js sehr wenig. Die minimale Abhängigkeitsliste:

{
"type": "module",
"engines": { "node": ">=18.0.0" },
"dependencies": {
"unzipper": "^0.12",
"xml2js": "^0.6",
"minimist": "^1.2"
}
}

{
"type": "module",
"engines": { "node": ">=18.0.0" },
"dependencies": {
"unzipper": "^0.12",
"xml2js": "^0.6",
"minimist": "^1.2"
}
}

unzipper: Stream-basierter ZIP-Parser. MOSMIX-KMZ ist ein ZIP-Archiv, Node hat keine ZIP-Unterstützung in der Standardbibliothek.

xml2js: XML zu JavaScript-Objekten. Das KMZ enthält eine KML-Datei — ein XML-Dialekt.

minimist: CLI-Argument-Parsing. Nur relevant für CLI-Nutzung.

Wie geht es weiter?

Die nächsten drei Artikel gehen jeweils auf die konkrete Problemlösung ein. Teil 2 erklärt, wie man die richtige Wetterststion findet, Teil 3 wie man aus den Rohdaten eine Wettervorhersage extrahiert und Teil 4 fasst ausgiebig alle notwendigen Schritte zu einem lauffähigem Programm zusammen. Lost geht’s!