Zum Hauptinhalt springen
Data Connectors · Umwelt

E+H Floodmonitoring

Der Node ruft für eine Liste konfigurierter Messstellen (Instrumentationen) die aktuellen Werte aus der Netilion-Cloud von Endress+Hauser ab. Aus Wasserstand und Abstand, den eingetragenen Schwellenwerten und optionalen Hochwasserstufen erzeugt er je Messstelle eine FloodMonitoring-Entität und gibt alle Entitäten gesammelt in einer Nachricht aus.

  • Datenquelle
  • Triggerbasiert
  • FloodMonitoring
Node-Typ
eh-floodmonitoring
Paket
@htag/node-red-contrib-hypertegrity-environment
Eingänge / Ausgänge
1 / 1
Datenquelle
Endress+Hauser Netilion API (api.netilion.endress.com)

Wofür Sie den Node verwenden​

Kommunen, die eigene Radar- oder Ultraschallsensoren von Endress+Hauser an Bächen, Durchlässen oder Rückhaltebecken betreiben, erhalten die Messwerte über die Netilion-Cloud. Der E+H-Floodmonitoring-Node holt diese Werte in einen Node-RED-Flow, rechnet sie in Zentimeter um und bewertet sie anhand der von Ihnen gesetzten Schwellenwerte.

Typische Einsatzfälle sind:

  • Hochwasserüberwachung kleiner Gewässer, die nicht von Landes- oder Bundespegeln abgedeckt sind.
  • Warn-Dashboards mit Status Normal oder Critical, Bild der Messstelle und Link zu einer Detailseite.
  • Adaptive Abfrageintervalle, bei denen kritische Messstellen häufiger abgefragt werden als unauffällige.

So funktioniert der Node​

1

Auslösen

Eine eingehende Nachricht startet den Abruf. Optional bringt sie eine eigene Sensorliste oder das Kennzeichen fastInterval mit.

2

Anmelden

Je nach Methode werden API-Key und Benutzer per Basic Auth gesendet oder ein OAuth-Token angefordert und automatisch erneuert.

3

Werte abrufen

Für jede Messstelle wird nacheinander der Endpunkt instrumentations/ID/values abgefragt. Fehler einzelner Messstellen werden als Warnung protokolliert.

4

Bewerten und ausgeben

Wasserstand und Abstand werden von Millimetern in Zentimeter umgerechnet, mit Schwellenwerten verglichen und als Array von FloodMonitoring-Entitäten gesendet.

Ergebnis: Eine Nachricht mit einem Array von FloodMonitoring-Entitäten, je Messstelle mit Wasserstand, Status, Hochwasserstufe, Standort und Links.

Der Node ist triggerbasiert. Kombinieren Sie ihn mit einem oder zwei Inject-Nodes: einem langsamen Intervall für alle Messstellen und optional einem schnellen Intervall mit msg.fastInterval = true, das nur die aktuell kritischen Messstellen abfragt. Welche Messstellen kritisch sind, merkt sich der Node im Node-Kontext.

Konfiguration​

Der Bearbeitungsdialog ist in die Registerkarten Allgemein, Sensoren und Authentifizierung gegliedert.

Registerkarte Allgemein​

FeldTypStandardBedeutung
NameTextleerAnzeigename des Nodes im Flow. Ohne Namen zeigt der Node „E+H Floodmonitoring“.

Registerkarte Sensoren​

Die Registerkarte enthält eine bearbeitbare Liste. Jeder Eintrag beschreibt eine Messstelle und wird als Objekt im Array sensors gespeichert.

FeldTypStandardBedeutung
Sensor IDAuswahl mit Aktualisieren-SchaltflächeleerID der Instrumentation in Netilion. Die Schaltfläche lädt bis zu 100 Instrumentationen Ihres Kontos; angezeigt werden Tag und Seriennummer. Gespeichert als id.
NameTextleerAnzeigename der Messstelle. Wird in die Entität übernommen. Gespeichert als name.
Distanz-WertAuswahlleer (entspricht distance)Schlüssel des Werts, der den gemessenen Abstand liefert. Die Schaltfläche Werte lädt die verfügbaren Schlüssel der gewählten Instrumentation. Gespeichert als distanceKey.
Pegel-WertAuswahlleer (entspricht level)Schlüssel des Werts, der den Wasserstand liefert. Gespeichert als levelKey.
Breitengrad (Lat), Längengrad (Lon)ZahlleerKoordinaten der Messstelle in Dezimalgrad. Fehlende Werte werden als 0 ausgegeben. Gespeichert als lat und lon.
Schwellwert Pegel (cm)ZahlleerWasserstand in Zentimetern, ab dem der Status Critical gesetzt wird. 0 oder leer schaltet die Prüfung ab. Gespeichert als thresholdLevel.
Schwellwert Abstand (cm)ZahlleerAbstandsschwelle in Zentimetern. Gespeichert als thresholdDistance.
HQ SchwellwerteKontrollkästchenausAktiviert die Einstufung in Hochwasserstufen. Gespeichert als useHQThresholds.
HQ Schwellwerte (kommagetrennt)TextleerSechs aufsteigende Grenzwerte in Millimetern, durch Kommas getrennt (Beispiel unten). Gespeichert als hqThresholds.
Bild-URLTextleerAdresse eines Bildes der Messstelle. Unterstützt die Platzhalter {{id}} und {{name}} sowie Umgebungsvariablen in der Form ${NAME}. Gespeichert als imageLink.
Dashboard-URLTextleerAdresse einer Detailseite. Gleiche Platzhalter wie bei der Bild-URL. Gespeichert als dashboardLink.

Beispiel für sechs HQ-Schwellwerte:

1412,1686,1891,2100,2300,2500

Registerkarte Authentifizierung​

FeldTypStandardBedeutung
AuthentifizierungsmethodeAuswahl (basic, oauth)basicBasic Auth (API Key + Benutzer) sendet API-Key und Benutzerdaten bei jeder Anfrage. OAuth Token (API Key + Secret + Benutzer) fordert mit API-Key und Secret ein kurzlebiges Token an, das automatisch erneuert wird. Gespeichert als authMethod.
API KeyPasswort (Credential)leerAPI-Schlüssel Ihrer Netilion-Anwendung. Wird verschlüsselt gespeichert und in jeder Anfrage im Header Api-Key gesendet.
API SecretPasswort (Credential, nur OAuth)leerGeheimnis Ihrer Netilion-Anwendung für die Token-Anforderung. Wird verschlüsselt gespeichert.
BenutzernameText (Credential)leerBenutzername Ihres Netilion-Kontos.
PasswortPasswort (Credential)leerPasswort Ihres Netilion-Kontos. Wird verschlüsselt gespeichert.
Registrierung bei Netilion

Für den Zugriff benötigen Sie ein Netilion-Konto von Endress+Hauser, in dem Ihre Geräte als Instrumentationen angelegt sind, sowie API-Key und gegebenenfalls Secret einer dort registrierten Anwendung. Beides erhalten Sie im Netilion-Entwicklerportal. Alle vier Credential-Felder akzeptieren Umgebungsvariablen in der Form ${NAME}, die der Node beim Start auflöst.

Bereits gespeicherte Credentials zeigt der Dialog als Platzhalter; lassen Sie das Feld leer, um den gespeicherten Wert beizubehalten. Die Aktualisieren-Schaltflächen im Dialog greifen über den Node-RED-Server auf die gespeicherten Credentials zurück, sodass Sie sie nicht erneut eingeben müssen.

Eingang​

EigenschaftTypBedeutung
msgbeliebigJede Nachricht startet einen Abruf. Alle Eigenschaften der Nachricht bleiben in der Ausgabe erhalten; payload wird überschrieben.
msg.payloadArray (optional)Ersetzt die konfigurierte Sensorliste, wenn es ein nicht leeres Array ist, dessen erstes Element ein Feld id hat. Je Element werden id, name, coordinates.latitude, coordinates.longitude, thresholds.level, thresholds.distance, hq_thresholds (Array, aktiviert die HQ-Einstufung), imageLink und dashboardLink ausgewertet. Für Distanz- und Pegel-Wert gelten dabei die Schlüssel distance und level.
msg.fastInterval = trueBoolean (optional)Schnelles Intervall: Es werden nur Messstellen abgefragt, die beim letzten Abruf den Status Critical hatten.
msg.fastInterval = falseBoolean (optional)Langsames Intervall: Es werden alle Messstellen außer den aktuell kritischen abgefragt.
msg.fastInterval nicht gesetzt–Alle konfigurierten oder übergebenen Messstellen werden abgefragt.

Ausgang​

Der Node sendet pro Abruf eine Nachricht, sofern mindestens eine Messstelle erfolgreich abgefragt wurde. msg.payload ist ein Array von FloodMonitoring-Entitäten.

{
"payload": [
{
"id": "urn:ngsi-ld:FloodMonitoring:551018",
"type": "FloodMonitoring",
"name": "Pegel Musterbach Brücke",
"alertLevel": 120,
"location": {
"value": {"type": "Point", "coordinates": [7.4701, 51.3602]}
},
"dateObserved": "2026-10-01T08:12:00.000Z",
"floodLevelStatus": "Normal",
"hq": 0,
"measuredDistance": 245.3,
"currentLevel": 54.7,
"picture": "https://bilder.example.org/messstellen/551018.jpg",
"link": "https://dashboard.example.org/wasserstand551018"
}
]
}
FeldBedeutung
idurn:ngsi-ld:FloodMonitoring: gefolgt von der Instrumentation-ID.
typeImmer FloodMonitoring.
nameKonfigurierter Name der Messstelle.
alertLevelKonfigurierter Schwellwert Pegel in Zentimetern; 0, wenn keiner gesetzt ist.
locationStandort im NGSI-v2-Stil mit GeoJSON-Punkt unter value, Reihenfolge Länge, Breite.
dateObservedZeitstempel des Pegel-Werts aus Netilion; fehlt der Pegel-Wert, der Abrufzeitpunkt.
floodLevelStatusCritical, wenn ein Schwellwert größer 0 gesetzt ist und currentLevel ihn erreicht oder überschreitet; sonst Normal.
hqHochwasserstufe 0, 5, 10, 25, 50, 100 oder 150 anhand der sechs HQ-Grenzwerte; 0, wenn die Einstufung deaktiviert ist oder weniger als sechs Grenzwerte vorliegen.
measuredDistanceGemessener Abstand in Zentimetern (Netilion liefert Millimeter). Entfällt, wenn der Distanz-Wert nicht gefunden wurde.
currentLevelWasserstand in Zentimetern (Netilion liefert Millimeter). Entfällt, wenn der Pegel-Wert nicht gefunden wurde.
pictureBild-URL nach Ersetzung der Platzhalter; entfällt, wenn leer.
linkDashboard-URL nach Ersetzung der Platzhalter; entfällt, wenn leer.

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

Schritt 1

Zwei Inject-Nodes

„Go!“ löst stündlich den vollständigen Abruf aus; „fastInterval“ setzt alle 15 Minuten msg.fastInterval auf true und fragt nur kritische Messstellen ab.

Schritt 2

E+H Floodmonitoring

Der Node ist ohne Sensoren und mit Basic Auth vorkonfiguriert. Tragen Sie Credentials und Messstellen ein, bevor Sie deployen.

Schritt 3

Debug

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

Beispiel-Flow als JSON anzeigen
[
{"id": "tab1", "type": "tab", "label": "eh-floodmonitoring", "disabled": false, "info": ""},
{"id": "inject1", "type": "inject", "z": "tab1", "name": "Go!", "props": [{"p": "payload"}, {"p": "topic", "vt": "str"}], "repeat": "3600", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "", "payloadType": "date", "x": 140, "y": 200, "wires": [["eh1"]]},
{"id": "inject2", "type": "inject", "z": "tab1", "name": "fastInterval", "props": [{"p": "fastInterval", "v": "true", "vt": "bool"}], "repeat": "900", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "x": 150, "y": 280, "wires": [["eh1"]]},
{"id": "eh1", "type": "eh-floodmonitoring", "z": "tab1", "name": "", "sensors": "[]", "authMethod": "basic", "x": 420, "y": 200, "wires": [["debug1"]]},
{"id": "debug1", "type": "debug", "z": "tab1", "name": "Output", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "x": 720, "y": 200, "wires": []}
]

Status und Fehler​

AnzeigeBedeutung
Roter Ring „no sensors“Weder im Dialog noch in msg.payload sind Messstellen vorhanden. Die Meldung „No sensors configured or provided in payload“ wird über node.error gemeldet.
Grüner Ring „cache filtered - 0 sensors“Nach dem Filter über msg.fastInterval bleibt keine Messstelle übrig. Es wird keine Nachricht gesendet.
Blauer Punkt „fetching n sensors...“Der Abruf von n Messstellen läuft.
Grüner Punkt „n sensor(s) ok“Alle Messstellen wurden erfolgreich abgefragt.
Gelber Punkt „n ok, m err“Ein Teil der Messstellen konnte nicht abgefragt werden; die erfolgreichen werden gesendet.
Roter Punkt „n error(s)“Keine Messstelle konnte abgefragt werden. Es wird keine Nachricht gesendet.
Warnung „Failed to fetch flood sensor …“Eine einzelne Messstelle lieferte einen Fehler, zum Beispiel wegen ungültiger ID oder abgelehnter Zugangsdaten.
Warnung „No API key configured …“Beim Start ist kein API-Key hinterlegt.
Warnung „OAuth mode selected but no API Secret configured.“OAuth ist gewählt, aber das Secret fehlt.
Warnung „OAuth token refresh failed …“Die Token-Erneuerung ist gescheitert; der Node meldet sich vollständig neu an.

Fehler werden über node.error mit der auslösenden Nachricht gemeldet und können mit einem Catch-Node abgefangen werden.

Hinweise​

  • Zugangsdaten und Nutzungsbedingungen: Netilion ist ein kommerzieller Dienst von Endress+Hauser. API-Kontingente und Preise richten sich nach Ihrem Netilion-Vertrag; Fragen zu Konditionen klären Sie mit Endress+Hauser oder unserem Vertriebsteam. Jede Messstelle verursacht pro Abruf eine API-Anfrage (Zeitüberschreitung 15 Sekunden); bei OAuth kommt die Token-Anforderung hinzu.
  • OAuth-Token: Das Token ist etwa 11 Minuten gültig. Der Node erneuert es 60 Sekunden vor Ablauf per Refresh-Token und meldet sich bei Fehlschlag neu an.
  • Kontextspeicher: Die Liste der kritischen Messstellen liegt im Node-Kontext unter dem Schlüssel cache. Ohne persistenten Kontextspeicher in settings.js geht sie bei einem Neustart verloren; der nächste Abruf ohne fastInterval baut sie neu auf.
  • Admin-Endpunkte: Die Schaltflächen im Dialog nutzen die Endpunkte /eh-floodmonitoring/instrumentations und /eh-floodmonitoring/values des Node-RED-Servers. Diese greifen auf die gespeicherten Credentials des Nodes zurück und protokollieren eine Diagnose ohne Geheimnisse im Node-RED-Log.
  • Einheiten: Netilion liefert Abstand und Wasserstand in Millimetern; der Node gibt Zentimeter aus. Die HQ-Grenzwerte tragen Sie in Millimetern ein.
  • Ausgabeformat: Die Entität folgt dem Smart Data Model FloodMonitoring in flacher Form; lediglich location ist im NGSI-v2-Stil verschachtelt. Für einen NGSI-LD Context Broker formen Sie die Daten mit dem NGSI-LD Builder um.
  • Personenbezogene Daten: Die Entitäten enthalten Messstellennamen, Koordinaten und Links, die Sie selbst vergeben. Achten Sie darauf, keine Namen oder Adressen von Privatpersonen in Namen und URLs aufzunehmen. Credentials werden verschlüsselt im Credential-Store von Node-RED abgelegt und nie in die Ausgabe übernommen.

Weiterführende Themen​

Referenzen​