Zum Hauptinhalt springen
Data Connectors · Umwelt

LANUK Hochwasser

Der Node lädt die ZIP-Datei mit den aktuellen Wasserständen des Hochwasserportals NRW (Betreiber: Landesamt für Natur, Umwelt und Klima, LANUK), entpackt die enthaltene CSV-Datei und verknüpft sie mit der Stationsliste. Das Ergebnis sind FloodMonitoring-Entitäten nach dem FIWARE Smart Data Model, wahlweise mit dem letzten Wert oder der kompletten Zeitreihe.

  • Datenquelle
  • Trigger oder Polling
  • FloodMonitoring
Node-Typ
lanuk
Paket
@htag/node-red-contrib-hypertegrity-environment
Eingänge / Ausgänge
1 / 1
Datenquelle
Hochwasserportal NRW (hochwasserportal.nrw)

Wofür Sie den Node verwenden​

Das Hochwasserportal NRW veröffentlicht die Wasserstände der Landespegel in Nordrhein-Westfalen als regelmäßig aktualisiertes Archiv. Der LANUK-Node holt dieses Archiv in einen Node-RED-Flow, ordnet jeder Messung die Stammdaten des Pegels zu und bildet alles auf das Smart Data Model FloodMonitoring ab, einschließlich Gefahrenschwelle und Hochwasserstatus.

Typische Einsatzfälle sind:

  • Pegel an Landesgewässern wie Ruhr, Lippe, Sieg oder Wupper in einen NGSI-LD Context Broker übernehmen.
  • Hochwasser-Warnflows aufbauen, die den Status Danger auswerten und Benachrichtigungen auslösen.
  • Zeitreihen eines Pegels für Dashboards oder Analysen bereitstellen.

So funktioniert der Node​

1

Auslösen

Eine eingehende Nachricht oder der Poll-Timer startet den Abruf. Läuft bereits ein Abruf, wird der neue übersprungen.

2

Herunterladen

Stationsliste (JSON) und Messwertarchiv (ZIP mit CSV) werden parallel geladen; die CSV wird entpackt.

3

Verknüpfen

Die Messungen werden nach Stationsnummer gruppiert, sortiert und mit Name, Einzugsgebiet, Koordinaten und Schwellenwerten der Station ergänzt.

4

Ausgeben

Je Station entsteht eine FloodMonitoring-Entität, ausgegeben als ein Array oder als eine Nachricht pro Station.

Ergebnis: FloodMonitoring-Entitäten mit aktuellem Wasserstand in Zentimetern, Status, Standort und Abrufmetadaten in msg.lanuk.

Der Node kann triggerbasiert oder per Polling arbeiten. Mit Poll-Intervall 0 löst nur eine eingehende Nachricht den Abruf aus. Mit einem Intervall größer als 0 ruft der Node zusätzlich selbstständig ab und, falls aktiviert, einmal etwa 2 Sekunden nach dem Start. Eigenschaften der auslösenden Nachricht werden in die Ausgabe übernommen.

Konfiguration​

Der Bearbeitungsdialog ist in die Registerkarten Allgemein, Stationen, Quellen und Erweitert gegliedert.

Registerkarte Allgemein​

FeldTypStandardBedeutung
NameTextleerAnzeigename des Nodes im Flow. Ohne Namen zeigt der Node „LANUK Hochwasser“.
Output-ModusAuswahl (latest, timeseries)latestNur letzter Wert gibt je Station den jüngsten Messwert aus; Komplette Zeitreihe ergänzt jede Entität um ein Array measurements mit allen Werten des Archivs.
NachrichtenformatAuswahl (array, split)arrayEine Nachricht (Array) sendet alle Entitäten in einer Nachricht; Eine Nachricht pro Station sendet je Entität eine eigene Nachricht.

Registerkarte Stationen​

FeldTypStandardBedeutung
Nur Stationen mit aktuellen Messwerten anzeigenKontrollkästchen (nur Dialog)aktivBlendet in der linken Liste nur Stationen ein, die im aktuellen Archiv Messwerte haben. Ist das Archiv nicht erreichbar, werden alle Stationen gezeigt.
Verfügbare Stationen / Ausgewählte StationenDoppelliste mit Suchfeldkeine AuswahlMit den Pfeiltasten verschieben Sie Stationen in die rechte Liste. Gespeichert werden die Stationsnummern im Array stations. Ohne Auswahl gibt der Node alle Stationen mit Messwerten aus.
Neu laden / Auswahl leerenSchaltflächen–Lädt die Stationsliste erneut bzw. entfernt die gesamte Auswahl.

Registerkarte Quellen​

FeldTypStandardBedeutung
Messwerte-ZIPText (Pflichtfeld)siehe untenAdresse des Messwertarchivs. Die enthaltene Textdatei ist eine CSV mit Semikolon als Trennzeichen und den Spalten station_no, time, value.
StationslisteText (Pflichtfeld)siehe untenAdresse der Stationsstammdaten.
Poll-Intervall (Min.)Zahl0Abrufintervall in Minuten. 0 schaltet das Polling ab; dann löst nur eine Eingangsnachricht den Abruf aus.
Beim Start abrufenKontrollkästchenaktivFührt bei aktivem Polling etwa 2 Sekunden nach dem Deployment einen ersten Abruf aus.
Timeout (Sek.)Zahl60Zeitüberschreitung für die beiden Downloads in Sekunden.

Standardwerte der URL-Felder:

Messwerte-ZIP: https://www.hochwasserportal.nrw/data/downloads/messwerte.zip
Stationsliste: https://www.hochwasserportal.nrw/data/internet/stations/stations.json

Registerkarte Erweitert​

FeldTypStandardBedeutung
Entity-TypText (Pflichtfeld)FloodMonitoringWert des Feldes type in jeder Entität und msg.topic im Array-Modus.
ID-PräfixTexturn:ngsi-ld:FloodMonitoring:LANUK:Präfix der Entitäts-ID. Die ID entsteht aus Präfix und Stationsnummer.
Debug-ModusKontrollkästchenausSchreibt detaillierte Protokolle als Warnungen in die Debug-Seitenleiste.

Eingang​

Jede eingehende Nachricht löst einen Abruf aus. Der Node wertet keine speziellen Eigenschaften aus, reicht die Nachricht aber als Basis an die Ausgabe weiter.

EigenschaftTypBedeutung
msgbeliebigStartet den Abruf. Alle Eigenschaften der Nachricht bleiben in der Ausgabe erhalten; payload, topic und lanuk werden überschrieben.

Trifft eine Nachricht ein, während ein Abruf läuft, wird sie übersprungen (im Debug-Modus mit Hinweis).

Ausgang​

Im Nachrichtenformat Array sendet der Node eine Nachricht mit allen Entitäten; im Format pro Station je Entität eine Nachricht mit msg.topic gleich der Entitäts-ID. In beiden Fällen enthält msg.lanuk Metadaten zum Abruf.

{
"payload": [
{
"id": "urn:ngsi-ld:FloodMonitoring:LANUK:2718130000100",
"type": "FloodMonitoring",
"stationID": "2718130000100",
"currentLevel": 84,
"observationDateTime": "2026-10-01T08:00:00+02:00",
"name": "Musterstadt",
"areaServed": "Musterbach",
"dataProvider": "LANUK",
"location": {"type": "Point", "coordinates": [7.0101, 51.4502]},
"dangerLevel": 180,
"referenceLevel": 112.5,
"floodLevelStatus": "Normal",
"source": "https://www.hochwasserportal.nrw/data/internet/stations/stations.json",
"unitCode": "CMT"
}
],
"topic": "FloodMonitoring",
"lanuk": {
"dataModel": "FloodMonitoring",
"source": "LANUK Hochwasserportal NRW",
"zipUrl": "https://www.hochwasserportal.nrw/data/downloads/messwerte.zip",
"stationsUrl": "https://www.hochwasserportal.nrw/data/internet/stations/stations.json",
"outputMode": "latest",
"retrievedAt": "2026-10-01T08:15:00.000Z",
"stationCount": 1,
"unmatchedStations": 0,
"containsPersonalData": false
}
}
FeldBedeutung
idID-Präfix gefolgt von der Stationsnummer.
typeKonfigurierter Entity-Typ, standardmäßig FloodMonitoring.
stationIDStationsnummer (station_no) aus dem Archiv.
currentLevelJüngster Wasserstand der Station in Zentimetern.
observationDateTimeZeitstempel des jüngsten Messwerts, unverändert aus der CSV-Spalte time.
nameStationsname aus den Stammdaten; fehlt, wenn die Station nicht in der Stationsliste steht.
areaServedEinzugsgebiet (catchment_name) aus den Stammdaten.
dataProviderBetreiber laut Stammdaten (LANUV_Betr, ersatzweise site_name); ohne Stammdaten LANUK.
locationGeoJSON-Punkt in der Reihenfolge Länge, Breite; nur vorhanden, wenn die Stammdaten Koordinaten liefern.
dangerLevelMittleres Hochwasser (MHW) in Zentimetern aus den Stammdaten; entfällt bei fehlendem Wert oder 0.
referenceLevelPegelnullpunkt (station_gauge_datum) in Zentimetern; entfällt bei fehlendem Wert oder 0.
floodLevelStatusDanger, wenn currentLevel die Gefahrenschwelle erreicht oder überschreitet, sonst Normal. Entfällt ohne dangerLevel.
sourceKonfigurierte Adresse der Stationsliste.
unitCodeImmer CMT (UN/CEFACT-Code für Zentimeter).
measurementsNur im Modus Komplette Zeitreihe: Array von Objekten mit observedAt und currentLevel, chronologisch sortiert.
lanuk.stationCountAnzahl der ausgegebenen Entitäten.
lanuk.unmatchedStationsAnzahl der Stationen mit Messwerten, aber ohne Eintrag in der Stationsliste.
lanuk.containsPersonalDataImmer false; die Daten enthalten keine personenbezogenen Angaben.

Beispiel-Flow​

Das Paket bringt einen Beispiel-Flow mit. Sie importieren ihn in Node-RED über Menü → Importieren → Beispiele → @htag/node-red-contrib-hypertegrity-environment → lanuk. Alternativ laden Sie die Datei lanuk.json herunter und importieren sie über Menü → Importieren.

Schritt 1

Inject

Ein Inject-Node „Go!“ löst den Abruf manuell aus. Alternativ stellen Sie im Node ein Poll-Intervall ein.

Schritt 2

LANUK Hochwasser

Der Node ist mit den Standardendpunkten, ohne Stationsauswahl und im Modus „Nur letzter Wert“ als Array vorkonfiguriert.

Schritt 3

Debug

Ein Debug-Node „Lanuk Output“ zeigt das Array der FloodMonitoring-Entitäten in der Seitenleiste.

Beispiel-Flow als JSON anzeigen
[
{"id": "tab1", "type": "tab", "label": "Lanuk", "disabled": false, "info": ""},
{"id": "inject1", "type": "inject", "z": "tab1", "name": "Go!", "props": [{"p": "payload"}, {"p": "topic", "vt": "str"}], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "", "payloadType": "date", "x": 110, "y": 120, "wires": [["lanuk1"]]},
{"id": "lanuk1", "type": "lanuk", "z": "tab1", "name": "", "zipUrl": "https://www.hochwasserportal.nrw/data/downloads/messwerte.zip", "stationsUrl": "https://www.hochwasserportal.nrw/data/internet/stations/stations.json", "stations": [], "outputMode": "latest", "messageFormat": "array", "entityType": "FloodMonitoring", "idPrefix": "urn:ngsi-ld:FloodMonitoring:LANUK:", "pollInterval": 0, "requestTimeout": 60, "fetchOnStartup": true, "debug": false, "x": 320, "y": 120, "wires": [["debug1"]]},
{"id": "debug1", "type": "debug", "z": "tab1", "name": "Lanuk Output", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "x": 550, "y": 120, "wires": []}
]

Status und Fehler​

AnzeigeBedeutung
Blauer Punkt „Lade Daten...“Stationsliste und Messwertarchiv werden heruntergeladen.
Blauer Punkt „Verarbeite...“Die CSV wird geparst und mit den Stammdaten verknüpft.
Grüner Punkt „n stations“Der Abruf war erfolgreich; n Entitäten wurden gesendet.
Roter Ring „Fehler beim Abruf“Download, Entpacken oder Verarbeitung sind fehlgeschlagen. Die Meldung „LANUK fetch failed: …“ wird über node.error mit der auslösenden Nachricht gemeldet.

Fehler können mit einem Catch-Node abgefangen werden. Im Dialog erscheint die Meldung „Stationsliste konnte nicht geladen werden.“, wenn der Admin-Endpunkt die Stationsliste nicht abrufen kann.

Hinweise​

  • Datenvolumen und Intervall: Das Messwertarchiv ist etwa 1 MB groß und wird bei jedem Abruf vollständig geladen. Wählen Sie ein Poll-Intervall, das zur Aktualisierungsfrequenz des Portals passt; Intervalle von 15 Minuten oder mehr sind in der Regel ausreichend. Es ist kein API-Schlüssel erforderlich.
  • Nutzungsbedingungen: Beachten Sie die Nutzungs- und Lizenzbedingungen des Hochwasserportals NRW für die Weiterverwendung der Daten.
  • Admin-Endpunkt: Der Dialog lädt die Stationsliste über /lanuk/stations des Node-RED-Servers. Der Endpunkt verlangt die Berechtigung lanuk.read und hält die Liste der Stationen mit Messwerten für 5 Minuten im Cache.
  • Einheiten: Wasserstände, Gefahrenschwelle und Pegelnullpunkt sind in Zentimetern angegeben (unitCode: CMT). Dezimalkommas in der CSV werden in Punkte umgewandelt.
  • Ausgabeformat: Die Entität ist ein flaches Objekt mit NGSI-ähnlicher ID. Für einen Context Broker formen Sie die Daten mit dem NGSI-LD Builder um.
  • Personenbezogene Daten: Die Datensätze enthalten ausschließlich technische Stations- und Messdaten und keine personenbezogenen Angaben. Das Feld dataProvider nennt den Betreiber der Station.

Weiterführende Themen​

Referenzen​