Skip to main content

đŸ§© 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:

  1. Metadaten
  2. forecast – stĂŒndliche bzw. ĂŒber step_hours gefilterte Daten
  3. 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_days
  • step_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).