Skip to main content

đŸŒŠïž DWD Wettervorhersage (PHP)

Verwendbar mit FullCalendar (siehe MODX-Sammlung)

Hinweis: UrsprĂŒnglich wurde das Script fĂŒr das CMF MODX entwickelt.
Die eigenstÀndige PHP-Version ermöglicht nun die Nutzung der Wetter-App auf unterschiedlichen Systemen.

dwdWetter_php.jpg

dwdWetter.php lĂ€dt Vorhersagedaten vom Deutschen Wetterdienst (DWD) ĂŒber den OpenData-Server
und speichert sie strukturiert als JSON-Dateien. Pro Station wird eine eigene Datei erzeugt
(z.B. wetter_K428.json). Dadurch können die Daten in MODX 3, ioBroker, SmartHome-Systemen
oder anderen Anwendungen genutzt werden.

Die Daten basieren auf MOSMIX_L (Single-Station), werden aus einer KMZ-Datei entpackt,
bei Bedarf nach UTF-8 konvertiert und ĂŒber DOMDocument/DOMXPath (mit Namespace-Handling) geparst.

Die JSON-Dateien werden lokal zwischengespeichert. Neue Daten werden nur geladen, wenn der
eingestellte Cache-Zeitraum abgelaufen ist. Das funktioniert unabhÀngig davon, ob das Script per
Cronjob oder ĂŒber eine Webseite ausgefĂŒhrt wird.


Konfigurationsparameter

  • stations
  • forecast_days
  • cache_minutes
  • output_path
  • debug, log_level, debug_max_kb
  • step_hours
  • curl_timeout
  • skip_stations
  • save_only_if_valid
  • filename_pattern
  • timezone
  • icons_path, icon_set, icons_enabled
  • sun_threshold, hot_temp

Funktioniert ab PHP 8.2, Logdateien unter logs/dwdWetter_debug.log.


Datenstruktur der JSON-Dateien

Metadaten

  • stationID, stationName
  • coordinates.lat, coordinates.lon
  • pubDate (lokale Zeit)
  • sunrise, sunset (lokale Zeit)
  • iconSet

forecast (stĂŒndlich)

  • Temperatur, Taupunkt, Feuchte
  • Windrichtung / Wind / Böen
  • Bewölkung
  • Druck
  • Niederschlag (6h/24h)
  • Sonnenschein
  • Sichtweite
  • ww-Code
  • Icon pro Zeitschritt

daily (Tageszusammenfassungen)

  • Min/Max/Mitteltemperatur
  • Taupunkt Min/Max
  • Luftfeuchte Min/Max/Mittel
  • Bewölkungs-Mittel
  • Sonnen-Mittel
  • max. Wind / max. Böe
  • Niederschlagssumme
  • max. 24h-Wert
  • dominanter Wettercode
  • Icon (mainIcon)

Beispielstruktur

assets/dwdWetter/
├── dwdWetter.php
├── json/
│   ├── wetter_K428.json
│   ├── wetter_10609.json
├── dwd_img/
│   ├── 0d.png
│   ├── ...
│   ├── 60-65.png
│   ├── ...
│   ├── 91-99.png
├── logs/
│   └── dwdWetter_debug.log
└── tmp/
    └── *.kmz

URL:
https://meine-seite.tld/assets/dwdWetter/dwdWetter.php


Parameter im Überblick

forecast_days

  • Bereich: 1–10
  • Steuert Anzahl der Tage
  • Intern: maxEntries = forecast_days * 24

step_hours

  • 1, 2, 3, 6, 12, 24
  • Ein Forecast-Eintrag wird erzeugt, wenn
    Stunde % step_hours == 0

PHP-Programm

# siehe Seite dwdWetter.php

Felder im forecast erklÀrt

Feld Einheit Bedeutung
date YYYY-MM-DD Datum (lokale Zeit)
time HH:MM Uhrzeit (lokale Zeit)
weekday Text Wochentag
temp2m °C Temperatur 2m ĂŒber Boden
dewPoint °C Taupunkt
humidity % relative Luftfeuchte
windDirection Text Windrichtung
windDirectionDeg Grad Richtung 0–360
windSpeedKmh km/h Windgeschwindigkeit
windGustKmh km/h Böe
cloud % Bewölkung
pressure hPa Luftdruck
rain6h mm/6h 6h-Niederschlag
rain24h mm/24h 24h-Niederschlag
sunPercent % Sonnenscheinanteil
visibilityKm km Sichtweite
sigWeatherCode Code ww-Code
icon Dateiname zugeordnetes Icon

Hinweis: DWD liefert UTC — das Script wandelt nach lokaler Zeit um.


Felder im daily erklÀrt

Feld Einheit Bedeutung
date YYYY-MM-DD Datum (lokal)
weekday Text Wochentag
tempMin °C min. Temperatur
tempMax °C max. Temperatur
tempMean °C mittlere Temperatur
dewPointMin °C min. Taupunkt
dewPointMax °C max. Taupunkt
humidityMin % min. Feuchte
humidityMax % max. Feuchte
humidityMean % mittlere Feuchte
cloudMean % mittlere Bewölkung
sunPercentMean % mittlerer Sonnenschein
windSpeedMax km/h stÀrkster Wind
windGustMax km/h stÀrkste Böe
rain6hSum mm Summe aller 6h-Werte
rain24hMax mm höchster 24h-Wert
mainSigWeatherCode Code hÀufigster ww-Code des Tages
mainIcon Dateiname Icon pro Tag (aus ww-Code abgeleitet)

Hinweis: Zeitangaben (UTC → lokal)

Der DWD liefert alle Zeitpunkte in UTC.
dwdWetter.php wandelt alle Werte automatisch nach Europe/Berlin um:

  • date
  • time
  • pubDate
  • sunrise / sunset
  • forecast-Zeiten

In der JSON stehen daher ausschließlich lokale Zeiten.


Hinweis: Wie entsteht mainIcon?

FĂŒr jeden Tag:

  1. alle ww-Codes aus forecast sammeln
  2. hĂ€ufigsten Code bestimmen → mainSigWeatherCode
  3. Icon-Mapping anwenden → z.B.
    • 0 → 0d.png
    • 61 → 60-65.png
    • 95 → 91-99.png

Daily-Icons unterscheiden nicht zwischen Tag/Nacht.


Weiterverarbeitung

  • forecast → fĂŒr detailreiche Zeitachsen und Diagramme
  • daily → kompakte Tagesboxen
  • step_hours reduziert Datenmenge
  • JSON stabil und fest definiert
  • ideal fĂŒr MODX, SmartHome, ioBroker, JS-Frontends

Beispiele

Temperaturdiagramm

  • X: date + time
  • Y: temp2m

Tageskacheln

  • tempMin/tempMax
  • windGustMax
  • rain6hSum
  • mainIcon

Textausgaben

  • Windbeschreibung
  • Niederschlagsinfo
  • Sicht
  • Wolken
  • Drucktrend

Dateinamensmuster

Default:

wetter_{stationID}.json

z.B.:

  • wetter_K428.json
  • wetter_10609.json