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.
- 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
Operation bestimmen
msg.operation oder die konfigurierte Aktion wählt zwischen List, Get, Set Active und Delete.
Request senden
Der Node ruft /ngsi-ld/v1/subscriptions per GET, PATCH oder DELETE mit Tenant- und Link-Header auf.
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
| Feld | Typ | Standard | Bedeutung |
|---|---|---|---|
| Name | Text | leer | Anzeigename des Nodes im Flow. Ohne Namen zeigt der Node Subscriptions: <Aktion>. |
| API URL | Text | ${STELLIO_API_URL} | Basis-URL des Brokers. Platzhalter ${VAR} werden zur Laufzeit ersetzt; leer bedeutet Rückfall auf die Umgebungsvariable STELLIO_API_URL. |
| Tenant | Text | leer | Wert des Headers NGSILD-Tenant. Leer: Standard-Tenant des Brokers. |
| Context | Text | siehe unten | JSON-LD-Kontext für den Link-Header bei List, Get und Set Active. |
| Aktion | Auswahl | List | List (alle Subscriptions), Get (einzelne per ID), Set Active (aktiv/inaktiv schalten), Delete (löschen). |
| Limit | Zahl | 100 | Maximale Anzahl bei List. |
| Subscription ID | Text | leer | Vollständige URN für Get, Set Active und Delete, zum Beispiel urn:ngsi-ld:Subscription:001. |
| Status | Auswahl | aktiv | Zielzustand 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.
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.
| Eigenschaft | Typ | Bedeutung |
|---|---|---|
msg.operation | Text | list, get, setActive oder delete. Unbekannte Werte werden wie list behandelt. |
msg.apiUrl | Text | Überschreibt die API URL. |
msg.tenant | Text | Überschreibt den Tenant. |
msg.contextUrl | Text | Überschreibt den Context (Link-Header). |
msg.subscriptionId | Text | Überschreibt die Subscription ID (Get, Set Active, Delete). |
msg.active | Boolean oder Text "true"/"false" | Zielzustand bei setActive. Fehlt die Eigenschaft, gilt die Auswahl Status aus dem Dialog. |
msg.limit | Zahl | Überschreibt das Limit bei list. |
msg.payload | beliebig | Wird 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"]
}
]
| Feld | Bedeutung |
|---|---|
msg.payload | list: 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.statusCode | HTTP-Statuscode der Antwort. |
msg.headers | Antwort-Header des Brokers. |
msg.count | Trefferzahl 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.
Inject
Ein Inject-Node löst die Abfrage manuell oder in einem festen Intervall aus.
Stellio Subscriptions
Der Node listet mit der Aktion List bis zu 100 Subscriptions des Tenants auf.
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
| Anzeige | Bedeutung |
|---|---|
| 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: SubscriptionmitisActive: trueoderfalse. 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(Berechtigungstellio.read) und/stellio-helper/mutate(Berechtigungstellio.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.