Zum Hauptinhalt springen
Data Connectors · Umwelt

Pegelonline

Der Node verbindet sich beim Deployment mit dem MQTT-Broker EDIS der Wasserstraßen- und Schifffahrtsverwaltung des Bundes und abonniert die Pegelstationen, die Sie nach Gewässer oder einzeln auswählen. Jede eingehende Messung, zum Beispiel ein neuer Wasserstand, verlässt den Node als flache WaterObserved-Entität.

  • Datenquelle
  • Ereignisbasiert (MQTT)
  • WaterObserved
Node-Typ
pegelonline
Paket
@htag/node-red-contrib-hypertegrity-environment
Eingänge / Ausgänge
0 / 1
Datenquelle
Pegelonline (WSV) über EDIS-MQTT-Broker und Dict-API

Wofür Sie den Node verwenden​

Pegelonline stellt die Messwerte von über 600 Pegelstationen an Bundeswasserstraßen bereit: Wasserstand, Abfluss, Wassertemperatur und weitere Parameter. Statt die REST-Schnittstelle regelmäßig abzufragen, empfängt der Pegelonline-Node die Messungen als Ereignisse über MQTT, sobald die Station sie liefert.

Typische Einsatzfälle sind:

  • Wasserstände von Rhein, Mosel oder Elbe nahezu in Echtzeit in einen NGSI-LD Context Broker übernehmen.
  • Hochwasser-Frühwarnung in Kommunen an Bundeswasserstraßen durch Schwellenwertprüfung im Flow.
  • Schifffahrts- und Tourismusanwendungen, die aktuelle Pegel und Wassertemperaturen anzeigen.

So funktioniert der Node​

1

Themen auflösen

Beim Deployment fragt der Node die Dict-API von Pegelonline ab und ermittelt die MQTT-Topics und Stammdaten der gewünschten Stationen.

2

Verbinden und abonnieren

Der Node verbindet sich per TLS mit dem EDIS-Broker und abonniert je Station das Stations-Topic in Blöcken von 50.

3

Filtern und anreichern

Eingehende Nachrichten werden auf die gewählten Parameter gefiltert und mit Stationsname, Gewässer, Behörde und Koordinaten ergänzt.

4

Ausgeben

Jede Messung verlässt den Node als eigene Nachricht mit einer WaterObserved-Entität in msg.payload.

Ergebnis: Ein kontinuierlicher Strom einzelner Messungen, der direkt in den NGSI-LD Builder geführt werden kann.

Der Node ist ereignisbasiert und hat keinen Eingang. Er startet automatisch nach dem Deployment oder beim Start von Node-RED. Schlägt die Dict-API-Abfrage fehl, wiederholt der Node den Versuch bis zu zehnmal im Abstand von 10 Sekunden. Bricht die MQTT-Verbindung ab, verbindet sich der Client alle 5 Sekunden neu.

Konfiguration​

Der Bearbeitungsdialog ist in die Registerkarten Stationen, Parameter und Einstellungen gegliedert.

Registerkarte Stationen​

FeldTypStandardBedeutung
NameTextleerAnzeigename des Nodes im Flow. Ohne Namen zeigt der Node „Pegelonline: Gewässer“ oder „Pegelonline: Global“.
Filter-ModusAuswahl (water, all)waterNach Gewässer filtern blendet die Gewässerauswahl ein; Global (Alle Gewässer) leert das Gewässer und listet alle Stationen. Gespeichert als selectionMode.
GewässerAuswahlleer (alle Gewässer)Kurzname des Gewässers aus der Gewässer-API, zum Beispiel RHEIN. Gespeichert als water.
Verfügbare Stationen / Abonnierte StationenDoppelliste mit Suchfeldkeine AuswahlMit den Pfeiltasten verschieben Sie Stationen in die rechte Liste. Gespeichert werden die Stations-UUIDs im Array stations. Ist die rechte Liste leer, abonniert der Node alle Stationen, die zum Gewässerfilter passen.

Registerkarte Parameter​

FeldTypStandardBedeutung
Parameter auswählenKontrollkästchenWMessgrößen, die weitergegeben werden. Gespeichert als Array parameters. Ohne Auswahl verwendet der Node W.

Verfügbare Parameter nach Gruppen:

GruppeParameter
PrimärWasserstand (W)
HydrologieAbfluss (Q), Fließgeschwindigkeit (VA), Fließrichtung (RV), Wellenhöhe (SIGH), Wellenperiode (TP)
WasserqualitätWassertemperatur (WT), Salzgehalt (S), pH-Wert (PH), Sauerstoffgehalt (O2), Leitfähigkeit (LF), Trübung (TR)
MeteorologieLufttemperatur (LT), Niederschlag (P), Windgeschwindigkeit (WG), Windrichtung (WR)

Nicht jede Station liefert alle Parameter. Der Node abonniert immer das vollständige Stations-Topic und verwirft Nachrichten mit nicht gewählten Parametern.

Registerkarte Einstellungen​

FeldTypStandardBedeutung
Broker-URLTextsiehe untenAdresse des EDIS-MQTT-Brokers. Die Verbindung nutzt TLS mit Zertifikatsprüfung.
BenutzernameText (Credential)leerBenutzername für den Broker. Wird verschlüsselt in den Node-RED-Credentials gespeichert.
PasswortPasswort (Credential)leerPasswort für den Broker. Wird verschlüsselt gespeichert.
Dict-APITextsiehe untenEndpunkt, der Stationsstammdaten und MQTT-Topics liefert.
Gewässer-APITextsiehe untenREST-Endpunkt für die Gewässerliste im Dialog.
Stations-APITextsiehe untenREST-Endpunkt für die Stationsliste im Dialog.
Debug-ModusKontrollkästchenausSchreibt detaillierte Protokolle als Warnungen in die Debug-Seitenleiste.

Standardwerte der URL-Felder:

Broker-URL: ssl://edis.pegelonline.wsv.de:8883
Dict-API: https://dict-api.pegelonline.wsv.de/search
Gewässer-API: https://pegelonline.wsv.de/webservices/rest-api/v2/waters.json
Stations-API: https://pegelonline.wsv.de/webservices/rest-api/v2/stations.json
Zugangsdaten für den EDIS-Broker

Der EDIS-Broker verlangt eine Anmeldung. Für den öffentlichen, nur lesenden Zugang steht der Benutzer edis-mqtt-ro zur Verfügung; das zugehörige Passwort entnehmen Sie der Pegelonline-Dokumentation zum MQTT-Zugang. Tragen Sie Benutzername und Passwort auf der Registerkarte Einstellungen ein, bevor Sie deployen.

Eingang​

Der Node hat keinen Eingang. Er wird ausgelöst durch:

  • das Deployment des Flows oder den Start von Node-RED, wodurch die Stammdaten geladen und die MQTT-Verbindung aufgebaut wird;
  • jede MQTT-Nachricht des EDIS-Brokers auf einem abonnierten Stations-Topic.

Um die Auswahl zu ändern, bearbeiten Sie den Node und deployen erneut. Beim Deployment oder Entfernen des Nodes wird die MQTT-Verbindung sauber geschlossen.

Ausgang​

Für jede empfangene Messung sendet der Node eine eigene Nachricht. msg.payload ist ein flaches Objekt, das sich am Smart Data Model WaterObserved orientiert. Der gemessene Wert steht in einem Attribut, dessen Name vom Parameter abhängt.

{
"payload": {
"id": "00000000-0000-4000-8000-000000000001",
"type": "WaterObserved",
"name": "MUSTERSTADT - Wasserstand",
"description": "Musterstadt at MUSTERFLUSS (km 123.4)",
"dataProvider": "WSA Musterfluss",
"areaServed": "Musterkreis, Musterland",
"location": {"type": "Point", "coordinates": [7.4001, 50.4302]},
"dateObserved": "2026-10-01T08:15:00+02:00",
"unit": "cm",
"stationId": "00000000-0000-4000-8000-000000000001",
"parameter": "W",
"parameterName": "Wasserstand",
"riverKilometer": 123.4,
"waterLevel": 212
},
"topic": "edis/pegelonline/MUSTERFLUSS/…/00000000-0000-4000-8000-000000000001/W",
"_station": {"…": "Stammdaten der Station aus der Dict-API"},
"_originalPayload": {"…": "unveränderte MQTT-Nachricht"}
}
FeldBedeutung
payload.id, payload.stationIdUUID der Pegelstation.
payload.typeImmer WaterObserved.
payload.nameKurzname der Station und Langname des Parameters, getrennt durch Bindestrich.
payload.descriptionLangname der Station, Gewässer und Flusskilometer.
payload.dataProviderZuständige Behörde laut Stammdaten, zum Beispiel das Wasserstraßen- und Schifffahrtsamt.
payload.areaServedLandkreis und Bundesland der Station. Fehlende Angaben erscheinen als Unknown.
payload.locationGeoJSON-Punkt in der Reihenfolge Länge, Breite.
payload.dateObservedZeitstempel der Messung aus der MQTT-Nachricht; fehlt er, der Empfangszeitpunkt.
payload.unitEinheit laut Zeitreihe der Station, zum Beispiel cm, m³/s oder °C.
payload.parameter, payload.parameterNameKurzzeichen und Langname des Parameters.
payload.riverKilometerFlusskilometer der Station.
Messwert-AttributDer Messwert unter dem Attributnamen aus der folgenden Tabelle.
topicMQTT-Topic, auf dem die Nachricht empfangen wurde.
_stationVollständiger Stammdatensatz der Station aus der Dict-API.
_originalPayloadUnveränderte MQTT-Nachricht.

Zuordnung der Parameter zu Attributnamen:

ParameterAttributParameterAttribut
WwaterLevelSsalinity
QdischargePHph
WTwaterTemperatureO2oxygenContent
LTairTemperatureVAflowVelocity
PprecipitationRVflowDirection
LFconductivityTRturbidity
WGwindSpeedSIGHsignificantWaveHeight
WRwindDirectionTPwavePeriod

Unbekannte Parameter landen im Attribut measuredValue.

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 → pegelonline. Alternativ laden Sie die Datei pegelonline.json herunter und importieren sie über Menü → Importieren.

Schritt 1

Pegelonline

Der Node „Pegel Andernach“ ist im globalen Modus mit genau einer abonnierten Station und dem Parameter W vorkonfiguriert.

Schritt 2

Zugangsdaten ergänzen

Tragen Sie auf der Registerkarte Einstellungen Benutzername und Passwort für den EDIS-Broker ein und deployen Sie.

Schritt 3

Debug

Ein Debug-Node zeigt jede eingehende Messung als vollständige Nachricht in der Seitenleiste.

Beispiel-Flow als JSON anzeigen
[
{"id": "pegel1", "type": "pegelonline", "z": "tab1", "name": "Pegel Andernach", "water": "", "stations": "[\"5735892a-ec65-4b29-97c5-50939aa9584e\"]", "selectionMode": "all", "brokerUrl": "ssl://edis.pegelonline.wsv.de:8883", "dictApiUrl": "https://dict-api.pegelonline.wsv.de/search", "restApiWatersUrl": "https://pegelonline.wsv.de/webservices/rest-api/v2/waters.json", "restApiStationsUrl": "https://pegelonline.wsv.de/webservices/rest-api/v2/stations.json", "parameters": "[\"W\"]", "debug": false, "x": 140, "y": 100, "wires": [["debug1"]]},
{"id": "debug1", "type": "debug", "z": "tab1", "name": "Pegel Ausgabe", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "x": 400, "y": 100, "wires": []}
]

Status und Fehler​

AnzeigeBedeutung
Blauer Punkt „Themen auflösen...“Die Dict-API wird abgefragt.
Gelber Ring „Setup-Versuch (n/10)...“Die Dict-API-Abfrage ist fehlgeschlagen; der Node wartet 10 Sekunden und versucht es erneut.
Gelber Ring „Keine Stationen gefunden“Die Dict-API hat keine Stationen geliefert.
Gelber Ring „Keine passenden Stationen“Keine der ausgewählten Stations-UUIDs ist im Ergebnis der Dict-API enthalten.
Gelber Ring „Keine Themen für Parameter“Für die Zielstationen wurde kein MQTT-Topic gefunden.
Blauer Punkt „MQTT verbinden...“Die Verbindung zum Broker wird aufgebaut.
Grüner Punkt „Verbunden“Die Verbindung steht; die Abonnements werden eingerichtet.
Grüner Punkt „(n Stations)“Die Abonnements sind beauftragt; n Stationen werden überwacht.
Gelber Punkt „Verbindung wird wiederhergestellt...“Der MQTT-Client versucht, die Verbindung erneut aufzubauen.
Roter Punkt „Offline“Der Client hat die Verbindung zum Broker verloren.
Roter Ring „Abonnementfehler“Ein Abonnement-Block wurde vom Broker abgelehnt. Die Meldung „Subscription chunk error: …“ wird über node.error gemeldet.
Roter Punkt „MQTT-Fehler“Der MQTT-Client hat einen Fehler gemeldet, zum Beispiel abgelehnte Zugangsdaten. Die Meldung „MQTT Error: …“ wird über node.error gemeldet.
Roter Ring „Getrennt“Die Verbindung wurde geschlossen.
Roter Punkt „Setup fehlgeschlagen“Die Initialisierung ist nach allen Versuchen gescheitert. Die Meldung „Nodes initialization failed: …“ wird über node.error gemeldet.

Fehler werden über node.error gemeldet und können mit einem Catch-Node abgefangen werden. Nachrichten, die kein gültiges JSON enthalten, werden stillschweigend verworfen.

Hinweise​

  • Zugangsdaten und Nutzungsbedingungen: Der EDIS-Broker und die Pegelonline-Schnittstellen unterliegen den Nutzungsbedingungen der Wasserstraßen- und Schifffahrtsverwaltung des Bundes. Die Daten werden in der Regel unter der Datenlizenz Deutschland bereitgestellt; prüfen Sie die aktuellen Bedingungen auf der Pegelonline-Website.
  • Dauerhafte Verbindung: Der Node hält eine ständige TLS-Verbindung (Keepalive 60 Sekunden, Verbindungsaufbau mit Zeitüberschreitung 30 Sekunden). Mehrere Node-Instanzen bauen jeweils eigene Verbindungen auf. Fassen Sie Stationen daher möglichst in einem Node zusammen.
  • Proxy und Firewall: Für den Betrieb müssen ausgehende Verbindungen zu Port 8883 (MQTT über TLS) sowie HTTPS zu den Pegelonline-Endpunkten erlaubt sein.
  • Admin-Endpunkte: Der Dialog lädt Gewässer und Stationen über die Endpunkte /pegelonline/waters und /pegelonline/stations des Node-RED-Servers, die die Anfrage an die REST-API weiterreichen.
  • Einheiten: Die Einheiten stammen aus den Zeitreihen der Station und werden unverändert übernommen (zum Beispiel cm für Wasserstand, m³/s für Abfluss, °C für Temperaturen).
  • Personenbezogene Daten: Die Daten beschreiben amtliche Pegelstationen und enthalten keine personenbezogenen Angaben. dataProvider nennt die zuständige Behörde.
  • Ausgabeformat: Der Node liefert ein flaches Objekt ohne NGSI-LD-Kontext. Für einen Context Broker formen Sie die Daten mit dem NGSI-LD Builder um.

Weiterführende Themen​

Referenzen​