Stellio Get Subscriptions
Der Node sendet einen GET-Request an den Subscription-Endpunkt des Stellio Context Brokers und gibt alle Subscriptions des Tenants als Array zurück. Er ist bewusst einfach gehalten und eignet sich für Prüf- und Protokollierungsflows.
- Node-Typ
- stellio-get-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
Wenn Sie lediglich wissen möchten, welche Subscriptions in einem Tenant existieren, reicht dieser Node. Er benötigt nur Tenant und API-URL und liefert die Broker-Antwort unverändert. Für das Lesen einzelner Subscriptions, das Aktivieren oder Deaktivieren verwenden Sie Stellio Subscriptions.
Typische Einsatzfälle sind:
- Regelmäßige Prüfung: per Inject-Node täglich die Subscriptions abrufen und mit einer Sollliste vergleichen.
- ID ermitteln: die ID einer Subscription nachschlagen, um sie an Stellio Delete Subscription zu übergeben.
- Dokumentation: den aktuellen Stand der Subscriptions in ein Protokoll oder eine Datei schreiben.
So funktioniert der Node
Auslösen
Eine beliebige eingehende Nachricht startet den Abruf.
GET senden
Der Node ruft /ngsi-ld/v1/subscriptions/?limit=<Limit> mit dem Header NGSILD-Tenant auf.
Antwort ausgeben
Das Subscription-Array, der Statuscode und die Header werden in die Nachricht geschrieben.
Ergebnis: Ein Array aller Subscriptions des Tenants in msg.payload.
Der Node ist nachrichtenbasiert und sendet je eingehender Nachricht genau einen Request. Kombinieren Sie ihn mit einem Inject-Node, wenn Sie die Liste regelmäßig benötigen.
Konfiguration
| Feld | Typ | Standard | Bedeutung |
|---|---|---|---|
| Name | Text | leer | Anzeigename des Nodes im Flow. Ohne Namen zeigt der Node den Tenant an. |
| NGSILD-Tenant | Text (Pflicht) | leer | Wert des Headers NGSILD-Tenant, zum Beispiel default_dataspace. |
| API URL | Text | leer | Basis-URL des Brokers. Bleibt das Feld leer, verwendet der Node die Umgebungsvariable STELLIO_API_URL. Ein Platzhalter ${STELLIO_API_URL} wird von Node-RED ersetzt. |
| Limit | Zahl | 100 | Maximale Anzahl zurückgegebener Subscriptions. |
Eingang
| Eigenschaft | Typ | Bedeutung |
|---|---|---|
msg.tenant | Text | Überschreibt den konfigurierten Tenant. |
msg.apiUrl | Text | Überschreibt die konfigurierte API URL. |
msg.limit | Zahl | Überschreibt das konfigurierte Limit. |
msg.payload | beliebig | Wird nicht ausgewertet; die Nachricht dient nur als Auslöser. |
Ausgang
[
{
"id": "urn:ngsi-ld:Subscription:7f3a2c1e-0000-4000-8000-000000000001",
"type": "Subscription",
"subscriptionName": "Subscription for entity type WeatherObserved.",
"entities": [{"type": "https://smartdatamodels.org/dataModel.Weather/WeatherObserved"}],
"watchedAttributes": ["https://smartdatamodels.org/dateObserved"],
"isActive": true,
"notification": {
"format": "normalized",
"endpoint": {"uri": "https://quantumleap.beispielstadt.example/v2/notify", "accept": "application/json"}
}
}
]
| Feld | Bedeutung |
|---|---|
msg.payload | Array der Subscription-Objekte, wie der Broker sie liefert. Da der Node keinen Link-Header sendet, können Typ- und Attributnamen als vollständige URIs erscheinen. Ist die Antwort kein gültiges JSON, enthält der Payload den Rohtext. |
msg.statusCode | HTTP-Statuscode der Antwort. |
msg.headers | Antwort-Header des Brokers. |
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. Alternativ laden Sie die Datei stellio-helper-nodes.json herunter und importieren sie über Menü → Importieren.
Inject
Ein Inject-Node löst den Abruf manuell oder in einem festen Intervall aus.
Get Subscriptions
Der Node ruft bis zu 100 Subscriptions des Tenants default_dataspace ab.
Debug
Ein Debug-Node zeigt das Subscription-Array in der Seitenleiste an.
Beispiel-Flow als JSON anzeigen (Ausschnitt Get Subscriptions)
[
{"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": 100, "y": 100, "wires": [["get1"]]},
{"id": "get1", "type": "stellio-get-subscriptions", "z": "tab1", "name": "Get Subscriptions", "tenant": "default_dataspace", "apiUrl": "", "limit": 100, "x": 290, "y": 100, "wires": [["debug1"]]},
{"id": "debug1", "type": "debug", "z": "tab1", "name": "Subscriptions", "active": true, "tosidebar": true, "complete": "false", "x": 530, "y": 100, "wires": []}
]
Status und Fehler
| Anzeige | Bedeutung |
|---|---|
| Blauer Punkt „requesting...“ | Der Request läuft. |
| Grüner Punkt „status: 200“ | Abruf erfolgreich. |
| Gelber Ring „status: 404“ (bzw. anderer Statuscode) | Der Broker hat mit einem Fehlerstatus geantwortet. Die Nachricht wird trotzdem gesendet. |
| Roter Ring „parse error“ | Die Antwort ist kein gültiges JSON. Die Nachricht wird mit dem Rohtext in msg.payload gesendet. |
| Roter Ring „error“ mit Fehlermeldung | Netzwerkfehler, zum Beispiel Broker nicht erreichbar oder ungültige URL. Es wird keine Nachricht gesendet. |
Fehler werden über node.error gemeldet und können mit einem Catch-Node abgefangen werden.
Hinweise
- Kein Link-Header: Der Node sendet keinen JSON-LD-Kontext. Für kurze Attributnamen in der Antwort verwenden Sie Stellio Subscriptions mit konfiguriertem Context.
- Authentifizierung: Der Node sendet keine Authentifizierungs-Header; der Zugriff auf den Broker wird über das Netzwerk oder ein vorgeschaltetes Gateway geschützt.
- Personenbezogene Daten: Subscription-Listen enthalten Benachrichtigungs-URLs. Prüfen Sie, ob diese intern bleiben müssen, bevor Sie die Ausgabe weitergeben.