Zum Hauptinhalt springen

RuleNodes

RuleNodes

RuleNodes sind die funktionalen Bausteine einer RuleChain in optiCLOUD. Sie bestimmen, wie eingehende Nachrichten gefiltert, angereichert, transformiert, gespeichert oder an andere Systeme weitergegeben werden.

Diese Seite dient als praxisnahe Orientierung über die verfügbaren Knoten und ihre Einsatzgebiete:

  • Welche Knoten gibt es?
  • Wofür werden sie verwendet?
  • Welche Ausgänge oder Beziehungen besitzen sie?

Übersicht nach Kategorien

Filter-Knoten

RuleNodeZweck
Message Type FilterLässt nur bestimmte Nachrichtentypen passieren
Message Type SwitchVerteilt Nachrichten je nach Nachrichtentyp auf verschiedene Pfade
File Type SwitchVerzweigt Dateinachrichten nach Dateityp
File Names FilterFiltert Dateinamen nach Präfixen
Device FilterBegrenzt die Verarbeitung auf bestimmte Geräte
Script (Filter)Führt eine frei definierte Filterlogik per JavaScript aus
SwitchLeitet Nachrichten per Skript an dynamische Ausgänge weiter
Check Existence FieldsPrüft, ob Felder in Nachricht oder Metadaten vorhanden sind
GPS Geofencing FilterLässt nur Nachrichten innerhalb eines Geofence passieren

Aktions-Knoten

RuleNodeZweck
Save TimeseriesSpeichert Telemetrie als Zeitreihe
Save AttributesSpeichert Attribute in einem gewählten Scope
Save AlarmsSpeichert Alarmzustände aus Alarmnachrichten
Create AlarmErstellt oder aktualisiert einen Alarm
Clear AlarmBeendet einen bestehenden Alarm
Alarm CounterZählt Alarme innerhalb eines Zeitfensters
LogSchreibt Debug- oder Protokollausgaben
GeneratorErzeugt periodisch Nachrichten
Message CountZählt eingehende Nachrichten und veröffentlicht den Zähler
DelayVerzögert die Weiterleitung einer Nachricht
Aggregate OSF FileLiest OSF-Dateien und erzeugt daraus Telemetrie
Aggregate JSONL FileLiest JSONL-Dateien und erzeugt daraus Telemetrie
Process Raw Data FileVerarbeitet Dateioperationen im Blob-Speicher
Generate ReportErstellt Berichte über einen definierten Zeitraum
Device SystemAggregiert Daten über mehrere Geräte hinweg
GPS Geofencing EventsErzeugt Ereignisse beim Betreten oder Verlassen eines Geofence
RPC Call RequestSendet einen RPC-Aufruf an ein Gerät
RPC Call ReplyAntwortet auf einen eingehenden RPC-Aufruf

Anreicherungs-Knoten

RuleNodeZweck
Originator AttributesLädt Attribute des Ursprungselements in die Metadaten
Originator TelemetryLädt Telemetrie des Ursprungselements in die Metadaten
Originator FieldsErgänzt Stammdaten des Ursprungselements
Tenant DetailsErgänzt Informationen des Tenants

Transformations-Knoten

RuleNodeZweck
Script (Transform)Ändert Nachricht, Metadaten oder Nachrichtentyp per JavaScript
To EmailBaut aus einer Nachricht ein E-Mail-Objekt

Externe Knoten

RuleNodeZweck
REST API CallSendet Daten an eine externe REST-Schnittstelle
MQTTVeröffentlicht Nachrichten an einen MQTT-Broker
KafkaVeröffentlicht Nachrichten in ein Kafka-Topic
RabbitMQSendet Nachrichten an RabbitMQ
AWS SQSSendet Nachrichten an eine SQS-Queue
AWS SNSVeröffentlicht Nachrichten an ein SNS-Topic
GCP Pub/SubVeröffentlicht Nachrichten an Google Pub/Sub
Send EmailSendet eine E-Mail über SMTP

Scheduler-Knoten

RuleNodeZweck
Create Scheduled TaskPlant eine zeitversetzte Einmal-Ausführung
Clear Scheduled TaskLöscht eine zuvor geplante Aufgabe

Event- und Alarm-Knoten

RuleNodeZweck
Complex AlarmErstellt Alarme anhand komplexer Echtzeitmuster
Complex Event ProcessingBewertet Dateidaten mit Event-Regeln
Enrich AlarmErgänzt bestehende Alarme um zusätzliche Informationen

Detailübersicht

Filter-Knoten

Message Type Filter

Kategorie: Filter
Ausgänge: True, False

Der Knoten prüft, ob der Nachrichtentyp der eingehenden Nachricht in einer konfigurierten Liste enthalten ist. Bei einer Übereinstimmung läuft die Nachricht über True weiter, andernfalls über False.

Konfiguration

LabelPflichtfeldBeschreibung
Message Types FilterJaListe erlaubter Nachrichtentypen. Mindestens ein Typ muss eingetragen sein.

Unterstützte Werte sind unter anderem POST_ATTRIBUTES_REQUEST, POST_TELEMETRY_REQUEST, TO_SERVER_RPC_REQUEST, TO_DEVICE_RPC_REQUEST, ACTIVITY_EVENT, INACTIVITY_EVENT, CONNECT_EVENT, DISCONNECT_EVENT, BLOB_STORE_REQUEST und POST_ALARMS.

Beispiel

Verwenden Sie diesen Knoten, wenn z.B. nur Telemetriedaten weiterverarbeitet werden sollen. In diesem Fall wird POST_TELEMETRY_REQUEST konfiguriert und über den Ausgang TRUE mit einem weiteren Knoten verbunden, welcher dann gesichert nur noch Nachrichten vom Tpy POST_TELEMETRY_REQUEST erhält.


Message Type Switch

Kategorie: Filter
Ausgänge: je Nachrichtentyp plus Other

Der Knoten verteilt Nachrichten anhand ihres Nachrichtentyps auf feste Ausgänge. Er eignet sich als früher Verteiler in einer RuleChain, wenn unterschiedliche Nachrichtentypen in getrennten Zweigen verarbeitet werden sollen.

Konfiguration

Dieser Knoten besitzt keine konfigurierbaren Optionen. Die Ausgänge sind fest definiert.

AusgangBedingung
POST_ATTRIBUTESNachrichtentyp ist POST_ATTRIBUTES_REQUEST
POST_TELEMETRYNachrichtentyp ist POST_TELEMETRY_REQUEST
POST_ALARMSNachrichtentyp ist POST_ALARMS
BLOB_STORE_REQUESTNachrichtentyp ist BLOB_STORE_REQUEST
RPC_REQUEST_FROM_DEVICENachrichtentyp ist TO_SERVER_RPC_REQUEST
RPC_REQUEST_TO_DEVICENachrichtentyp ist TO_DEVICE_RPC_REQUEST
ACTIVITY_EVENTNachrichtentyp ist ACTIVITY_EVENT
INACTIVITY_EVENTNachrichtentyp ist INACTIVITY_EVENT
CONNECT_EVENTNachrichtentyp ist CONNECT_EVENT
DISCONNECT_EVENTNachrichtentyp ist DISCONNECT_EVENT
OtherAlle anderen Nachrichtentypen

Beispiel

In einer Root RuleChain kann dieser Knoten direkt nach dem Eingang stehen, um Telemetrie, Attribute, Alarme, RPC-Nachrichten und Dateioperationen in getrennte Verarbeitungszweige aufzuteilen.


File Type Switch

Kategorie: Filter
Ausgänge: OSF, JSONL, Other

Der Knoten verzweigt Dateinachrichten anhand der Dateiendung. Er wird in Datei-Pipelines eingesetzt, nachdem eine Dateioperation als BLOB_STORE_REQUEST erkannt wurde.

Konfiguration

Dieser Knoten besitzt keine konfigurierbaren Optionen. Die Erkennung erfolgt anhand der Dateiendung in den Metadaten.

AusgangErkannte Dateiendungen
OSF.osf, .osfz
JSONL.log, .log.gz
OtherAlle anderen Dateiendungen

Beispiel

Leiten Sie .osf-Dateien z.B. an Aggregate OSF File weiter.


File Names Filter

Kategorie: Filter
Ausgänge: True, False

Der Knoten lässt Dateinachrichten nur dann über True weiterlaufen, wenn der Dateiname mit einem der konfigurierten Präfixe beginnt.

Konfiguration

LabelPflichtfeldBeschreibung
File PrefixesJaListe von Dateinamen-Präfixen. Die Prüfung ist case-sensitive.

Hinweise

  • Eine leere Präfixliste führt dazu, dass alle Nachrichten über False laufen.
  • Der Dateiname wird aus den Metadaten der Nachricht gelesen, in der Regel aus fileName.

Beispiel

Wenn ein Gerät Dateien mit data_ und config_ hochlädt, können zwei File Names Filter verwendet werden, um beide Dateigruppen getrennt weiterzuverarbeiten.


Device Filter

Kategorie: Filter
Ausgänge: True, False

Der Knoten beschränkt die Verarbeitung auf bestimmte Geräte. Die Geräteliste kann je nach Einstellung als Freigabeliste oder Sperrliste verwendet werden.

Konfiguration

LabelPflichtfeldBeschreibung
DevicesJaGeräteauswahl per Mehrfachauswahl.
Allow selected devicesJaAktiviert: nur ausgewählte Geräte laufen über True. Deaktiviert: ausgewählte Geräte werden blockiert.

Ausgänge

AusgangBedingung
TrueGerät ist erlaubt oder nicht gesperrt
FalseGerät ist nicht erlaubt oder explizit gesperrt

Beispiel

Soll eine Regel nur für bestimmte Geräte ausgeführt werden, kann vor die Regel der DeviceFilter gesetzt werden und nur eine Auswahl der Geräte an die nachfolgende Regel weiterleiten.


Script (Filter)

Kategorie: Filter
Ausgänge: True, False

Der Knoten führt eine JavaScript-Funktion aus. Gibt das Skript true zurück, läuft die Nachricht über True weiter. Bei false oder einem Skriptfehler läuft sie über False.

Konfiguration

LabelPflichtfeldBeschreibung
Filter FunctionJaJavaScript-Funktion mit der Signatur Filter(msg, metadata, msgType).

Skriptkontext

VariableBeschreibung
msgJSON-Nachrichtentext
metadataMetadaten der Nachricht
msgTypeNachrichtentyp

Beispiel

var threshold = parseFloat(metadata.tempThreshold) || 50;
return msg.temperature > threshold;

Switch

Kategorie: Filter
Ausgänge: dynamisch per Skript

Der Knoten leitet eine Nachricht an einen oder mehrere benannte Ausgänge weiter. Die Ausgangsnamen werden von einer JavaScript-Funktion als Array zurückgegeben.

Konfiguration

LabelPflichtfeldBeschreibung
Switch FunctionJaJavaScript-Funktion mit der Signatur Switch(msg, metadata, msgType).

Das Skript muss ein Array von Strings zurückgeben. Jeder String entspricht einem Ausgangsnamen.

Hinweise

  • Nicht verbundene Ausgangsnamen werden ignoriert.
  • Ein leeres Array verwirft die Nachricht.
  • Für alle möglichen Rückgabewerte sollten passende Verbindungen in der RuleChain angelegt werden.

Beispiel

Über folgende Funktion kann man z.B. den Temperaturwert einer Nachricht überprüfen und die Nachrichten entsprechend des Wertes verschieden weiterleiten.

  • Verbindung "highTemp" könnte z.B. an einen AlarmKnoten weitergeleitet werden, der einen "High Temperture" Alarm erzeugt
  • Verbindung "lowTemp" könnte z.B. an einen AlarmKnoten weitergeleitet werden, der einen "Low Temperture" Alarm erzeugt
  • Verbindung "normalTemp" könnte z.B. an Knoten weitergeleitet werden, die ein "TempStatus = OK" Attribut setzt
function nextRelation(msg) {
if(msg.temperature > 50){
return ['highTemp'];
} else if (msg.temperature < 20){
return ['lowTemp'];
} else {
return ['normalTemp'];
}

}
return nextRelation(msg);

Check Existence Fields

Kategorie: Filter
Ausgänge: True, False

Der Knoten prüft, ob bestimmte Felder im Nachrichtentext und/oder in den Metadaten vorhanden sind. Damit können nachfolgende Knoten vor unvollständigen Nachrichten geschützt werden.

Konfiguration

LabelPflichtfeldBeschreibung
Message DataNeinFeldnamen, die im Nachrichtentext vorhanden sein müssen.
Message MetadataNeinFeldnamen, die in den Metadaten vorhanden sein müssen.
Check All Keys PresentJaAktiviert: alle genannten Felder müssen vorhanden sein. Deaktiviert: mindestens ein Feld muss vorhanden sein.

Mindestens eines der beiden Felder messageNames oder metadataNames muss Einträge enthalten.

Beispiel

Vor einem Script Knoten kann z.B. überprüft werden, ob alle Kanäle, die in dem Script verwendet werden, auch in der Nachricht vorhanden sind. Dies verhindert das das Script fehlschlägt und mindert die Komplexität des Scripts, bei dem man sonst ggf. Vorkehrungen treffen muss über if/else Bedingungen, um zu prüffen ob Kanäle vorhanden sind. Ist dieser Knoten einem Script Knoten voran gestellt, kann im Script Knoten davon ausgegangen werden, dass die Kanäle in der Nachricht vorhanden sind.


GPS Geofencing Filter

Kategorie: Filter
Ausgänge: True, False

Der Knoten prüft, ob GPS-Koordinaten innerhalb eines definierten Geofence liegen. Die Prüfung ist zustandslos und bewertet jeweils die aktuelle Nachricht.

Konfiguration

LabelPflichtfeldBeschreibung
Latitude Key NameJaFeldname für den Breitengrad im Nachrichtentext.
Longitude Key NameJaFeldname für den Längengrad im Nachrichtentext.
Fetch Perimeter Info from MetadataJaAktiviert: Geofence-Definition wird aus Metadaten gelesen. Deaktiviert: Geofence wird statisch im Knoten konfiguriert.
Perimeter TypeJa, bei statischer KonfigurationCircle oder Polygon.
Circle-FelderJa, bei KreisMittelpunkt, Radius und Einheit des Kreises.
Polygon DefinitionJa, bei PolygonGeoJSON- oder WKT-Definition des Polygons.

Hinweis

Für zustandsbasierte Betreten-/Verlassen-Ereignisse wird GPS Geofencing Events verwendet.

Beispiel

Verarbeiten Sie z.B. nur Telemetrie, wenn sich ein Fahrzeug innerhalb einer definierten Zone befindet, andernfalls wird die Telemetrie verworfen.


Aktions-Knoten

Save Timeseries

Kategorie: Aktion
Ausgänge: Success, Failure

Der Knoten speichert Telemetriedaten aus dem Nachrichtentext als Zeitreihenwerte in der Datenbank.

Konfiguration

LabelPflichtfeldBeschreibung
Default TTLJaLebensdauer gespeicherter Datenpunkte in Sekunden. 0 bedeutet keine automatische Löschung.
Enable Type CastJaKonvertiert Zahlen- oder Boolean-Werte aus Strings in native Datentypen.

Eingang

Der Nachrichtentyp muss POST_TELEMETRY_REQUEST sein. Der Nachrichtentext muss ein JSON-Objekt sein oder ein Array von JSON-Objekten mit ts-Zeitstempel enthalten.


Save Attributes

Kategorie: Aktion
Ausgänge: Success, Failure

Der Knoten speichert Schlüssel-Wert-Paare aus dem Nachrichtentext als Attribute der Ursprungseinheit.

Konfiguration

LabelPflichtfeldBeschreibung
Attribute ScopeJaZiel-Scope für die Attribute.
Enable Type CastJaKonvertiert Zahlen- oder Boolean-Werte aus Strings in native Datentypen.
ScopeBedeutung
CLIENT_SCOPEVom Gerät gemeldete Attribute, die für das Gerät sichtbar sind.
SHARED_SCOPEServer-seitig gesetzte Attribute, die an das Gerät verteilt werden können.
SERVER_SCOPEServer-interne Attribute, die nicht an das Gerät gesendet werden.

Eingang

Der Nachrichtentext muss ein JSON-Objekt sein. Jeder Schlüssel wird als Attributname gespeichert.


Save Alarms

Kategorie: Aktion
Ausgänge: Activated, Deactivated, Sustained

Der Knoten verarbeitet Nachrichten vom Typ POST_ALARMS und speichert Alarmzustände in der Datenbank. Er bildet dabei Zustandswechsel von Alarmen ab.

Ausgänge

AusgangBedeutung
ActivatedEin neuer Alarm wurde geöffnet oder ein gelöschter Alarm wurde erneut aktiv.
DeactivatedEin aktiver Alarm wurde beendet.
SustainedEin bereits aktiver Alarm bleibt aktiv.

Konfiguration

LabelPflichtfeldBeschreibung
PropagateJaGibt an, ob Alarme an übergeordnete Entitäten propagiert werden.

Eingang

Die Nachricht muss vom Typ POST_ALARMS sein und Alarmdaten gemäß dem Alarmmodell der Plattform enthalten.


Create Alarm

Kategorie: Aktion
Ausgänge: Created, Updated, False

Der Knoten erstellt einen Alarm für den Ursprung der Nachricht oder aktualisiert einen bereits vorhandenen Alarm desselben Typs. Die Alarmdetails werden per JavaScript aus Nachricht und Metadaten aufgebaut.

Ausgänge

AusgangBedeutung
CreatedEin neuer Alarm wurde erstellt.
UpdatedEin bestehender Alarm dieses Typs wurde aktualisiert.
FalseDas Skript hat keinen Alarm erzeugt.

Konfiguration

LabelPflichtfeldBeschreibung
Alarm Details BuilderJaJavaScript-Funktion Details(msg, metadata, msgType) für die Alarmdetails.
Alarm TypeJaAlarmtyp. Unterstützt ${metadata.key}-Muster.
Alarm SeverityJaSchweregrad: CRITICAL, MAJOR, MINOR, WARNING, INDETERMINATE.
PropagateJaPropagiert den Alarm an übergeordnete Entitäten.

Metadaten nach Verarbeitung

Der Knoten ergänzt unter anderem alarmType, alarmIsNew, alarmSeverity und alarmId.

Beispiel

Ein vorgeschalteter Script Filter prüft msg.temperature > 80. Bei True erstellt dieser Knoten einen Alarm HighTemperature mit Schweregrad MAJOR. In den Details könnte z.B. eine Funktion stehen, die den Temperatur Höchststand in den Details festhält, so lange ein Alarm aktiv war und geupdated wurde

var details = {};
if (metadata.prevAlarmDetails) {
details = JSON.parse(metadata.prevAlarmDetails);
if (parseFloat(details.highestTemp) < msg.temperature){
details.highestTemp = msg.temperature;
}
}
return details;

Clear Alarm

Kategorie: Aktion
Ausgänge: Cleared, False

Der Knoten beendet einen aktiven Alarm des konfigurierten Typs für den Ursprung der Nachricht.

Ausgänge

AusgangBedeutung
ClearedEin passender aktiver Alarm wurde gefunden und beendet.
FalseEs wurde kein passender aktiver Alarm gefunden.

Konfiguration

LabelPflichtfeldBeschreibung
Alarm Details BuilderJaJavaScript-Funktion für die finalen Alarmdetails beim Beenden.
Alarm TypeJaAlarmtyp, der exakt zum zuvor erzeugten Alarm passen muss.

Metadaten nach Verarbeitung

Der Knoten ergänzt alarmType und alarmId.

Beispiel

Wenn ein Gerät wieder temperature < 70 meldet, kann Clear Alarm den zuvor erstellten Alarm HighTemperature beenden.

info

Der AlarmTyp ist Case Sensitiv! Wenn mit einem Create Alarm Knoten ein Alarm vom Typ HighTemperature erstellt wurde, muss genau dieser HighTemperature Alarm-Typ auch im Clear Alarm Knoten eingetragen werden, damit dieser auch gecleared werden kann.


Alarm Counter

Kategorie: Aktion
Ausgänge: Success, Failure

Der Knoten zählt Alarme nach konfigurierten Kriterien innerhalb eines Zeitfensters und speichert die Ergebnisse als Server-Attribute am Ursprung der Nachricht.

Konfiguration

Der Knoten enthält eine Liste von Zählerdefinitionen.

LabelPflichtfeldBeschreibung
Find by Field NameJaAlarmfeld, nach dem gefiltert wird, z. B. severity oder type.
With Field ValueJaWert, den das Feld besitzen muss, z. B. CRITICAL.
Save in Server AttributeJaName des Server-Attributs, in dem der Zähler gespeichert wird.
Time Period Alarm ConsideredJaBetrachtetes Zeitfenster in Sekunden. 0 bedeutet ohne zeitliche Einschränkung.

Beispiel

Mit

  • fieldName = severity
  • fieldValue = CRITICAL
  • attributeName = criticalAlarms24h
  • periodInSeconds = 86400

wird die Anzahl kritischer Alarme der letzten 24 Stunden gezählt und unter dem ServerAttribut criticalAlarms24h gespeichert.


Log

Kategorie: Aktion
Ausgänge: Success, Failure

Der Knoten schreibt einen per JavaScript erzeugten Text in das Server-Log und leitet die ursprüngliche Nachricht unverändert weiter.

Konfiguration

LabelPflichtfeldBeschreibung
Log FunctionJaJavaScript-Funktion ToString(msg, metadata, msgType), die den Log-Text zurückgibt.

Hinweise

  • Der Knoten ist vor allem für Entwicklung, Analyse und Fehlerbehebung gedacht.
  • Er sollte sparsam eingesetzt werden und am besten erst nach Rücksprache mit Optimeas, da ein Log Knoten eigentlich nur dann Sinn ergibt, wenn ese zuvor zu Fehlern kam, die ggf. vom Benutzer selbst nicht behoben werden können.

Generator

Kategorie: Aktion
Ausgänge: Success, Failure

Der Knoten erzeugt periodisch Nachrichten per JavaScript und speist sie in die RuleChain ein. Er kann für Tests, Simulationen oder zeitgesteuerte Abläufe genutzt werden.

Konfiguration

LabelPflichtfeldBeschreibung
Message CountJaAnzahl zu erzeugender Nachrichten. 0 bedeutet unbegrenzt.
Period in SecondsJaAbstand zwischen erzeugten Nachrichten in Sekunden.
OriginatorJaUrsprungsgerät für die erzeugten Nachrichten.
Generator FunctionJaJavaScript-Funktion Generate(prevMsg, prevMetadata, prevMsgType).

Die Funktion muss msg, metadata und msgType zurückgeben.

Beispiel

Will man z.B. eine RuleChain erstellen und testen, hat jedoch gerade kein echtes Gerät zur Hand, oder eines, welches genau in dem Moment Live-Daten sendet, kann man mit dem Generator Knoten künstliche Nachrichten erzeugen. Für einen geeigneten Test, sollten diese künstlich erzeugten Nachrichten am Besten die prognostizierten Nachrichten eines echten Gerätes speigeln.

Folgendes Beispiel erzeugt Nachrichten mit:

Telemetriekanälen: {"temperature": 42} und {"humidity": 77}

Metadaten: {"data": 40}

Typ: POST_TELEMETRY_REQUEST

var msg = { temperature: 42, humidity: 77 };
var metadata = { data: 40 };
var msgType = "POST_TELEMETRY_REQUEST";

return { msg: msg, metadata: metadata, msgType: msgType };

In dem obigen Beispiel handelt es sich um statische Nachrichten mit immer den gleichen Werten (42,77,40). Ein Generator kann aber auch variierende Daten erzeugen über z.B.:

var temp = Math.floor(Math.random() * max);
var hum = Math.floor(Math.random() * max);
var meta = Math.floor(Math.random() * max);

var msg = { temperature: temp, humidity: hum };
var metadata = { data: meta };
var msgType = "POST_TELEMETRY_REQUEST";

return { msg: msg, metadata: metadata, msgType: msgType };

Hinweis

In produktiven Umgebungen sollte der Zeitraum bewusst gewählt werden, damit keine unnötig hohe Nachrichtenlast entsteht.


Message Count

Kategorie: Aktion
Ausgänge: Success, Failure

Der Knoten zählt Nachrichten innerhalb eines Zeitintervalls und veröffentlicht den Zählerstand als Telemetrie.

Konfiguration

LabelPflichtfeldBeschreibung
Interval in SecondsJaLänge des Zählfensters in Sekunden.
Output Timeseries Key PrefixJaTelemetrieschlüssel für den Zählerwert.

Ausgabe

Am Ende jedes Intervalls wird eine POST_TELEMETRY_REQUEST-Nachricht erzeugt, z. B.:

{
"messageCount": 42
}

Eingehende Nachrichten werden zusätzlich unverändert über Success weitergeleitet.


Delay

Kategorie: Aktion
Ausgänge: Success, Failure

Der Knoten hält Nachrichten für eine konfigurierte Dauer zurück und gibt sie danach weiter. Die Verzögerung kann statisch oder über Metadaten bestimmt werden.

Konfiguration

LabelPflichtfeldBeschreibung
Use Metadata Period PatternJaAktiviert eine dynamische Verzögerung über Metadaten.
Period in SecondsJa, wenn statischStatische Verzögerung in Sekunden.
Period in Seconds PatternJa, wenn dynamischMetadatenfeld oder ${...}-Ausdruck für die Verzögerung.
Max Pending MessagesJaMaximale Anzahl zwischengespeicherter Nachrichten.

Hinweise

  • Bei einem Serverneustart gehen wartende Nachrichten verloren, da sie nicht persistent gespeichert werden
  • Wenn zu viele Nachrichten erreicht ist, laufen neue Nachrichten über Failure.

Aggregate OSF File

Kategorie: Aktion
Ausgänge: Success, Failure

Der Knoten lädt eine referenzierte OSF-Datei aus einem BLOB_STORE_REQUEST und verarbeitet sie.

Eingang und Ausgabe

  • Eingang: BLOB_STORE_REQUEST mit Methode GET.
  • Die Metadaten müssen die Referenz auf die gespeicherte Datei enthalten.
  • Pro erkanntem Zeitintervall erzeugt der Knoten eine POST_TELEMETRY_REQUEST-Nachricht mit den Messwerten.

Verarbeitungskette

File Type Switch [OSF]
-> Aggregate OSF File [Success]
-> Save Timeseries

Aggregate JSONL File

Kategorie: Aktion
Ausgänge: Success, Failure

Der Knoten lädt eine JSONL-Datei aus einem BLOB_STORE_REQUEST und verarbeitet sie.

Eingang und Ausgabe

  • Eingang: BLOB_STORE_REQUEST mit Methode GET.
  • Die Datei muss gültiges JSONL enthalten.
  • Jede Zeile erzeugt eine POST_TELEMETRY_REQUEST-Nachricht über Success.

Verarbeitungskette

File Type Switch [JSONL]
-> Aggregate JSONL File [Success]
-> Save Timeseries

Process Raw Data File

Kategorie: Aktion
Ausgänge: Download, Upload, Delete, Other

Der Knoten klassifiziert BLOB_STORE_REQUEST-Nachrichten nach Dateioperation und leitet sie an den passenden Ausgang weiter.

Konfiguration

LabelPflichtfeldBeschreibung
Selected ScopesJaAttribut-Scopes, die verarbeitet werden sollen.
Selected MethodsJaHTTP-Methoden bzw. Dateioperationen, die weitergeleitet werden sollen.
MethodeAusgangBedeutung
PUTUploadDatei wurde hochgeladen.
GETDownloadDatei soll heruntergeladen werden.
DELETEDeleteDatei wurde gelöscht.
andereOtherUnbekannte oder nicht konfigurierte Operation.

Beispiel

Upload kann an File Type Switch angeschlossen werden, um OSF- und JSONL-Dateien weiter zu unterscheiden.


Generate Report

Kategorie: Aktion
Ausgänge: Success, Failure

Der Knoten erzeugt einen Bericht für den Ursprung der Nachricht über ein konfiguriertes Zeitfenster.

Konfiguration

BereichFelder
BerichtstypreportType mit Werten wie DEVICE_ACTIVITY, TELEMETRY, DEVICE_STATISTIC, ALARM, OSF_DATA, JASPER_TEMPLATE.
Bedingte FelderalarmSearchStatus, templateId, keys, sources, abhängig vom Berichtstyp.
ZeitfensteruseMetadataIntervalPatterns, startInterval, startIntervalTimeUnit, endInterval, endIntervalTimeUnit, startIntervalPattern, endIntervalPattern.

Beispiel

Für einen täglichen Telemetrieexport kann reportType = TELEMETRY mit einem Zeitfenster von einem Tag und den gewünschten Telemetrieschlüsseln konfiguriert werden.


Device System

Kategorie: Aktion
Ausgänge: Success, Failure

Der Knoten verarbeitet Daten, die aus einem Device System stammen. Dabei werden Daten mehrerer zusammengehöriger Geräte aggregiert oder korreliert.

Konfiguration

Der Knoten besitzt keine konfigurierbaren UI-Optionen. Die interne Version wird von der Plattform gesetzt.

Hinweise

  • Der Ursprung muss zu einem konfigurierten Device System gehören.
  • Die Struktur des Device Systems wird aus der Datenbank gelesen.
  • Der Knoten ist nur relevant, wenn die Device-System-Funktion genutzt wird.

GPS Geofencing Events

Kategorie: Aktion
Ausgänge: Entered, Left, Inside, Outside

Der Knoten verfolgt den Geofence-Zustand pro Gerät und erzeugt Ereignisse beim Betreten oder Verlassen eines Bereichs. Im Unterschied zum GPS Geofencing Filter ist dieser Knoten zustandsbehaftet.

Konfiguration

Die Koordinaten- und Geofence-Felder entsprechen dem GPS Geofencing Filter. Zusätzlich werden Mindestdauern konfiguriert:

LabelBeschreibung
Minimal Inside DurationDauer, die ein Gerät innerhalb des Bereichs sein muss, bevor Entered erzeugt wird.
Inside Duration UnitZeiteinheit für minInsideDuration.
Minimal Outside DurationDauer außerhalb des Bereichs, bevor Left erzeugt wird.
Outside Duration UnitZeiteinheit für minOutsideDuration.

Ausgänge

AusgangBedeutung
EnteredGerät war lange genug innerhalb des Bereichs und war vorher außerhalb.
LeftGerät war lange genug außerhalb des Bereichs und war vorher innerhalb.
InsideGerät ist innerhalb, die Mindestdauer ist aber noch nicht erreicht.
OutsideGerät ist außerhalb, die Mindestdauer ist aber noch nicht erreicht.

RPC Call Request

Kategorie: Aktion
Ausgänge: Success, Failure, Timeout

Der Knoten sendet einen RPC-Aufruf vom Server an ein Gerät und wartet auf die Antwort.

Konfiguration

LabelPflichtfeldBeschreibung
TimeoutJaWartezeit in Sekunden, bevor die Nachricht über Timeout weiterläuft.

Eingang und Ausgabe

Der Nachrichtentext muss method und params enthalten. Der Ursprung muss ein Gerät sein. Bei Success ersetzt die Geräteantwort den Nachrichtentext.

Beispiel

{
"method": "emergencyShutdown",
"params": { "reason": "HighTemperature" }
}
info

Das Gerät muss entsprechend konfiguriert sein, um die genauen Remote Procedure Calls auch ausführen zu können.


RPC Call Reply

Kategorie: Aktion
Ausgänge: Success, Failure

Der Knoten sendet eine Antwort auf eine vom Gerät kommende RPC-Anfrage zurück. Der Antwortinhalt wird aus dem aktuellen Nachrichtentext gebildet.

Konfiguration

LabelPflichtfeldBeschreibung
Request ID Metadata AttributeNeinMetadatenfeld mit der RPC-Request-ID.

Eingang

Die Nachricht muss vom Typ TO_SERVER_RPC_REQUEST sein. serviceId, sessionId und requestId werden in der Regel von der Plattform gesetzt.


Anreicherungs-Knoten

Originator Attributes

Kategorie: Anreicherung
Ausgänge: Success, Failure

Der Knoten liest Attribute und letzte Telemetriewerte des Ursprungs aus der Datenbank und schreibt sie in die Metadaten der Nachricht.

Metadaten-Präfixe

QuellePräfix in den Metadaten
Client-Attributecs_
Shared-Attributeshared_
Server-Attributess_
Letzte Telemetriekein Präfix

Konfiguration

LabelPflichtfeldBeschreibung
Client AttributesNeinClient-Attribute, die als cs_<name> ergänzt werden.
Shared AttributesNeinShared-Attribute, die als shared_<name> ergänzt werden.
Server AttributesNeinServer-Attribute, die als ss_<name> ergänzt werden.
Latest TimeseriesNeinLetzte Telemetriewerte, die ohne Präfix ergänzt werden.
Tell FailureJaAktiviert: fehlende Werte führen zu Failure. Deaktiviert: fehlende Werte werden übersprungen.

Mindestens ein Attribut- oder Telemetrieschlüssel muss eingetragen sein.

Beispiel

Wenn man z.B. manuell einen Offset Wert für einen TemperaturKanal definieren will, könnte man ein Server Attribut in der Form von offset : 5 anlegen. Über diesen Knoten könnte man dann diesen Wert auslesen und die Metadaten anreichern, um mit diesem Wert dann weiter zu arbeiten, indem man den Kanal offset unter Server Attribute auswählt. in deinem darauf folgenden Script Knoten kann man dann auf diesen Wert zugreifen über:

var offset = metadata.ss_offset;
var correctedTemperature = msg.temperature + offset;
return {
msg: msg,
metadata: metadata,
msgType: msgType
};

Originator Telemetry

Kategorie: Anreicherung
Ausgänge: Success, Failure

Der Knoten liest historische Telemetriewerte des Ursprungs aus einem Zeitfenster und ergänzt sie in den Metadaten.

Konfiguration

BereichFelder
DatenauswahllatestTsKeyNames, fetchMode mit FIRST, LAST oder ALL.
Zusatzfelder bei ALLaggregation, orderBy, limit.
ZeitfensteruseMetadataIntervalPatterns, startInterval, startIntervalTimeUnit, endInterval, endIntervalTimeUnit, startIntervalPattern, endIntervalPattern.

Hinweise

  • Bei FIRST oder LAST wird ein einzelner Wert pro Schlüssel ergänzt.
  • Bei ALL werden Werte als JSON-Array in den Metadaten abgelegt.

Beispiel

Für einen Vergleich mit dem Durchschnitt der letzten fünf Minuten kann temperature mit fetchMode = ALL geladen und anschließend in einem Transform-Skript ausgewertet werden.

*Script Knoten


var temperatureArray = metadata.temperatureArray;
var total = 0;
var avgTemp = 0;

for (var i = 0; i < temperatureArray.length; i++) {
total += temperatureArray[i];
}

if (temperatureArray.length > 0) {
avgTemp = total / temperatureArray.length;
}

msg.avgTemp = avgTemp;

return {
msg: msg,
metadata: metadata,
msgType: msgType
};

Originator Fields

Kategorie: Anreicherung
Ausgänge: Success, Failure

Der Knoten liest Stammdatenfelder des Ursprungs, beispielsweise Name oder Typ, und schreibt sie unter konfigurierbaren Namen in die Metadaten.

Konfiguration

LabelPflichtfeldBeschreibung
Fields MappingJaZuordnung von Entity-Feldnamen zu Metadatenschlüsseln.
QuellfeldBedeutung
nameAnzeigename des Gerätes
typeEntitätstyp, DEVICE
labelLabel der Entität
additionalInfoZusätzliche Informationen als JSON
createdTimeErstellungszeitpunkt als Epoch-Millisekunden

Beispiel

Mit name -> deviceName kann ein nachfolgender To Email-Knoten ${deviceName} im Betreff verwenden.


Tenant Details

Kategorie: Anreicherung
Ausgänge: Success, Failure

Der Knoten ergänzt Kontakt- und Adressdaten des Tenants in den Nachrichtentext oder in die Metadaten.

Konfiguration

LabelPflichtfeldBeschreibung
DetailsJaAusgewählte Tenant-Felder. Mindestens ein Feld muss gewählt werden.
Add Details to MetadataJaAktiviert: Werte werden in Metadaten geschrieben. Deaktiviert: Werte werden in den Nachrichtentext geschrieben.

Verfügbare Felder sind TITLE, EMAIL, PHONE, COUNTRY, CITY, STATE, ZIP, ADDRESS, ADDRESS2 und ADDITIONAL_INFO.


Transformations-Knoten

Script (Transform)

Kategorie: Transformation
Ausgänge: Success, Failure

Der Knoten verändert Nachrichtentext, Metadaten und/oder Nachrichtentyp per JavaScript. Das Ergebnis des Skripts wird an nachfolgende Knoten weitergegeben.

Konfiguration

LabelPflichtfeldBeschreibung
Transform FunctionJaJavaScript-Funktion Transform(msg, metadata, msgType).

Rückgabewert

Das Skript muss ein Objekt mit msg, metadata und msgType zurückgeben.

Beispiel

var newMsg = {};
newMsg.temperatureF = msg.temperature * 9 / 5 + 32;
newMsg.humidity = msg.humidity;

return {
msg: newMsg,
metadata: metadata,
msgType: msgType
};

To Email

Kategorie: Transformation
Ausgänge: Success, Failure

Der Knoten erstellt aus der aktuellen Nachricht und ihren Metadaten ein E-Mail-Objekt.

Konfiguration

LabelPflichtfeldBeschreibung
FromJaAbsenderadresse.
ToJaEmpfängeradresse oder mehrere Empfänger durch Komma getrennt.
CCNeinCC-Empfänger.
BCCNeinBCC-Empfänger.
SubjectJaBetreff.
BodyJaE-Mail-Inhalt.

Alle Felder unterstützen Platzhalter im Format ${metadataKey}.

info

Derr Knoten to Email erzeugt nur die Email. Gesendet wird die Email mit dem Send Email Knoten, der die Kommunikation mit den SMTP Server übernimmt.

Verarbeitungskette


Externe Knoten

REST API Call

Kategorie: Extern
Ausgänge: Success, Failure

Der Knoten sendet eine HTTP-Anfrage an eine externe REST-Schnittstelle. Der aktuelle Nachrichtentext wird als Request-Payload verwendet.

Konfiguration

LabelPflichtfeldBeschreibung
Endpoint URL PatternJaZiel-URL. Unterstützt ${metadata}-Platzhalter.
Request MethodJaHTTP-Methode: GET, POST, PUT, DELETE.
Use Simple Client HTTP FactoryNeinVerwendet einen einfachen HTTP-Client, z. B. für große Antworten.
HeadersNeinHTTP-Header als Key-Value-Liste.

Ausgabe

Bei Erfolg werden status, statusCode, statusReason und headers in die Metadaten geschrieben. Der Response Body wird zum neuen Nachrichtentext.


MQTT

Kategorie: Extern
Ausgänge: Success, Failure

Der Knoten veröffentlicht den aktuellen Nachrichtentext auf einem externen MQTT-Broker. Das Topic kann über Metadaten dynamisch aufgebaut werden.

Konfiguration

LabelPflichtfeldBeschreibung
Topic PatternJaMQTT-Topic mit optionalen ${metadata}-Platzhaltern.
HostJaHostname oder IP-Adresse des Brokers.
PortJaBroker-Port, z. B. 1883 oder 8883.
Connection TimeoutJaVerbindungs-Timeout in Sekunden.
Client IDNeinMQTT-Client-ID.
Clean SessionNeinSteuert, ob Broker-Sessiondaten verworfen werden.
Enable SSLNeinAktiviert TLS/SSL.

Zugangsdaten

Unterstützt werden anonymous, basic mit Benutzername/Passwort und cert.PEM für mTLS mit PEM-Zertifikaten.


Kafka

Kategorie: Extern
Ausgänge: Success, Failure

Der Knoten veröffentlicht den aktuellen Nachrichtentext als Record in einem Kafka-Topic.

Konfiguration

LabelPflichtfeldBeschreibung
Topic PatternJaKafka-Topic, optional mit Metadaten-Platzhaltern.
Bootstrap ServersJaKommaseparierte Broker-Liste.
Auto Retry TimesNeinAnzahl erneuter Sendeversuche.
Batch SizeNeinBatchgröße in Bytes.
Time to BufferNeinWartezeit zum Sammeln von Records in Millisekunden.
Buffer Max SizeNeinMaximaler Producer-Puffer.
AcksJaBestätigungsverhalten des Brokers.
SerializerJaSerializer-Klassen.
Other PropertiesNeinZusätzliche Kafka-Producer-Eigenschaften.

Ausgabe

Bei Erfolg werden offset, partition und topic in die Metadaten geschrieben.


RabbitMQ

Kategorie: Extern
Ausgänge: Success, Failure

Der Knoten veröffentlicht den Nachrichtentext an eine RabbitMQ-Exchange. Exchange und Routing Key können aus Metadaten gebildet werden.

Konfiguration

LabelPflichtfeldBeschreibung
Exchange Name PatternNeinExchange-Name. Leer bedeutet Default Exchange.
Routing Key PatternNeinRouting Key.
Message PropertiesNeinAMQP-Nachrichteneigenschaften.
HostJaRabbitMQ-Host.
PortJaAMQP-Port.
Virtual HostNeinRabbitMQ Virtual Host.
ZugangsdatenNeinAuthentifizierung.
Automatic RecoveryNeinAutomatische Wiederverbindung.
TimeoutsNeinVerbindungs- und Handshake-Timeout.
Client PropertiesNeinZusätzliche Client-Eigenschaften.

AWS SQS

Kategorie: Extern
Ausgänge: Success, Failure

Der Knoten sendet den aktuellen Nachrichtentext an eine AWS-SQS-Queue. Unterstützt werden Standard- und FIFO-Queues.

Konfiguration

LabelPflichtfeldBeschreibung
Queue TypeJaStandard- oder FIFO-Queue.
Queue URL PatternJaURL der SQS-Queue. Unterstützt Metadaten-Platzhalter.
Delay SecondsNeinVerzögerung für Standard-Queues.
Message AttributesNeinZusätzliche SQS-Attribute.
AWS-ZugangsdatenJaIAM-Zugangsdaten.
AWS RegionJaAWS-Region der Queue.

Ausgabe

Bei Erfolg werden unter anderem messageId, requestId, messageBodyMd5, messageAttributesMd5 und bei FIFO-Queues sequenceNumber ergänzt.


AWS SNS

Kategorie: Extern
Ausgänge: Success, Failure

Der Knoten veröffentlicht den aktuellen Nachrichtentext an ein AWS-SNS-Topic.

Konfiguration

LabelPflichtfeldBeschreibung
Topic ARN PatternJaARN des SNS-Topics. Unterstützt Metadaten-Platzhalter.
AWS-ZugangsdatenJaIAM-Zugangsdaten.
AWS RegionJaAWS-Region des Topics.

Ausgabe

Bei Erfolg werden messageId und requestId in die Metadaten geschrieben.


GCP Pub/Sub

Kategorie: Extern
Ausgänge: Success, Failure

Der Knoten veröffentlicht den aktuellen Nachrichtentext in einem Google-Cloud-Pub/Sub-Topic.

Konfiguration

LabelPflichtfeldBeschreibung
GCP Project IDJaGoogle-Cloud-Projekt-ID.
Topic NameJaName des Pub/Sub-Topics.
GCP Service Account KeyJaUpload einer JSON-Datei mit Service-Account-Zugangsdaten.
Message AttributesNeinZusätzliche Pub/Sub-Attribute.

Hinweis

Der Service Account benötigt die Berechtigung roles/pubsub.publisher für das Ziel-Topic.

Ausgabe

Bei Erfolg wird messageId in die Metadaten geschrieben.


Send Email

Kategorie: Extern
Ausgänge: Success, Failure

Der Knoten versendet ein E-Mail-Objekt über SMTP. Das E-Mail-Objekt muss zuvor über den Knoten To Email erzeugt werden.

Konfiguration

LabelPflichtfeldBeschreibung
Use General SMTP SettingsJaAktiviert die systemweiten SMTP-Einstellungen.

Wenn die systemweiten SMTP-Einstellungen deaktiviert werden, können smtpProtocol, smtpHost, smtpPort, username, password, timeout, enableTls, requireTls, checkServerIdentity und sslTrustHost konfiguriert werden.

Hinweis

Wenn die eingehende Nachricht kein gültiges E-Mail-Objekt ist, läuft sie über Failure.


Scheduler-Knoten

Create Scheduled Task

Kategorie: Scheduler
Ausgänge: Success, Failure

Der Knoten plant eine einmalige Aufgabe für einen späteren Zeitpunkt. Die Aufgabe kann einen Bericht erzeugen oder eine RuleChain auslösen.

Konfiguration

LabelPflichtfeldBeschreibung
Job NameJaEindeutiger Name der geplanten Aufgabe.
Delay Before StartJaVerzögerung bis zur Ausführung.
TypeJaREPORT oder RULE_CHAIN.
Rule ChainJa, bei RULE_CHAINAuszuführende RuleChain.
Report-Felderabhängig vom BerichtstypKonfiguration für geplante Berichte.

Hinweise

  • Eine Aufgabe mit gleichem jobName für dieselbe Entität wird überschrieben.

Clear Scheduled Task

Kategorie: Scheduler
Ausgänge: Success, Failure

Der Knoten löscht eine zuvor geplante Aufgabe, bevor sie ausgeführt wird.

Konfiguration

LabelPflichtfeldBeschreibung
Job NameJaExakter Name der Aufgabe, die gelöscht werden soll.

Hinweise

  • Der Name muss dem Namen aus Create Scheduled Task entsprechen.
  • Die Zuordnung erfolgt pro Ursprungseinheit.
  • Existiert keine passende Aufgabe, läuft die Nachricht über Failure.

Event- und Alarm-Knoten

Complex Alarm

Kategorie: Event-Regel
Ausgänge: Success, Created, Cleared

Der Knoten erzeugt oder beendet Alarme anhand einer Event-Regel für Echtzeit-Telemetrie. Er eignet sich für Muster, die nicht über eine einfache Einzelwertprüfung abgebildet werden können.

Konfiguration

LabelPflichtfeldBeschreibung
Event RuleJaAuswahl einer vorhandenen Event-Regel.

Hinweise

  • Die Event-Regel muss vor der Verwendung des Knoten angelegt sein. Siehe Event Processing
  • Created bedeutet, dass ein neuer Alarm geöffnet wurde.
  • Cleared bedeutet, dass ein bestehender Alarm beendet wurde.
  • Success bedeutet, dass keine Alarmzustandsänderung stattgefunden hat.

Complex Event Processing

Kategorie: Event-Regel
Ausgänge: Success, Created, Cleared

Der Knoten wendet Complex Event Processing auf bereits geladene OSF-Dateidaten an. Er ist die dateibasierte Variante zu Complex Alarm.

Konfiguration

LabelPflichtfeldBeschreibung
Event RuleJaAuswahl der Event-Regel für die CEP-Auswertung.

Hinweise

  • Der Knoten wird nach Aggregate OSF File platziert.
  • Die Event-Regel muss vorab in der Plattform angelegt sein. Siehe Event Processing

Enrich Alarm

Kategorie: Event-Regel
Ausgänge: Success, Failure

Der Knoten reichert einen bestehenden Alarm mit zusätzlichen Informationen aus einer Excel-basierten Event-Regel an.

Konfiguration

LabelPflichtfeldBeschreibung
Event RuleJaAuswahl einer Event-Regel mit zugehöriger Excel-Datei für die Anreicherung.

Hinweise

  • Die Event-Regel muss vorab in der Plattform angelegt sein. Siehe Event Processing
  • Die Event-Regel muss eine Excel-Datei mit Zuordnungen für Alarmtypen oder Bedingungen besitzen.
  • Der Knoten wird nach Create Alarm oder Complex Alarm eingesetzt.
  • Die ergänzten Details werden zurück in den Alarmdatensatz geschrieben.