Zum Hauptinhalt springen
Data Operations · NGSI-LD und Stellio

Stellio Entities

Der Node bündelt die wichtigsten Entitäten-Operationen des Stellio Context Brokers: Abfragen nach Typ, Filter und ID-Muster, Lesen einer einzelnen Entität, Zählen von Treffern sowie Löschen einzeln oder als Stapel. Die Operation lässt sich im Dialog festlegen oder je Nachricht über msg.operation steuern. Eine Browser-Registerkarte zeigt Entitäten direkt im Editor.

  • Abfragen
  • Löschen
  • NGSI-LD
Node-Typ
stellio-entities
Paket
@htag/node-red-contrib-hypertegrity-ngsi-ld
Eingänge / Ausgänge
1 / 1
Ziel
Stellio Context Broker (NGSI-LD)

Wofür Sie den Node verwenden​

Nach dem Veröffentlichen von Entitäten möchten Sie meist prüfen, was im Broker liegt, einzelne Datensätze nachlesen oder veraltete Entitäten entfernen. Stellio Entities deckt diese Aufgaben mit einem Node ab und erspart Ihnen das manuelle Zusammenbauen von HTTP-Requests, Headern und Query-Parametern.

Typische Einsatzfälle sind:

  • Qualitätskontrolle nach einem Import: alle Entitäten eines Typs abfragen und mit der Quelle vergleichen.
  • Dashboards und Anreicherung: eine Entität per ID lesen und ihre Attribute in einem Flow weiterverwenden.
  • Monitoring: die Anzahl der Entitäten eines Typs zählen und bei Abweichungen alarmieren.
  • Bereinigung: Entitäten anhand eines ID-Musters ermitteln und per Stapel-Löschung entfernen.

So funktioniert der Node​

1

Operation bestimmen

msg.operation oder die konfigurierte Aktion legt fest, ob abgefragt, gelesen, gezählt oder gelöscht wird.

2

Request aufbauen

Verbindung (API URL, Tenant, Context) und Parameter (Type, q, ID Pattern, Attrs, Limit, Offset, Entity ID) werden aus msg und Konfiguration zusammengeführt.

3

Broker ansprechen

Der Node ruft /ngsi-ld/v1/entities bzw. /entityOperations/delete mit NGSILD-Tenant- und Link-Header auf.

4

Antwort ausgeben

Antwortkörper, Statuscode, Header und gegebenenfalls die Trefferzahl werden in die Nachricht geschrieben.

Ergebnis: Entitäten, eine einzelne Entität, eine Trefferzahl oder das Ergebnis einer Löschung in msg.payload.

Der Node ist nachrichtenbasiert. Jede eingehende Nachricht löst genau einen Request aus. Die Registerkarte Browser im Dialog arbeitet unabhängig davon: Sie nutzt die Admin-Endpunkte des Node-RED-Servers, um Entitäten im Editor aufzulisten, Details anzuzeigen und Entitäten direkt zu löschen.

Konfiguration​

Der Dialog hat die Registerkarten Aktion und Browser. Alle gespeicherten Felder liegen auf der Registerkarte Aktion.

Registerkarte Aktion​

FeldTypStandardBedeutung
NameTextleerAnzeigename des Nodes im Flow. Ohne Namen zeigt der Node Entities: <Aktion>.
API URLText${STELLIO_API_URL}Basis-URL des Brokers. Platzhalter ${VAR} werden zur Laufzeit aus Umgebungsvariablen ersetzt; ein abschließender Schrägstrich wird entfernt. Leer: Rückfall auf die Umgebungsvariable STELLIO_API_URL.
TenantTextleerWert des Headers NGSILD-Tenant. Leer: der Header wird nicht gesendet (Standard-Tenant des Brokers).
ContextTextsiehe untenJSON-LD-Kontext, der als Link-Header mitgesendet wird. Er bestimmt, wie Typ- und Attributnamen in der Antwort abgekürzt werden.
AktionAuswahlQueryQuery (Entitäten suchen), Get (einzelne Entität per ID), Count (Anzahl ermitteln), Delete (Entität löschen), Batch Delete (Array von IDs aus msg.payload).
TypeTextleerEntitätstyp(en) für Query und Count, mehrere kommagetrennt, zum Beispiel Device,WeatherObserved.
q-FilterTextleerNGSI-LD-Filterausdruck (Beispiel unten).
ID PatternTextleerRegulärer Ausdruck auf die Entitäts-ID, zum Beispiel urn:ngsi-ld:Device:.*.
AttrsTextleerNur diese Attribute zurückgeben, kommagetrennt. Gilt auch für Get.
LimitZahl100Maximale Trefferzahl je Antwort (Query).
OffsetZahlleerAnzahl zu überspringender Treffer für seitenweises Abrufen.
Entity IDTextleerVollständige URN für Get und Delete, zum Beispiel urn:ngsi-ld:Device:001.

Beispiel für einen q-Filter:

temperature>20;category=="urban"

Standardwerte der URL-Felder:

Context: https://context.${DOMAIN}/main-context.jsonld

Welche Felder sichtbar sind, hängt von der gewählten Aktion ab: Type, q-Filter, ID Pattern, Attrs, Limit und Offset erscheinen bei Query und Count, Entity ID bei Get und Delete, ein Hinweis zu msg.payload bei Batch Delete.

Registerkarte Browser​

Die Registerkarte verwendet die Verbindung aus der Registerkarte Aktion. Sie können nach Type und q-Filter suchen, ein Limit setzen, mit Laden die Treffer auflisten, Details als JSON einblenden und einzelne Entitäten nach Rückfrage löschen. Die Browser-Felder werden nicht gespeichert.

Löschen aus dem Editor

Das Löschen in der Browser-Registerkarte wirkt sofort auf den Broker, ohne dass der Flow bereitgestellt werden muss. Es setzt die Node-RED-Berechtigung stellio.write voraus.

Eingang​

Werte aus der Nachricht haben Vorrang vor der Konfiguration.

EigenschaftTypBedeutung
msg.operationTextquery, get, count, delete oder batchDelete. Unbekannte Werte werden wie query behandelt.
msg.apiUrlTextÜberschreibt die API URL.
msg.tenantTextÜberschreibt den Tenant.
msg.contextUrlTextÜberschreibt den Context (Link-Header).
msg.typeTextÜberschreibt Type (Query, Count).
msg.qTextÜberschreibt den q-Filter (Query, Count).
msg.idPatternTextÜberschreibt das ID Pattern (Query, Count).
msg.attrsTextÜberschreibt Attrs (Query, Count, Get).
msg.limitZahlÜberschreibt das Limit (Query).
msg.offsetZahlÜberschreibt den Offset (Query, Count).
msg.entityIdTextÜberschreibt die Entity ID (Get, Delete; Rückfallwert für Batch Delete).
msg.payloadArray von TextenNur bei batchDelete: Liste der zu löschenden URNs. Ist der Payload kein Array, wird stattdessen die Entity ID als einzelnes Element verwendet.

Enthält eine Query weder Type, q-Filter noch ID Pattern, setzt der Node automatisch idPattern=.*, damit der Broker alle Entitäten liefert.

Ausgang​

Die Nachricht wird um die Antwort des Brokers ergänzt. Bei query mit Type WeatherObserved sieht msg.payload zum Beispiel so aus:

[
{
"id": "urn:ngsi-ld:WeatherObserved:beispielstadt:station-042",
"type": "WeatherObserved",
"temperature": {
"type": "Property",
"value": 14.2,
"observedAt": "2026-10-01T06:00:00.000Z"
},
"location": {
"type": "GeoProperty",
"value": {"type": "Point", "coordinates": [7.3322, 50.3315]}
},
"@context": ["https://context.beispielstadt.example/main-context.jsonld"]
}
]
FeldBedeutung
msg.payloadquery: Array von Entitäten. get: ein Entitätsobjekt. count: Objekt {"count": n}. delete: in der Regel leer (204). batchDelete: Ergebnisobjekt des Brokers mit erfolgreichen und fehlgeschlagenen IDs.
msg.statusCodeHTTP-Statuscode der Antwort.
msg.headersAntwort-Header, darunter bei Zählabfragen ngsi-ld-results-count.
msg.countTrefferzahl aus dem Header NGSILD-Results-Count, sofern der Broker ihn bei query mitsendet.

Beispiel-Flow​

Das Paket bringt einen gemeinsamen Beispiel-Flow für mehrere Stellio-Nodes mit. Sie importieren ihn in Node-RED über Menü → Importieren → Beispiele → @htag/node-red-contrib-hypertegrity-ngsi-ld → stellio-helper-nodes. Der Stellio-Entities-Node ist darin enthalten, jedoch nicht als vollständiger Inject-Entities-Debug-Ablauf verdrahtet; der folgende Ausschnitt zeigt deshalb eine minimale Verdrahtung dieses Nodes. Alternativ laden Sie die Datei stellio-helper-nodes.json herunter und importieren sie über Menü → Importieren.

Schritt 1

Inject

Ein Inject-Node löst die Abfrage manuell oder in einem festen Intervall aus.

Schritt 2

Stellio Entities

Der Node fragt mit der Aktion Query alle Entitäten des Tenants ab (Limit 100).

Schritt 3

Debug

Ein Debug-Node zeigt das Entitäten-Array, Statuscode und Trefferzahl an.

Minimale Verdrahtung als JSON anzeigen
[
{"id": "tab1", "type": "tab", "label": "Stellio Helper Nodes", "disabled": false, "info": ""},
{"id": "inject1", "type": "inject", "z": "tab1", "name": "", "props": [{"p": "payload"}], "repeat": "", "once": false, "payload": "", "payloadType": "date", "x": 160, "y": 100, "wires": [["entities1"]]},
{"id": "entities1", "type": "stellio-entities", "z": "tab1", "name": "", "apiUrl": "${STELLIO_API_URL}", "tenant": "default_dataspace", "contextUrl": "https://context.${DOMAIN}/main-context.jsonld", "operation": "query", "entityType": "", "q": "", "idPattern": "", "attrs": "", "limit": 100, "offset": "", "entityId": "urn:ngsi-ld:FloodMonitoring:L6090", "x": 400, "y": 100, "wires": [["debug1"]]},
{"id": "debug1", "type": "debug", "z": "tab1", "name": "Entities", "active": true, "tosidebar": true, "complete": "true", "targetType": "full", "x": 640, "y": 100, "wires": []}
]

Status und Fehler​

AnzeigeBedeutung
Blauer Punkt „query…“ (bzw. Name der Operation)Der Request läuft.
Grüner Punkt „12 entities“Query erfolgreich; die Zahl ist die Trefferzahl aus dem Antwort-Header.
Grüner Punkt „get ✓ (200)“ (bzw. Operation und Statuscode)Operation erfolgreich mit Status 2xx.
Gelber Ring „status 404“ (bzw. anderer Statuscode)Der Broker hat mit einem Fehlerstatus geantwortet. Die Nachricht wird trotzdem gesendet; Details stehen in msg.payload.
Roter Ring „error“ mit Fehler „operation "get" requires an entityId“Für Get oder Delete fehlt die Entity ID.
Roter Ring „error“ mit Fehler „operation "batchDelete" requires msg.payload as an array of entity ids“Für Batch Delete fehlen die IDs.
Roter Ring „error“ mit Fehler „Stellio API URL is required (config, msg.apiUrl or STELLIO_API_URL)“Keine API-URL ermittelbar.
Roter Ring „error“ mit Netzwerkmeldung oder „timeout of 30000ms exceeded“Broker nicht erreichbar oder keine Antwort innerhalb von 30 Sekunden.

Typische Statuscodes des Brokers: 200 (Query, Get, Count), 204 (Delete erfolgreich), 207 (Batch Delete teilweise erfolgreich), 400 (ungültiger Filter oder ungültige URN), 404 (Entität nicht gefunden). Fehler werden über node.error gemeldet und können mit einem Catch-Node abgefangen werden.

Hinweise​

  • Authentifizierung: Der Node sendet keine Authentifizierungs-Header; der Zugriff auf den Broker wird über das Netzwerk oder ein vorgeschaltetes Gateway geschützt.
  • Zeitüberschreitung: Requests brechen nach 30 Sekunden ab. Begrenzen Sie große Abfragen über Limit und Offset.
  • Context und Attributnamen: Ohne passenden Context liefert der Broker vollständige URIs statt kurzer Attributnamen. Verwenden Sie denselben Context wie beim Schreiben.
  • Admin-Endpunkte: Die Browser-Registerkarte nutzt /stellio-helper/browse (Berechtigung stellio.read) und /stellio-helper/mutate (Berechtigung stellio.write) des Node-RED-Servers.
  • Personenbezogene Daten: Der Node zeigt Broker-Inhalte unverändert an und entfernt keine Daten. Prüfen Sie, ob Abfrageergebnisse personenbezogene Daten enthalten, bevor Sie sie weiterverarbeiten oder in Debug-Ausgaben protokollieren.

Weiterführende Themen​

Referenzen​