DWD Weather Warnings
Der Node lädt die aktuellen Gemeindewarnungen des Deutschen Wetterdienstes (DWD), ordnet sie den von Ihnen überwachten Orten zu und gibt jede zutreffende Warnung als flaches WeatherAlert-Objekt mit vereinfachtem Warnpolygon aus. Orte legen Sie als Koordinaten oder als DWD-Warnzellen (Landkreise, Gemeinden) fest.
- Node-Typ
- hypertegrity-dwd-weatherwarnings
- Paket
- @htag/node-red-contrib-hypertegrity-weather
- Eingänge / Ausgänge
- 1 / 1
- Datenquelle
- DWD WarnWetter-Daten (gemeinde_warnings.json, warnings.json) und DWD-GeoServer
Wofür Sie den Node verwenden
Der DWD veröffentlicht amtliche Warnungen vor Unwetter, Glätte, Hitze oder Nebel für jede Gemeinde und jeden Landkreis. Der DWD-Weather-Warnings-Node filtert aus dem bundesweiten Datensatz genau die Warnungen heraus, die Ihre Orte betreffen, und bringt sie in ein einheitliches Format. Dabei nutzt er die hochauflösenden Warnzellengeometrien des DWD, um Punkte zuverlässig einem Landkreis oder einer Gemeinde zuzuordnen.
Typische Einsatzfälle sind:
- Warnlagen anzeigen auf einem kommunalen Dashboard oder in einer Bürger-App.
- Alarmketten auslösen für Bauhof, Winterdienst oder Veranstaltungsmanagement.
- Warnungen archivieren in einem NGSI-LD Context Broker als WeatherAlert-Entitäten.
- Mehrere Orte überwachen, zum Beispiel alle Gemeinden eines Landkreises oder einzelne Liegenschaften.
So funktioniert der Node
Auslösen
Eine eingehende Nachricht startet den Abruf. Der Inhalt der Nachricht wird nicht ausgewertet.
Abrufen
Der Node lädt die Zuordnung Warnzelle → Warnung (warnings.json) und die Warnungsdetails (gemeinde_warnings.json). Warnzellengeometrien werden einmal täglich vom DWD-GeoServer geladen.
Zuordnen
Jede Warnung wird mit allen Orten verglichen: Warnzellen per ID oder Flächenschnitt, Koordinaten per Punkt-in-Polygon-Test. Überlappende Treffer werden auf die größte Fläche reduziert.
Ausgeben
Jede zutreffende Warnung verlässt den Node als eigene Nachricht mit einem WeatherAlert-Objekt und vereinfachtem Polygon.
Ergebnis: Ein Strom einzelner WeatherAlert-Objekte mit Join-Metadaten, der direkt in den NGSI-LD Builder oder einen Join-Node geführt werden kann.
Der Node ist triggerbasiert. Verbinden Sie ihn mit einem Inject-Node, der zum Beispiel alle 15 Minuten auslöst. Bei jedem Durchlauf werden alle aktuell gültigen Warnungen erneut ausgegeben; eine Duplikaterkennung über mehrere Abrufe hinweg findet nicht statt.
Treffen mehrere Orte dieselbe Warnung, gilt die Regel „größte Fläche gewinnt“: Liegt eine Gemeinde innerhalb eines ebenfalls überwachten Landkreises, wird die Warnung nur einmal für den Landkreis ausgegeben. Orte ohne gemeinsame Fläche erhalten jeweils eine eigene Nachricht.
Konfiguration
Der Bearbeitungsdialog besteht aus dem Feld Name und zwei Registerkarten.
Registerkarte „Orte“
Hier verwalten Sie die Liste der überwachten Orte (locations). Jeder Eintrag hat einen Namen, einen Typ und einen Wert.
| Feld | Typ | Standard | Bedeutung |
|---|---|---|---|
| Name | Text | DWD WeatherAlert | Anzeigename des Nodes im Flow. |
| Kartenauswahl | Karte | – | Ein Klick auf die Karte setzt einen Punkt. Der Node ermittelt sofort die Warnzellen an dieser Stelle und bietet sie mit „Add as Area“ zur Übernahme an. „Punkt hinzufügen“ übernimmt stattdessen die Koordinate selbst. |
Ausgewählte Orte (locations) | Liste | leer | Einträge vom Typ coord (Breite/Länge) oder warncell (DWD-Warnzellen-ID). Der Name jedes Eintrags erscheint später im Feld locationName der Ausgabe. |
| Warnzelle hinzufügen | Suchfeld | – | Sucht ab zwei Zeichen in der Warnzellenliste des DWD nach Name oder ID. Mit „Hinzufügen“ oder Enter übernehmen Sie auch eine direkt eingetippte ID. |
| Manuelle Koordinaten | Breitengrad, Längengrad, Name | – | Fügt einen Punkt per Hand hinzu, zum Beispiel 49.44, 7.77. |
Registerkarte „Einstellungen“
| Feld | Typ | Standard | Bedeutung |
|---|---|---|---|
Historie (ignoreExpired) | Kontrollkästchen | aktiv | Abgelaufene Warnungen ignorieren. |
Zukunft (ignoreFuture) | Kontrollkästchen | inaktiv | Warnungen ignorieren, die erst in der Zukunft beginnen (Vorabinformationen). |
Veraltete Daten (staleAllow) | Kontrollkästchen | inaktiv | Zuletzt erfolgreich geladene Daten verwenden, wenn der DWD nicht erreichbar ist. Ausgaben werden dann mit msg.isStale = true markiert. |
Max. Punktanzahl (maxPoints) | Zahl | 30 | Höchstzahl der Eckpunkte des ausgegebenen Polygons. Größere Polygone werden nach Visvalingam-Whyatt vereinfacht. |
JSON URL (url) | Text | siehe unten | Quelle der Warnungsdetails. Die Zuordnungsdatei warnings.json wird aus demselben Verzeichnis geladen. |
Standardwerte der URL-Felder:
JSON URL: https://app-prod-static.warnwetter.de/v16/gemeinde_warnings.json
Die Felder latitude, longitude und warncellId älterer Versionen werden beim Start automatisch in die Ortsliste übernommen und nicht mehr im Dialog angezeigt.
Eingang
Der Eingang dient ausschließlich als Auslöser. Der Node wertet keine Eigenschaft der Eingangsnachricht aus und übernimmt sie auch nicht in die Ausgabe.
| Eigenschaft | Typ | Bedeutung |
|---|---|---|
msg | beliebig | Jede Nachricht startet einen vollständigen Abruf und Abgleich. |
Ausgang
Für jede zutreffende Warnung sendet der Node eine eigene Nachricht. Der Payload ist ein flaches Objekt, das sich am Smart Data Model WeatherAlert orientiert und ohne Umformung an den NGSI-LD Builder übergeben werden kann.
{
"id": "2.49.0.0.276.0.DWD.PVW.1759305600000_123456",
"type": "WeatherAlert",
"dateIssued": "2026-10-01T08:15:00.000Z",
"validFrom": "2026-10-01T06:00:00.000Z",
"validTo": "2026-10-01T18:00:00.000Z",
"severity": "moderate",
"category": "weather",
"subCategory": "wind",
"alertSource": "https://www.dwd.de",
"name": "Amtliche WARNUNG vor WINDBÖEN",
"description": "Es treten Windböen mit Geschwindigkeiten um 60 km/h, 17 m/s, 7 Bft, aus südwestlicher Richtung auf.",
"instruction": "",
"location": {"type": "Polygon", "coordinates": [[[7.62, 49.38], [7.91, 49.39], [7.89, 49.52], [7.62, 49.38]]]},
"locationName": "Beispielstadt"
}
| Feld | Bedeutung |
|---|---|
id | Die letzten beiden Teile der DWD-Warn-ID, durch _ verbunden. |
type | Immer WeatherAlert. |
dateIssued | Zeitpunkt des Abrufs im ISO-8601-Format. |
validFrom, validTo | Beginn und Ende der Warnung laut DWD. Fehlt ein Wert, wird der Abrufzeitpunkt eingesetzt. |
severity | DWD-Warnstufe 1–4 als minor, moderate, severe oder extreme. |
category | Immer weather. |
subCategory | Aus dem DWD-Ereignis abgeleitet: fog, ice, frost, forestFire, thunderstorm, wind, rainfall, snow, heatWave, coldWave, flood oder other. |
alertSource | Immer https://www.dwd.de. |
name | Schlagzeile der Warnung. Klammern werden durch Kommas, Semikolons durch Punkte ersetzt. |
description | Warntext, gleich bereinigt. |
instruction | Verhaltenshinweise des DWD, gleich bereinigt. |
location | GeoJSON-Polygon der betroffenen Warnzelle, auf höchstens „Max. Punktanzahl“ Eckpunkte vereinfacht. Liegt keine Warnzellengeometrie vor, wird das Warngebiet des DWD verwendet. |
locationName | Der von Ihnen vergebene Name des betroffenen Ortes. |
Zusätzlich setzt der Node auf jeder Nachricht:
| Eigenschaft | Bedeutung |
|---|---|
msg.parts | Join-Metadaten (id, index, count, type: "array", key: "payload"), damit ein Join-Node alle Warnungen eines Durchlaufs wieder zu einem Array zusammenfassen kann. |
msg.isStale | true, wenn die Daten aus dem Zwischenspeicher stammen, weil der DWD nicht erreichbar war. |
Liegen keine zutreffenden Warnungen vor, sendet der Node keine Nachricht.
Beispiel-Flow
Das Paket bringt einen Beispiel-Flow mit. Sie importieren ihn in Node-RED über Menü → Importieren → Beispiele → @htag/node-red-contrib-hypertegrity-weather → dwd-weatherwarnings. Alternativ laden Sie die Datei dwd-weatherwarnings.json herunter und importieren sie über Menü → Importieren.
Inject
Ein Inject-Node löst den Abruf alle 15 Minuten aus.
DWD WeatherAlert
Der Node gleicht die aktuellen Warnungen mit den konfigurierten Orten ab. Im Beispiel ist die Ortsliste leer und muss ergänzt werden.
Debug
Der Debug-Node ist im Beispiel deaktiviert. Nach dem Aktivieren zeigt er die WeatherAlert-Objekte in der Seitenleiste an.
Beispiel-Flow als JSON anzeigen
[
{"id": "tab1", "type": "tab", "label": "dwd-weatherwarnings", "disabled": false, "info": ""},
{"id": "inject1", "type": "inject", "z": "tab1", "name": "alle 15 min", "props": [{"p": "payload"}, {"p": "topic", "vt": "str"}], "repeat": "900", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "", "payloadType": "date", "x": 150, "y": 120, "wires": [["warn1"]]},
{"id": "warn1", "type": "hypertegrity-dwd-weatherwarnings", "z": "tab1", "name": "DWD WeatherAlert", "ignoreExpired": true, "ignoreFuture": false, "staleAllow": false, "maxPoints": 30, "url": "https://app-prod-static.warnwetter.de/v16/gemeinde_warnings.json", "locations": [], "latitude": "", "longitude": "", "warncellId": "", "x": 390, "y": 120, "wires": [["debug1"]]},
{"id": "debug1", "type": "debug", "z": "tab1", "name": "WeatherWarnings", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "x": 690, "y": 120, "wires": []}
]
Status und Fehler
| Anzeige | Bedeutung |
|---|---|
| Blauer Punkt „Rufe ab…“ | Der Abruf läuft. |
| Grüner Punkt „Active: n“ | n Warnungen wurden ausgegeben. |
| Gelber Punkt „Stale: n“ | n Warnungen wurden aus dem Zwischenspeicher ausgegeben, weil der DWD nicht erreichbar war. |
| Grüner Ring „Keine Warnungen“ | Für die konfigurierten Orte liegt keine zutreffende Warnung vor. |
| Roter Ring „API Fehler“ | Die Warnungsdetails konnten nicht geladen werden und es gab keinen Zwischenspeicher. Zusätzlich wird der Fehler „DWD Abruf Fehler: …“ gemeldet. |
| Roter Ring „Verarbeitungsfehler“ | Beim Abgleich ist ein Fehler aufgetreten; Details liefert „DWD Verarbeitungsfehler: …“. |
| Warnung „DWD Mapping Abruf fehlgeschlagen, nutze Fallback.“ | Die Zuordnungsdatei warnings.json war nicht erreichbar. |
| Warnung „DWD API nicht erreichbar. Nutze veraltete Daten.“ | Die Warnungsdetails waren nicht erreichbar; der Zwischenspeicher wird verwendet. |
Fehler werden über node.error gemeldet und können mit einem Catch-Node abgefangen werden. Die Timeouts betragen 10 Sekunden für die Warnungsdateien und 30 Sekunden für die Geometrien.
Hinweise
- Nutzungsbedingungen: Die Warnungen und Geometrien stammen aus dem Open-Data-Angebot des DWD und stehen unter der Datenlizenz Deutschland – Namensnennung – Version 2.0 (DL-DE/BY-2-0). Die Adresse
app-prod-static.warnwetter.deist das Datenverzeichnis der WarnWetter-App. Ein API-Schlüssel ist nicht erforderlich. - Datenvolumen: Beim ersten Abruf nach einem Start lädt der Node die Warnzellengeometrien aller Gemeinden und Landkreise vom DWD-GeoServer (mehrere Megabyte) und hält sie 24 Stunden im Arbeitsspeicher. Die Warnzellenliste für die Suche im Editor wird ebenfalls 24 Stunden zwischengespeichert.
- Kontextspeicher: Zwischenspeicher für veraltete Daten und Geometrien liegen nur im Arbeitsspeicher und gehen bei Neustart oder Deploy verloren.
- Proxy: Es gibt keine eigene Proxy-Einstellung;
axiosbeachtet die UmgebungsvariablenHTTP_PROXYundHTTPS_PROXY. - Externe Dienste im Editor: Die Karte lädt Kacheln von OpenStreetMap; die Warnzellensuche und die Geometrien laufen über das Node-RED-Backend.
- Personenbezogene Daten: Die Ausgabe enthält Warntexte, Polygone und die von Ihnen vergebenen Ortsnamen. Vergeben Sie keine Namen von Privatpersonen oder private Adressen als Ortsnamen, wenn die Daten veröffentlicht werden.
- Einheiten: Warntexte des DWD nennen Geschwindigkeiten in km/h, m/s und Beaufort sowie Niederschlagsmengen in l/m² (entspricht mm).