Zum Hauptinhalt springen
Data Operations · NGSI-LD und Stellio

Stellio Subscriptions

Der Node verwaltet vorhandene NGSI-LD-Subscriptions des Stellio Context Brokers: alle Subscriptions auflisten, eine einzelne lesen, per PATCH aktivieren oder deaktivieren und löschen. Die Operation lässt sich im Dialog festlegen oder je Nachricht über msg.operation steuern. Eine Browser-Registerkarte zeigt alle Subscriptions mit Status direkt im Editor.

  • Subscriptions
  • Verwalten
  • NGSI-LD
Node-Typ
stellio-subscriptions
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​

Subscriptions (Abonnements) sorgen dafür, dass der Context Broker Änderungen an Entitäten an einen Empfänger meldet, zum Beispiel an eine Zeitreihendatenbank. Mit der Zeit sammeln sich Subscriptions an, die geprüft, vorübergehend pausiert oder entfernt werden müssen. Dieser Node fasst die dafür nötigen Operationen zusammen; neue Subscriptions legen Sie mit Stellio Create Subscription an.

Typische Einsatzfälle sind:

  • Inventur: alle Subscriptions eines Tenants mit Entitätstyp, beobachteten Attributen und Status auflisten.
  • Wartungsfenster: eine Subscription deaktivieren, während Daten bereinigt werden, und danach wieder aktivieren.
  • Aufräumen: verwaiste Subscriptions anhand ihrer ID löschen.

So funktioniert der Node​

1

Operation bestimmen

msg.operation oder die konfigurierte Aktion wählt zwischen List, Get, Set Active und Delete.

2

Request senden

Der Node ruft /ngsi-ld/v1/subscriptions per GET, PATCH oder DELETE mit Tenant- und Link-Header auf.

3

Antwort ausgeben

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

Ergebnis: Eine Subscription-Liste, eine einzelne Subscription oder das Ergebnis der Änderung in msg.payload.

Der Node ist nachrichtenbasiert und löst je eingehender Nachricht genau einen Request aus. Die Registerkarte Browser lädt bis zu 100 Subscriptions über die Admin-Endpunkte des Node-RED-Servers und erlaubt dort das Aktivieren, Deaktivieren und Löschen per Schaltfläche.

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 Subscriptions: <Aktion>.
API URLText${STELLIO_API_URL}Basis-URL des Brokers. Platzhalter ${VAR} werden zur Laufzeit ersetzt; leer bedeutet Rückfall auf die Umgebungsvariable STELLIO_API_URL.
TenantTextleerWert des Headers NGSILD-Tenant. Leer: Standard-Tenant des Brokers.
ContextTextsiehe untenJSON-LD-Kontext für den Link-Header bei List, Get und Set Active.
AktionAuswahlListList (alle Subscriptions), Get (einzelne per ID), Set Active (aktiv/inaktiv schalten), Delete (löschen).
LimitZahl100Maximale Anzahl bei List.
Subscription IDTextleerVollständige URN für Get, Set Active und Delete, zum Beispiel urn:ngsi-ld:Subscription:001.
StatusAuswahlaktivZielzustand bei Set Active: aktiv oder inaktiv.

Standardwerte der URL-Felder:

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

Welche Felder sichtbar sind, hängt von der Aktion ab: Limit bei List, Subscription ID bei Get, Set Active und Delete, Status nur bei Set Active.

Registerkarte Browser​

Laden listet bis zu 100 Subscriptions mit ID, Beschreibung, Entitätstypen, beobachteten Attributen, q-Filter, Context und Status (aktiv/inaktiv). Je Zeile stehen Schaltflächen für Details, Aktivieren/Deaktivieren und Löschen (mit Rückfrage) bereit.

Änderungen aus dem Editor

Aktivieren, Deaktivieren und Löschen in der Browser-Registerkarte wirken sofort auf den Broker, ohne dass der Flow bereitgestellt werden muss. Sie setzen die Node-RED-Berechtigung stellio.write voraus.

Eingang​

Werte aus der Nachricht haben Vorrang vor der Konfiguration.

EigenschaftTypBedeutung
msg.operationTextlist, get, setActive oder delete. Unbekannte Werte werden wie list behandelt.
msg.apiUrlTextÜberschreibt die API URL.
msg.tenantTextÜberschreibt den Tenant.
msg.contextUrlTextÜberschreibt den Context (Link-Header).
msg.subscriptionIdTextÜberschreibt die Subscription ID (Get, Set Active, Delete).
msg.activeBoolean oder Text "true"/"false"Zielzustand bei setActive. Fehlt die Eigenschaft, gilt die Auswahl Status aus dem Dialog.
msg.limitZahlÜberschreibt das Limit bei list.
msg.payloadbeliebigWird nicht ausgewertet; die Nachricht dient nur als Auslöser.

Ausgang​

Die Nachricht wird um die Antwort des Brokers ergänzt. Für list enthält msg.payload zum Beispiel:

[
{
"id": "urn:ngsi-ld:Subscription:7f3a2c1e-0000-4000-8000-000000000001",
"type": "Subscription",
"subscriptionName": "Subscription for entity type WeatherObserved.",
"entities": [{"type": "WeatherObserved"}],
"watchedAttributes": ["dateObserved"],
"notificationTrigger": ["entityCreated", "attributeCreated", "attributeUpdated"],
"isActive": true,
"notification": {
"format": "normalized",
"endpoint": {"uri": "https://quantumleap.beispielstadt.example/v2/notify", "accept": "application/json"}
},
"@context": ["https://context.beispielstadt.example/main-context.jsonld"]
}
]
FeldBedeutung
msg.payloadlist: Array von Subscription-Objekten. get: ein Subscription-Objekt. setActive: Antwortkörper des Brokers; bei leerer Antwort (204) ein Objekt mit id und isActive. delete: in der Regel leer.
msg.statusCodeHTTP-Statuscode der Antwort.
msg.headersAntwort-Header des Brokers.
msg.countTrefferzahl aus dem Header NGSILD-Results-Count bei list, sofern der Broker ihn sendet.

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-Subscriptions-Node ist darin enthalten, jedoch nicht als vollständiger Inject-Subscriptions-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 Subscriptions

Der Node listet mit der Aktion List bis zu 100 Subscriptions des Tenants auf.

Schritt 3

Debug

Ein Debug-Node zeigt die Subscription-Liste und die 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": 320, "wires": [["subs1"]]},
{"id": "subs1", "type": "stellio-subscriptions", "z": "tab1", "name": "", "apiUrl": "${STELLIO_API_URL}", "tenant": "default_dataspace", "contextUrl": "https://context.${DOMAIN}/main-context.jsonld", "operation": "list", "limit": 100, "subscriptionId": "", "active": "true", "x": 420, "y": 320, "wires": [["debug1"]]},
{"id": "debug1", "type": "debug", "z": "tab1", "name": "Subscriptions", "active": true, "tosidebar": true, "complete": "true", "targetType": "full", "x": 680, "y": 320, "wires": []}
]

Status und Fehler​

AnzeigeBedeutung
Blauer Punkt „list…“ (bzw. Name der Operation)Der Request läuft.
Grüner Punkt „3 subscriptions“List erfolgreich; die Zahl ist die Trefferzahl aus dem Antwort-Header.
Grüner Punkt „status 204“ (bzw. anderer 2xx-Code)Get, Set Active oder Delete erfolgreich.
Gelber Ring „status 404“ (bzw. anderer Statuscode)Der Broker hat mit einem Fehlerstatus geantwortet, zum Beispiel weil die Subscription nicht existiert. Die Nachricht wird trotzdem gesendet.
Roter Ring „error“ mit Fehler „operation "get" requires a subscriptionId“ (analog für delete und setActive)Die Subscription ID fehlt.
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 (List, Get), 204 (Set Active, Delete erfolgreich), 400 (ungültige ID oder ungültiger PATCH-Körper), 404 (Subscription nicht gefunden). Fehler werden über node.error gemeldet und können mit einem Catch-Node abgefangen werden.

Hinweise​

  • Set Active: Der Node sendet per PATCH den Körper type: Subscription mit isActive: true oder false. Andere Eigenschaften der Subscription bleiben unverändert.
  • 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.
  • 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: Subscriptions enthalten Benachrichtigungs-URLs und Beschreibungen; Namen oder Kontaktdaten gehören dort nicht hinein. Prüfen Sie Fremdsysteme, bevor Sie Subscription-Listen weitergeben.

Weiterführende Themen​

Referenzen​