đŠïž 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 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
stationsforecast_dayscache_minutesoutput_pathdebug,log_level,debug_max_kbstep_hourscurl_timeoutskip_stationssave_only_if_validfilename_patterntimezoneicons_path,icon_set,icons_enabledsun_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:
- alle
ww-Codes ausforecastsammeln - hĂ€ufigsten Code bestimmen â
mainSigWeatherCode - Icon-Mapping anwenden â z.B.
0â0d.png61â60-65.png95â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
