đ§© JSON-Datenstruktur
JSON-Datenstruktur â dwdWetter
Diese Seite beschreibt die Struktur der JSON-Dateien, die vom PHP-Programm dwdWetter erzeugt werden. FĂŒr jede DWD-Station wird eine eigene Datei erstellt, z.B.:
- wetter_K428.json
- wetter_10609.json
Die Daten stammen aus MOSMIX_L.
Die JSON-Dateien dienen als neutrale Datengrundlage fĂŒr MODX 3, ioBroker, SmartHome-Systeme und andere Anwendungen.
1. Aufbau der JSON-Datei
Jede Datei besteht aus drei Hauptbereichen:
- Metadaten
- forecast â stĂŒndliche bzw. ĂŒber
step_hoursgefilterte Daten - daily â automatisch aggregierte Tageswerte
Beispielstruktur (vereinfacht):
{
"stationID": "K428",
"stationName": "Bitburg",
"coordinates": {
"lat": 49.98,
"lon": 6.53
},
"pubDate": "2025-11-24 03:00",
"sunrise": "08:00",
"sunset": "16:40",
"forecast": [
{
"date": "2025-11-24",
"time": "06:00",
"weekday": "Mo.",
"temp2m": 3.8,
"dewPoint": 2.1,
"humidity": 82,
"windDirection": "SW",
"windDirectionDeg": 225,
"windSpeedKmh": 14,
"windGustKmh": 28,
"cloud": 92,
"pressure": 998,
"rain6h": 0.0,
"rain24h": 0.0,
"sunPercent": 0,
"visibilityKm": 12.5,
"sigWeatherCode": 61,
"icon": "60-65.png"
}
],
"daily": [
{
"date": "2025-11-24",
"weekday": "Mo.",
"tempMin": 3.5,
"tempMax": 3.8,
"tempMean": 3.7,
"dewPointMin": 2.1,
"dewPointMax": 3.0,
"humidityMin": 82,
"humidityMax": 98,
"humidityMean": 90,
"cloudMean": 95,
"sunPercentMean": 0,
"windSpeedMax": 14,
"windGustMax": 28,
"rain6hSum": 0.0,
"rain24hMax": 0.0,
"mainSigWeatherCode": 61,
"mainIcon": "60-65.png"
}
]
}
2. Kopfbereich (Metadaten)
| Feld | Typ | Bedeutung |
|---|---|---|
| stationID | String | DWD-Vorhersagepunkt |
| stationName | String | Stationsname |
| coordinates.lat | Float | Breitengrad |
| coordinates.lon | Float | LĂ€ngengrad |
| pubDate | String | Veröffentlichungszeitpunkt (lokale Zeit) |
| sunrise | String | Sonnenaufgang |
| sunset | String | Sonnenuntergang |
| forecast | Array | stĂŒndliche Datenpunkte |
| daily | Array | Tageszusammenfassungen |
Hinweis:
DWD liefert Zeiten in UTC, das Script wandelt sie nach Europe/Berlin um.
JSON enthÀlt nur lokale Zeiten.
3. forecast-EintrÀge
Die Anzahl der forecast-EintrÀge hÀngt ab von:
forecast_daysstep_hours
Beispiel:
3 Tage, step_hours = 3 â 24 EintrĂ€ge.
Typischer Eintrag:
{
"date": "2025-11-24",
"time": "06:00",
"weekday": "Mo.",
"temp2m": 3.8,
"dewPoint": 2.1,
"humidity": 82,
"windDirection": "SW",
"windDirectionDeg": 225,
"windSpeedKmh": 14,
"windGustKmh": 28,
"cloud": 92,
"pressure": 998,
"rain6h": 0.0,
"rain24h": 0.0,
"sunPercent": 0,
"visibilityKm": 12.5,
"sigWeatherCode": 61,
"icon": "60-65.png"
}
3.1 Felder im forecast erklÀrt
| Feld | Einheit | Bedeutung |
|---|---|---|
| date | YYYY-MM-DD | Datum (lokal) |
| time | HH:MM | Uhrzeit (lokal) |
| weekday | Text | Wochentag |
| temp2m | °C | Temperatur (TTT) |
| dewPoint | °C | Taupunkt (Td) |
| humidity | % | relative Feuchte |
| windDirection | Text | Himmelsrichtung |
| windDirectionDeg | Grad | Richtung 0â360 |
| windSpeedKmh | km/h | FF (m/s â km/h) |
| windGustKmh | km/h | FX3 (m/s â km/h) |
| cloud | % | Neff |
| pressure | hPa | PPPP (Pa â hPa) |
| rain6h | mm | RR6c |
| rain24h | mm | RRdc |
| sunPercent | % | Sonnenscheinanteil |
| visibilityKm | km | VV (m â km) |
| sigWeatherCode | Code | ww-Code |
| icon | Datei | Icon pro Stunde |
4. daily-Ebene (Tageszusammenfassungen)
Die daily-Daten entstehen automatisch aus den forecast-Werten.
Felder im daily erklÀrt
| Feld | Bedeutung |
|---|---|
| date | Datum (lokal) |
| weekday | Wochentag |
| tempMin / tempMax / tempMean | Temperaturwerte |
| dewPointMin / dewPointMax | Taupunktwerte |
| humidityMin / humidityMax / humidityMean | Feuchte |
| cloudMean | mittlere Bewölkung |
| sunPercentMean | mittlerer Sonnenschein |
| windSpeedMax | maximale Windgeschwindigkeit |
| windGustMax | stÀrkste Böe |
| rain6hSum | Summierte 6h-NiederschlÀge |
| rain24hMax | max. 24h-Wert |
| mainSigWeatherCode | hÀufigster ww-Code des Tages |
| mainIcon | Icon zum Tageswetter |
daily eignet sich ideal fĂŒr Tageskacheln (âHeute/Morgen/Ăbermorgenâ),
ohne im Frontend erneut aggregieren zu mĂŒssen.
5. MOSMIX â JSON Mapping
| MOSMIX-ID | JSON-Feld | Umrechnung |
|---|---|---|
| TTT | temp2m | Kelvin â °C |
| Td | dewPoint | Kelvin â °C |
| DD | windDirectionDeg | Grad |
| FF | windSpeedKmh | m/s â km/h |
| FX3 | windGustKmh | m/s â km/h |
| Neff | cloud | % |
| PPPP | pressure | Pa â hPa |
| RR6c | rain6h | mm |
| RRdc | rain24h | mm |
| SunD3 | sunPercent | Sekunden â % |
| VV | visibilityKm | m â km |
| ww | sigWeatherCode | Wettercode |
6. Einfluss wichtiger Script-Parameter
forecast_days
Bestimmt die maximale LĂ€nge des Zeitraums.
Formel: forecast_days * 24.
step_hours
Filtert die Zeitpunkte.
Nur EintrÀge, bei denen hour % step_hours == 0.
save_only_if_valid
JSON wird nur geschrieben, wenn mindestens ein Forecast-Eintrag vorhanden ist.
7. Icons
Beide Ebenen (forecast.icon und daily.mainIcon) verwenden nur den Dateinamen, z.B.:
60-65.png
3d.png
91-99.png
Der absolute Pfad wird im Frontend definiert, z.B.:
<img src="/assets/dwdWetter/dwd_img/{{ mainIcon }}" alt="">
8. Nutzung in Frontends
Beispiele
forecast:
- Diagramme (Chart.js)
- Stundenkarten
- Tooltip-Daten
daily:
- Tageskacheln
- 10-Tage-Ăbersicht
- reduzierte Mobilansichten
Beispiel JavaScript:
img.src = "/dwd_img/" + forecast[0].icon;
9. Dateinamen
Standard:
wetter_{stationID}.json
Beispiele:
- wetter_K428.json
- wetter_10609.json
Das Muster kann angepasst werden (filename_pattern).