Stellio Types
Der Node fragt die Datenmodell-Endpunkte des Stellio Context Brokers ab: alle Entitätstypen, die Details eines Typs, alle Attribute oder die Details eines Attributs. Er verändert keine Daten und eignet sich als Nachschlagewerk beim Aufbau von Flows. Eine Browser-Registerkarte zeigt den Datenmodell-Überblick direkt im Editor.
- Node-Typ
- stellio-types
- 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
Bevor Sie Entitäten abfragen oder Subscriptions anlegen, müssen Sie wissen, welche Typen und Attribute ein Tenant tatsächlich enthält. Stellio Types liefert diese Übersicht aus dem Broker selbst, sodass Sie nicht auf Dokumentation oder Vermutungen angewiesen sind.
Typische Einsatzfälle sind:
- Datenraum erkunden: alle Entitätstypen eines Tenants mit Attributnamen und Instanzanzahl auflisten.
- Flows vorbereiten: die genauen Attributnamen eines Typs nachschlagen, um q-Filter oder Watched Attributes korrekt zu schreiben.
- Monitoring: regelmäßig prüfen, ob erwartete Typen vorhanden sind und wie viele Instanzen existieren.
So funktioniert der Node
Operation bestimmen
msg.operation oder die konfigurierte Aktion wählt zwischen List Types, Get Type, List Attributes und Get Attribute.
Request senden
Der Node ruft /ngsi-ld/v1/types, /types/<Typ>, /attributes oder /attributes/<Attribut> mit Tenant- und Link-Header auf.
Antwort ausgeben
Antwortkörper, Statuscode und Header werden in die Nachricht geschrieben.
Ergebnis: Eine Typen- oder Attributliste beziehungsweise die Details eines Typs oder Attributs in msg.payload.
Der Node ist nachrichtenbasiert und löst je eingehender Nachricht genau einen lesenden Request aus. Die Registerkarte Browser lädt den Datenmodell-Überblick über die Admin-Endpunkte des Node-RED-Servers; ein Klick auf eine Zeile zeigt die Details des Typs.
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 Types: <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. Bestimmt, ob Typ- und Attributnamen kurz oder als vollständige URIs zurückkommen. |
| Aktion | Auswahl | List Types | List Types (alle Entitätstypen), Get Type (Details eines Typs), List Attributes (alle Attribute), Get Attribute (Details eines Attributs). |
| Type | Text | leer | Typname für Get Type, zum Beispiel Device. |
| Attribut | Text | leer | Attributname für Get Attribute, zum Beispiel temperature. |
| Details mitliefern | Kontrollkästchen | an | Sendet details=true. Nur für List Types und List Attributes: liefert je Eintrag ein Objekt mit Attributnamen beziehungsweise Typnamen statt einer reinen Namensliste. |
Standardwerte der URL-Felder:
Context: https://context.${DOMAIN}/main-context.jsonld
Registerkarte Browser
Die Schaltfläche Laden fragt /types?details=true ab und zeigt je Typ die Attributnamen und die Anzahl der Instanzen. Ein Klick auf eine Zeile lädt /types/<Typ> und zeigt die Antwort als JSON. Die Registerkarte verwendet die Verbindung aus der Registerkarte Aktion und speichert nichts.
Eingang
Werte aus der Nachricht haben Vorrang vor der Konfiguration.
| Eigenschaft | Typ | Bedeutung |
|---|---|---|
msg.operation | Text | listTypes, getType, listAttributes oder getAttribute. Unbekannte Werte werden wie listTypes behandelt. |
msg.apiUrl | Text | Überschreibt die API URL. |
msg.tenant | Text | Überschreibt den Tenant. |
msg.contextUrl | Text | Überschreibt den Context (Link-Header). |
msg.typeName | Text | Typname für getType. |
msg.attrName | Text | Attributname für getAttribute. |
msg.details | Boolean | Überschreibt das Kontrollkästchen Details für listTypes und listAttributes. |
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 listTypes mit aktivierten Details enthält msg.payload zum Beispiel:
[
{
"id": "https://smartdatamodels.org/dataModel.Weather/WeatherObserved",
"type": "EntityType",
"typeName": "WeatherObserved",
"attributeNames": ["dateObserved", "location", "temperature", "relativeHumidity"]
},
{
"id": "https://smartdatamodels.org/dataModel.Device/Device",
"type": "EntityType",
"typeName": "Device",
"attributeNames": ["controlledProperty", "location", "serialNumber"]
}
]
Für getType liefert der Broker ein Objekt vom Typ EntityTypeInformation mit typeName, entityCount und attributeDetails; für listAttributes und getAttribute analog Attribute-Objekte mit attributeName, attributeCount und typeNames. Die genaue Struktur folgt der NGSI-LD-Spezifikation.
| Feld | Bedeutung |
|---|---|
msg.payload | Antwortkörper des Brokers: Array von Typ- oder Attributobjekten (mit Details), Objekt mit typeList beziehungsweise attributeList (ohne Details) oder Detailobjekt eines Typs oder Attributs. |
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. Der Stellio-Types-Node ist in diesem gemeinsamen Beispiel derzeit nicht enthalten; der folgende Ausschnitt zeigt deshalb eine minimale Verdrahtung dieses Nodes.
Inject
Ein Inject-Node löst die Abfrage manuell oder in einem festen Intervall aus.
Stellio Types
Der Node listet mit der Aktion List Types alle Entitätstypen des Tenants mit Details auf.
Debug
Ein Debug-Node zeigt die Typenliste in der Seitenleiste an.
Beispiel-Flow 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": [["types1"]]},
{"id": "types1", "type": "stellio-types", "z": "tab1", "name": "", "apiUrl": "${STELLIO_API_URL}", "tenant": "default_dataspace", "contextUrl": "https://context.${DOMAIN}/main-context.jsonld", "operation": "listTypes", "typeName": "", "attrName": "", "details": true, "x": 400, "y": 100, "wires": [["debug1"]]},
{"id": "debug1", "type": "debug", "z": "tab1", "name": "Types", "active": true, "tosidebar": true, "complete": "payload", "targetType": "msg", "x": 640, "y": 100, "wires": []}
]
Status und Fehler
| Anzeige | Bedeutung |
|---|---|
| Blauer Punkt „listTypes…“ (bzw. Name der Operation) | Der Request läuft. |
| Grüner Punkt „status 200“ | Operation erfolgreich mit Status 2xx. |
| Gelber Ring „status 404“ (bzw. anderer Statuscode) | Der Broker hat mit einem Fehlerstatus geantwortet, zum Beispiel weil der Typ oder das Attribut nicht existiert. Die Nachricht wird trotzdem gesendet. |
| Roter Ring „error“ mit Fehler „operation "getType" requires a typeName“ | Für Get Type fehlt der Typname. |
| Roter Ring „error“ mit Fehler „operation "getAttribute" requires an attrName“ | Für Get Attribute fehlt der Attributname. |
| 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. |
Fehler werden über node.error gemeldet und können mit einem Catch-Node abgefangen werden.
Hinweise
- Nur lesend: Der Node führt ausschließlich GET-Requests aus und ändert keine Daten im Broker.
- Authentifizierung: Der Node sendet keine Authentifizierungs-Header; der Zugriff auf den Broker wird über das Netzwerk oder ein vorgeschaltetes Gateway geschützt.
- Context: Ohne passenden Context liefert der Broker Typ- und Attributnamen als vollständige URIs. Für kurze Namen verwenden Sie denselben Context, mit dem die Entitäten geschrieben wurden.
- Admin-Endpunkte: Die Browser-Registerkarte nutzt
/stellio-helper/browsedes Node-RED-Servers (Berechtigungstellio.read). - Personenbezogene Daten: Typ- und Attributlisten enthalten in der Regel keine personenbezogenen Daten. Attributnamen können jedoch Hinweise auf sensible Inhalte geben; behandeln Sie die Ausgabe entsprechend.