Aller au contenu principal

RuleNodes

RuleNodes​

Les RuleNodes sont les éléments fonctionnels d'une RuleChain dans optiCLOUD. Ils déterminent comment les messages entrants sont filtrés, enrichis, transformés, enregistrés ou transmis à d'autres systèmes.

Cette page offre une orientation pratique sur les nœuds disponibles et leurs domaines d'application :

  • Quels nœuds existe-t-il ?
  • À quoi servent-ils ?
  • Quelles sorties ou relations possèdent-ils ?

Aperçu par catégories​

Nœuds de filtre​

RuleNodeObjet
Message Type FilterNe laisse passer que certains types de messages
Message Type SwitchRépartit les messages sur différents chemins selon le type de message
File Type SwitchAiguille les messages de fichiers selon le type de fichier
File Names FilterFiltre les noms de fichiers par préfixes
Device FilterLimite le traitement à certains appareils
Script (Filter)Exécute une logique de filtrage librement définie en JavaScript
SwitchTransmet les messages par script vers des sorties dynamiques
Check Existence FieldsVérifie si des champs sont présents dans le message ou les métadonnées
GPS Geofencing FilterNe laisse passer que les messages situés à l'intérieur d'un geofence

Nœuds d'action​

RuleNodeObjet
Save TimeseriesEnregistre la télémétrie sous forme de série temporelle
Save AttributesEnregistre des attributs dans un scope choisi
Save AlarmsEnregistre les états d'alarme à partir de messages d'alarme
Create AlarmCrée ou met à jour une alarme
Clear AlarmMet fin à une alarme existante
Alarm CounterCompte les alarmes dans une fenêtre temporelle
LogÉcrit des sorties de débogage ou de journal
GeneratorGénère des messages de façon périodique
Message CountCompte les messages entrants et publie le compteur
DelayRetarde la transmission d'un message
Aggregate OSF FileLit des fichiers OSF et en génère de la télémétrie
Aggregate JSONL FileLit des fichiers JSONL et en génère de la télémétrie
Process Raw Data FileTraite les opérations sur fichiers dans le stockage blob
Generate ReportCrée des rapports sur une période définie
Device SystemAgrège des données de plusieurs appareils
GPS Geofencing EventsGénère des événements à l'entrée ou à la sortie d'un geofence
RPC Call RequestEnvoie un appel RPC à un appareil
RPC Call ReplyRépond à un appel RPC entrant

Nœuds d'enrichissement​

RuleNodeObjet
Originator AttributesCharge les attributs de l'élément d'origine dans les métadonnées
Originator TelemetryCharge la télémétrie de l'élément d'origine dans les métadonnées
Originator FieldsComplète avec les données de base de l'élément d'origine
Tenant DetailsComplète avec les informations du tenant

Nœuds de transformation​

RuleNodeObjet
Script (Transform)Modifie le message, les métadonnées ou le type de message en JavaScript
To EmailConstruit un objet e-mail à partir d'un message

Nœuds externes​

RuleNodeObjet
REST API CallEnvoie des données à une interface REST externe
MQTTPublie des messages vers un broker MQTT
KafkaPublie des messages dans un topic Kafka
RabbitMQEnvoie des messages à RabbitMQ
AWS SQSEnvoie des messages à une queue SQS
AWS SNSPublie des messages vers un topic SNS
GCP Pub/SubPublie des messages vers Google Pub/Sub
Send EmailEnvoie un e-mail via SMTP

Nœuds de planification (Scheduler)​

RuleNodeObjet
Create Scheduled TaskPlanifie une exécution unique différée
Clear Scheduled TaskSupprime une tâche planifiée précédemment

Nœuds d'événements et d'alarmes​

RuleNodeObjet
Complex AlarmCrée des alarmes à partir de motifs complexes en temps réel
Complex Event ProcessingÉvalue des données de fichiers avec des règles d'événements
Enrich AlarmComplète des alarmes existantes avec des informations supplémentaires

Aperçu détaillé​

Nœuds de filtre​

Message Type Filter​

Catégorie : Filtre
Sorties : True, False

Le nœud vérifie si le type de message du message entrant figure dans une liste configurée. En cas de correspondance, le message poursuit via True, sinon via False.

Configuration​

LabelChamp obligatoireDescription
Message Types FilterOuiListe des types de messages autorisés. Au moins un type doit être renseigné.

Les valeurs prises en charge comprennent notamment 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 et POST_ALARMS.

Exemple​

Utilisez ce nœud lorsque, par exemple, seules les données de télémétrie doivent être traitées. Dans ce cas, POST_TELEMETRY_REQUEST est configuré et relié via la sortie TRUE à un autre nœud, qui ne recevra alors à coup sûr que des messages de type POST_TELEMETRY_REQUEST.


Message Type Switch​

Catégorie : Filtre
Sorties : une par type de message, plus Other

Le nœud répartit les messages sur des sorties fixes d'après leur type de message. Il convient comme répartiteur en début de RuleChain lorsque différents types de messages doivent être traités dans des branches séparées.

Configuration​

Ce nœud ne possède aucune option configurable. Les sorties sont définies de manière fixe.

SortieCondition
POST_ATTRIBUTESLe type de message est POST_ATTRIBUTES_REQUEST
POST_TELEMETRYLe type de message est POST_TELEMETRY_REQUEST
POST_ALARMSLe type de message est POST_ALARMS
BLOB_STORE_REQUESTLe type de message est BLOB_STORE_REQUEST
RPC_REQUEST_FROM_DEVICELe type de message est TO_SERVER_RPC_REQUEST
RPC_REQUEST_TO_DEVICELe type de message est TO_DEVICE_RPC_REQUEST
ACTIVITY_EVENTLe type de message est ACTIVITY_EVENT
INACTIVITY_EVENTLe type de message est INACTIVITY_EVENT
CONNECT_EVENTLe type de message est CONNECT_EVENT
DISCONNECT_EVENTLe type de message est DISCONNECT_EVENT
OtherTous les autres types de messages

Exemple​

Dans une Root RuleChain, ce nœud peut se trouver directement après l'entrée pour répartir la télémétrie, les attributs, les alarmes, les messages RPC et les opérations sur fichiers dans des branches de traitement séparées.


File Type Switch​

Catégorie : Filtre
Sorties : OSF, JSONL, Other

Le nœud aiguille les messages de fichiers d'après l'extension du fichier. Il est utilisé dans les pipelines de fichiers, une fois qu'une opération sur fichier a été reconnue comme BLOB_STORE_REQUEST.

Configuration​

Ce nœud ne possède aucune option configurable. La détection s'effectue d'après l'extension du fichier dans les métadonnées.

SortieExtensions de fichier reconnues
OSF.osf, .osfz
JSONL.log, .log.gz
OtherToutes les autres extensions de fichier

Exemple​

Transmettez p. ex. les fichiers .osf à Aggregate OSF File.


File Names Filter​

Catégorie : Filtre
Sorties : True, False

Le nœud ne laisse poursuivre les messages de fichiers via True que si le nom du fichier commence par l'un des préfixes configurés.

Configuration​

LabelChamp obligatoireDescription
File PrefixesOuiListe de préfixes de noms de fichiers. La vérification est sensible à la casse.

Remarques​

  • Une liste de préfixes vide a pour effet que tous les messages passent par False.
  • Le nom du fichier est lu dans les métadonnées du message, en règle générale dans fileName.

Exemple​

Si un appareil téléverse des fichiers avec data_ et config_, deux File Names Filter peuvent être utilisés pour traiter séparément les deux groupes de fichiers.


Device Filter​

Catégorie : Filtre
Sorties : True, False

Le nœud limite le traitement à certains appareils. Selon le réglage, la liste d'appareils peut être utilisée comme liste d'autorisation ou liste de blocage.

Configuration​

LabelChamp obligatoireDescription
DevicesOuiSélection d'appareils par sélection multiple.
Allow selected devicesOuiActivé : seuls les appareils sélectionnés passent par True. Désactivé : les appareils sélectionnés sont bloqués.

Sorties​

SortieCondition
TrueL'appareil est autorisé ou n'est pas bloqué
FalseL'appareil n'est pas autorisé ou est explicitement bloqué

Exemple​

Si une règle ne doit être exécutée que pour certains appareils, le Device Filter peut être placé avant la règle et ne transmettre à la règle suivante qu'une sélection d'appareils.


Script (Filter)​

Catégorie : Filtre
Sorties : True, False

Le nœud exécute une fonction JavaScript. Si le script renvoie true, le message poursuit via True. En cas de false ou d'erreur de script, il passe par False.

Configuration​

LabelChamp obligatoireDescription
Filter FunctionOuiFonction JavaScript avec la signature Filter(msg, metadata, msgType).

Contexte du script​

VariableDescription
msgCorps du message JSON
metadataMétadonnées du message
msgTypeType de message

Exemple​

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

Switch​

Catégorie : Filtre
Sorties : dynamiques par script

Le nœud transmet un message vers une ou plusieurs sorties nommées. Les noms des sorties sont renvoyés sous forme de tableau par une fonction JavaScript.

Configuration​

LabelChamp obligatoireDescription
Switch FunctionOuiFonction JavaScript avec la signature Switch(msg, metadata, msgType).

Le script doit renvoyer un tableau de chaînes. Chaque chaîne correspond à un nom de sortie.

Remarques​

  • Les noms de sortie non connectés sont ignorés.
  • Un tableau vide rejette le message.
  • Pour toutes les valeurs de retour possibles, il convient de créer des connexions appropriées dans la RuleChain.

Exemple​

La fonction suivante permet par exemple de vérifier la valeur de température d'un message et de transmettre les messages différemment selon cette valeur.

  • La connexion « highTemp » pourrait par exemple être reliée à un nœud d'alarme qui crée une alarme « High Temperature »
  • La connexion « lowTemp » pourrait par exemple être reliée à un nœud d'alarme qui crée une alarme « Low Temperature »
  • La connexion « normalTemp » pourrait par exemple être reliée à un nœud qui définit un attribut « TempStatus = OK »
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​

Catégorie : Filtre
Sorties : True, False

Le nœud vérifie si certains champs sont présents dans le corps du message et/ou dans les métadonnées. Les nœuds suivants peuvent ainsi être protégés contre les messages incomplets.

Configuration​

LabelChamp obligatoireDescription
Message DataNonNoms de champs qui doivent être présents dans le corps du message.
Message MetadataNonNoms de champs qui doivent être présents dans les métadonnées.
Check All Keys PresentOuiActivé : tous les champs indiqués doivent être présents. Désactivé : au moins un champ doit être présent.

Au moins l'un des deux champs messageNames ou metadataNames doit contenir des entrées.

Exemple​

Avant un nœud Script, il est possible de vérifier, par exemple, que tous les canaux utilisés dans le script sont bien présents dans le message. Cela évite que le script échoue et réduit sa complexité, car il faudrait sinon prendre des précautions au moyen de conditions if/else pour vérifier la présence des canaux. Lorsque ce nœud est placé avant un nœud Script, on peut partir du principe, dans le nœud Script, que les canaux sont présents dans le message.


GPS Geofencing Filter​

Catégorie : Filtre
Sorties : True, False

Le nœud vérifie si des coordonnées GPS se situent à l'intérieur d'un geofence défini. La vérification est sans état et évalue à chaque fois le message courant.

Configuration​

LabelChamp obligatoireDescription
Latitude Key NameOuiNom du champ de la latitude dans le corps du message.
Longitude Key NameOuiNom du champ de la longitude dans le corps du message.
Fetch Perimeter Info from MetadataOuiActivé : la définition du geofence est lue dans les métadonnées. Désactivé : le geofence est configuré statiquement dans le nœud.
Perimeter TypeOui, en configuration statiqueCircle ou Polygon.
Champs du cercleOui, pour un cercleCentre, rayon et unité du cercle.
Polygon DefinitionOui, pour un polygoneDéfinition GeoJSON ou WKT du polygone.

Remarque​

Pour les événements d'entrée/de sortie basés sur l'état, GPS Geofencing Events est utilisé.

Exemple​

Ne traitez p. ex. la télémétrie que lorsqu'un véhicule se trouve dans une zone définie ; sinon la télémétrie est rejetée.


Nœuds d'action​

Save Timeseries​

Catégorie : Action
Sorties : Success, Failure

Le nœud enregistre dans la base de données les données de télémétrie du corps du message sous forme de valeurs de série temporelle.

Configuration​

LabelChamp obligatoireDescription
Default TTLOuiDurée de vie des points de données enregistrés en secondes. 0 signifie aucune suppression automatique.
Enable Type CastOuiConvertit les valeurs numériques ou booléennes issues de chaînes en types de données natifs.

Entrée​

Le type de message doit être POST_TELEMETRY_REQUEST. Le corps du message doit être un objet JSON ou contenir un tableau d'objets JSON avec un horodatage ts.


Save Attributes​

Catégorie : Action
Sorties : Success, Failure

Le nœud enregistre les paires clé-valeur du corps du message comme attributs de l'entité d'origine.

Configuration​

LabelChamp obligatoireDescription
Attribute ScopeOuiScope cible pour les attributs.
Enable Type CastOuiConvertit les valeurs numériques ou booléennes issues de chaînes en types de données natifs.
ScopeSignification
CLIENT_SCOPEAttributs signalés par l'appareil, visibles pour l'appareil.
SHARED_SCOPEAttributs définis côté serveur, pouvant être distribués à l'appareil.
SERVER_SCOPEAttributs internes au serveur, non envoyés à l'appareil.

Entrée​

Le corps du message doit être un objet JSON. Chaque clé est enregistrée comme nom d'attribut.


Save Alarms​

Catégorie : Action
Sorties : Activated, Deactivated, Sustained

Le nœud traite les messages de type POST_ALARMS et enregistre les états d'alarme dans la base de données. Il reproduit ainsi les changements d'état des alarmes.

Sorties​

SortieSignification
ActivatedUne nouvelle alarme a été ouverte ou une alarme supprimée est de nouveau active.
DeactivatedUne alarme active a pris fin.
SustainedUne alarme déjà active reste active.

Configuration​

LabelChamp obligatoireDescription
PropagateOuiIndique si les alarmes sont propagées aux entités parentes.

Entrée​

Le message doit être de type POST_ALARMS et contenir des données d'alarme conformes au modèle d'alarme de la plateforme.


Create Alarm​

Catégorie : Action
Sorties : Created, Updated, False

Le nœud crée une alarme pour l'origine du message ou met à jour une alarme existante du même type. Les détails de l'alarme sont construits en JavaScript à partir du message et des métadonnées.

Sorties​

SortieSignification
CreatedUne nouvelle alarme a été créée.
UpdatedUne alarme existante de ce type a été mise à jour.
FalseLe script n'a pas généré d'alarme.

Configuration​

LabelChamp obligatoireDescription
Alarm Details BuilderOuiFonction JavaScript Details(msg, metadata, msgType) pour les détails de l'alarme.
Alarm TypeOuiType d'alarme. Prend en charge les motifs ${metadata.key}.
Alarm SeverityOuiNiveau de gravité : CRITICAL, MAJOR, MINOR, WARNING, INDETERMINATE.
PropagateOuiPropage l'alarme aux entités parentes.

Métadonnées après traitement​

Le nœud ajoute notamment alarmType, alarmIsNew, alarmSeverity et alarmId.

Exemple​

Un Script Filter placé en amont vérifie msg.temperature > 80. Dans le cas True, ce nœud crée une alarme HighTemperature avec le niveau de gravité MAJOR. Les détails pourraient contenir par exemple une fonction qui conserve la température maximale atteinte tant qu'une alarme était active et mise à jour

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

Clear Alarm​

Catégorie : Action
Sorties : Cleared, False

Le nœud met fin à une alarme active du type configuré pour l'origine du message.

Sorties​

SortieSignification
ClearedUne alarme active correspondante a été trouvée et clôturée.
FalseAucune alarme active correspondante n'a été trouvée.

Configuration​

LabelChamp obligatoireDescription
Alarm Details BuilderOuiFonction JavaScript pour les détails finaux de l'alarme lors de sa clôture.
Alarm TypeOuiType d'alarme, qui doit correspondre exactement à l'alarme créée précédemment.

Métadonnées après traitement​

Le nœud ajoute alarmType et alarmId.

Exemple​

Lorsqu'un appareil signale de nouveau temperature < 70, Clear Alarm peut clôturer l'alarme HighTemperature créée précédemment.

info

Le type d'alarme est sensible à la casse. Si une alarme de type HighTemperature a été créée avec un nœud Create Alarm, ce même type d'alarme HighTemperature doit être saisi exactement dans le nœud Clear Alarm pour que l'alarme puisse être supprimée.


Alarm Counter​

Catégorie : Action
Sorties : Success, Failure

Le nœud compte les alarmes selon des critères configurés dans une fenêtre temporelle et enregistre les résultats sous forme d'attributs serveur sur l'origine du message.

Configuration​

Le nœud contient une liste de définitions de compteurs.

LabelChamp obligatoireDescription
Find by Field NameOuiChamp d'alarme sur lequel on filtre, p. ex. severity ou type.
With Field ValueOuiValeur que le champ doit avoir, p. ex. CRITICAL.
Save in Server AttributeOuiNom de l'attribut serveur dans lequel le compteur est enregistré.
Time Period Alarm ConsideredOuiFenêtre temporelle considérée en secondes. 0 signifie sans limite de temps.

Exemple​

Avec

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

le nombre d'alarmes critiques des dernières 24 heures est compté et enregistré sous l'attribut serveur criticalAlarms24h.


Log​

Catégorie : Action
Sorties : Success, Failure

Le nœud écrit dans le journal du serveur un texte généré en JavaScript et transmet le message d'origine sans le modifier.

Configuration​

LabelChamp obligatoireDescription
Log FunctionOuiFonction JavaScript ToString(msg, metadata, msgType) qui renvoie le texte du journal.

Remarques​

  • Le nœud est avant tout destiné au développement, à l'analyse et au dépannage.
  • Il doit être utilisé avec parcimonie et, de préférence, seulement après concertation avec Optimeas, car un nœud Log n'a en réalité de sens que lorsque des erreurs se sont produites au préalable et que l'utilisateur ne peut éventuellement pas les corriger lui-même.

Generator​

Catégorie : Action
Sorties : Success, Failure

Le nœud génère périodiquement des messages en JavaScript et les injecte dans la RuleChain. Il peut être utilisé pour des tests, des simulations ou des processus planifiés.

Configuration​

LabelChamp obligatoireDescription
Message CountOuiNombre de messages à générer. 0 signifie illimité.
Period in SecondsOuiIntervalle entre les messages générés, en secondes.
OriginatorOuiAppareil d'origine des messages générés.
Generator FunctionOuiFonction JavaScript Generate(prevMsg, prevMetadata, prevMsgType).

La fonction doit renvoyer msg, metadata et msgType.

Exemple​

Si l'on souhaite par exemple créer et tester une RuleChain mais que l'on n'a pas d'appareil réel sous la main, ou que celui-ci n'envoie pas de données en direct à ce moment précis, on peut générer des messages artificiels avec le nœud Generator. Pour un test pertinent, ces messages générés artificiellement devraient idéalement refléter les messages attendus d'un appareil réel.

L'exemple suivant génère des messages avec :

Canaux de télémétrie : {"temperature": 42} et {"humidity": 77}

Métadonnées : {"data": 40}

Type : 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 };

Dans l'exemple ci-dessus, il s'agit de messages statiques avec toujours les mêmes valeurs (42, 77, 40). Un générateur peut toutefois aussi produire des données variables, p. ex. via :

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 };

Remarque​

En environnement de production, la période doit être choisie avec soin afin de ne pas générer une charge de messages inutilement élevée.


Message Count​

Catégorie : Action
Sorties : Success, Failure

Le nœud compte les messages dans un intervalle de temps et publie la valeur du compteur sous forme de télémétrie.

Configuration​

LabelChamp obligatoireDescription
Interval in SecondsOuiDurée de la fenêtre de comptage en secondes.
Output Timeseries Key PrefixOuiClé de télémétrie pour la valeur du compteur.

Sortie​

À la fin de chaque intervalle, un message POST_TELEMETRY_REQUEST est généré, p. ex. :

{
"messageCount": 42
}

Les messages entrants sont en outre transmis sans modification via Success.


Delay​

Catégorie : Action
Sorties : Success, Failure

Le nœud retient les messages pendant une durée configurée, puis les transmet. Le retard peut être statique ou déterminé via les métadonnées.

Configuration​

LabelChamp obligatoireDescription
Use Metadata Period PatternOuiActive un retard dynamique via les métadonnées.
Period in SecondsOui, si statiqueRetard statique en secondes.
Period in Seconds PatternOui, si dynamiqueChamp de métadonnées ou expression ${...} pour le retard.
Max Pending MessagesOuiNombre maximal de messages mis en mémoire tampon.

Remarques​

  • En cas de redémarrage du serveur, les messages en attente sont perdus, car ils ne sont pas enregistrés de façon persistante.
  • Lorsque le nombre maximal de messages est atteint, les nouveaux messages passent par Failure.

Aggregate OSF File​

Catégorie : Action
Sorties : Success, Failure

Le nœud charge un fichier OSF référencé dans un BLOB_STORE_REQUEST et le traite.

Entrée et sortie​

  • Entrée : BLOB_STORE_REQUEST avec la méthode GET.
  • Les métadonnées doivent contenir la référence au fichier enregistré.
  • Pour chaque intervalle de temps détecté, le nœud génère un message POST_TELEMETRY_REQUEST contenant les valeurs mesurées.

Chaîne de traitement​

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

Aggregate JSONL File​

Catégorie : Action
Sorties : Success, Failure

Le nœud charge un fichier JSONL à partir d'un BLOB_STORE_REQUEST et le traite.

Entrée et sortie​

  • Entrée : BLOB_STORE_REQUEST avec la méthode GET.
  • Le fichier doit contenir du JSONL valide.
  • Chaque ligne génère un message POST_TELEMETRY_REQUEST via Success.

Chaîne de traitement​

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

Process Raw Data File​

Catégorie : Action
Sorties : Download, Upload, Delete, Other

Le nœud classe les messages BLOB_STORE_REQUEST selon l'opération sur fichier et les transmet à la sortie appropriée.

Configuration​

LabelChamp obligatoireDescription
Selected ScopesOuiScopes d'attributs à traiter.
Selected MethodsOuiMéthodes HTTP ou opérations sur fichiers à transmettre.
MéthodeSortieSignification
PUTUploadLe fichier a été téléversé.
GETDownloadLe fichier doit être téléchargé.
DELETEDeleteLe fichier a été supprimé.
autresOtherOpération inconnue ou non configurée.

Exemple​

Upload peut être relié à File Type Switch afin de distinguer plus finement les fichiers OSF et JSONL.


Generate Report​

Catégorie : Action
Sorties : Success, Failure

Le nœud génère un rapport pour l'origine du message sur une fenêtre temporelle configurée.

Configuration​

ZoneChamps
Type de rapportreportType avec des valeurs telles que DEVICE_ACTIVITY, TELEMETRY, DEVICE_STATISTIC, ALARM, OSF_DATA, JASPER_TEMPLATE.
Champs conditionnelsalarmSearchStatus, templateId, keys, sources, selon le type de rapport.
Fenêtre temporelleuseMetadataIntervalPatterns, startInterval, startIntervalTimeUnit, endInterval, endIntervalTimeUnit, startIntervalPattern, endIntervalPattern.

Exemple​

Pour un export quotidien de télémétrie, on peut configurer reportType = TELEMETRY avec une fenêtre temporelle d'un jour et les clés de télémétrie souhaitées.


Device System​

Catégorie : Action
Sorties : Success, Failure

Le nœud traite des données provenant d'un Device System. Les données de plusieurs appareils associés sont alors agrégées ou corrélées.

Configuration​

Le nœud ne possède aucune option d'interface configurable. La version interne est définie par la plateforme.

Remarques​

  • L'origine doit appartenir à un Device System configuré.
  • La structure du Device System est lue dans la base de données.
  • Le nœud n'est pertinent que si la fonction Device System est utilisée.

GPS Geofencing Events​

Catégorie : Action
Sorties : Entered, Left, Inside, Outside

Le nœud suit l'état du geofence par appareil et génère des événements lors de l'entrée dans une zone ou de sa sortie. Contrairement au GPS Geofencing Filter, ce nœud est avec état.

Configuration​

Les champs de coordonnées et de geofence correspondent à ceux du GPS Geofencing Filter. Des durées minimales sont en outre configurées :

LabelDescription
Minimal Inside DurationDurée pendant laquelle un appareil doit se trouver dans la zone avant que Entered soit généré.
Inside Duration UnitUnité de temps pour minInsideDuration.
Minimal Outside DurationDurée hors de la zone avant que Left soit généré.
Outside Duration UnitUnité de temps pour minOutsideDuration.

Sorties​

SortieSignification
EnteredL'appareil est resté suffisamment longtemps dans la zone et se trouvait auparavant à l'extérieur.
LeftL'appareil est resté suffisamment longtemps hors de la zone et se trouvait auparavant à l'intérieur.
InsideL'appareil est à l'intérieur, mais la durée minimale n'est pas encore atteinte.
OutsideL'appareil est à l'extérieur, mais la durée minimale n'est pas encore atteinte.

RPC Call Request​

Catégorie : Action
Sorties : Success, Failure, Timeout

Le nœud envoie un appel RPC du serveur à un appareil et attend la réponse.

Configuration​

LabelChamp obligatoireDescription
TimeoutOuiTemps d'attente en secondes avant que le message poursuive via Timeout.

Entrée et sortie​

Le corps du message doit contenir method et params. L'origine doit être un appareil. En cas de Success, la réponse de l'appareil remplace le corps du message.

Exemple​

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

L'appareil doit être configuré en conséquence pour pouvoir exécuter les Remote Procedure Calls concernés.


RPC Call Reply​

Catégorie : Action
Sorties : Success, Failure

Le nœud renvoie une réponse à une requête RPC provenant de l'appareil. Le contenu de la réponse est formé à partir du corps du message courant.

Configuration​

LabelChamp obligatoireDescription
Request ID Metadata AttributeNonChamp de métadonnées contenant l'ID de la requête RPC.

Entrée​

Le message doit être de type TO_SERVER_RPC_REQUEST. serviceId, sessionId et requestId sont en règle générale définis par la plateforme.


Nœuds d'enrichissement​

Originator Attributes​

Catégorie : Enrichissement
Sorties : Success, Failure

Le nœud lit dans la base de données les attributs et les dernières valeurs de télémétrie de l'origine et les écrit dans les métadonnées du message.

Préfixes des métadonnées​

SourcePréfixe dans les métadonnées
Attributs clientcs_
Attributs partagésshared_
Attributs serveurss_
Dernière télémétrieaucun préfixe

Configuration​

LabelChamp obligatoireDescription
Client AttributesNonAttributs client ajoutés sous la forme cs_<name>.
Shared AttributesNonAttributs partagés ajoutés sous la forme shared_<name>.
Server AttributesNonAttributs serveur ajoutés sous la forme ss_<name>.
Latest TimeseriesNonDernières valeurs de télémétrie, ajoutées sans préfixe.
Tell FailureOuiActivé : les valeurs manquantes entraînent Failure. Désactivé : les valeurs manquantes sont ignorées.

Au moins une clé d'attribut ou de télémétrie doit être renseignée.

Exemple​

Si l'on souhaite par exemple définir manuellement une valeur de décalage (offset) pour un canal de température, on pourrait créer un attribut serveur de la forme offset : 5. Ce nœud permettrait ensuite de lire cette valeur et d'enrichir les métadonnées afin de continuer à travailler avec elle, en sélectionnant le canal offset sous Server Attributes. Dans le nœud Script suivant, on peut alors accéder à cette valeur via :

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

Originator Telemetry​

Catégorie : Enrichissement
Sorties : Success, Failure

Le nœud lit les valeurs de télémétrie historiques de l'origine dans une fenêtre temporelle et les ajoute aux métadonnées.

Configuration​

ZoneChamps
Sélection des donnéeslatestTsKeyNames, fetchMode avec FIRST, LAST ou ALL.
Champs supplémentaires pour ALLaggregation, orderBy, limit.
Fenêtre temporelleuseMetadataIntervalPatterns, startInterval, startIntervalTimeUnit, endInterval, endIntervalTimeUnit, startIntervalPattern, endIntervalPattern.

Remarques​

  • Avec FIRST ou LAST, une seule valeur par clé est ajoutée.
  • Avec ALL, les valeurs sont placées dans les métadonnées sous forme de tableau JSON.

Exemple​

Pour une comparaison avec la moyenne des cinq dernières minutes, temperature peut être chargée avec fetchMode = ALL, puis évaluée dans un script de transformation.

Nœud Script


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​

Catégorie : Enrichissement
Sorties : Success, Failure

Le nœud lit les champs de données de base de l'origine, par exemple le nom ou le type, et les écrit dans les métadonnées sous des noms configurables.

Configuration​

LabelChamp obligatoireDescription
Fields MappingOuiCorrespondance entre les noms de champs de l'entité et les clés de métadonnées.
Champ sourceSignification
nameNom d'affichage de l'appareil
typeType d'entité, DEVICE
labelLibellé de l'entité
additionalInfoInformations supplémentaires au format JSON
createdTimeDate et heure de création en millisecondes epoch

Exemple​

Avec name -> deviceName, un nœud To Email suivant peut utiliser ${deviceName} dans l'objet.


Tenant Details​

Catégorie : Enrichissement
Sorties : Success, Failure

Le nœud ajoute les coordonnées et l'adresse du tenant au corps du message ou aux métadonnées.

Configuration​

LabelChamp obligatoireDescription
DetailsOuiChamps du tenant sélectionnés. Au moins un champ doit être choisi.
Add Details to MetadataOuiActivé : les valeurs sont écrites dans les métadonnées. Désactivé : les valeurs sont écrites dans le corps du message.

Les champs disponibles sont TITLE, EMAIL, PHONE, COUNTRY, CITY, STATE, ZIP, ADDRESS, ADDRESS2 et ADDITIONAL_INFO.


Nœuds de transformation​

Script (Transform)​

Catégorie : Transformation
Sorties : Success, Failure

Le nœud modifie le corps du message, les métadonnées et/ou le type de message en JavaScript. Le résultat du script est transmis aux nœuds suivants.

Configuration​

LabelChamp obligatoireDescription
Transform FunctionOuiFonction JavaScript Transform(msg, metadata, msgType).

Valeur de retour​

Le script doit renvoyer un objet avec msg, metadata et msgType.

Exemple​

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

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

To Email​

Catégorie : Transformation
Sorties : Success, Failure

Le nœud construit un objet e-mail à partir du message courant et de ses métadonnées.

Configuration​

LabelChamp obligatoireDescription
FromOuiAdresse de l'expéditeur.
ToOuiAdresse du destinataire ou plusieurs destinataires séparés par des virgules.
CCNonDestinataires en CC.
BCCNonDestinataires en BCC.
SubjectOuiObjet.
BodyOuiContenu de l'e-mail.

Tous les champs prennent en charge des espaces réservés au format ${metadataKey}.

info

Le nœud to Email ne fait que créer l'e-mail. L'e-mail est envoyé par le nœud Send Email, qui assure la communication avec le serveur SMTP.

Chaîne de traitement​


Nœuds externes​

REST API Call​

Catégorie : Externe
Sorties : Success, Failure

Le nœud envoie une requête HTTP à une interface REST externe. Le corps du message courant est utilisé comme charge utile de la requête.

Configuration​

LabelChamp obligatoireDescription
Endpoint URL PatternOuiURL cible. Prend en charge les espaces réservés ${metadata}.
Request MethodOuiMéthode HTTP : GET, POST, PUT, DELETE.
Use Simple Client HTTP FactoryNonUtilise un client HTTP simple, p. ex. pour de grandes réponses.
HeadersNonEn-têtes HTTP sous forme de liste clé-valeur.

Sortie​

En cas de succès, status, statusCode, statusReason et headers sont écrits dans les métadonnées. Le corps de la réponse devient le nouveau corps du message.


MQTT​

Catégorie : Externe
Sorties : Success, Failure

Le nœud publie le corps du message courant sur un broker MQTT externe. Le topic peut être construit dynamiquement via les métadonnées.

Configuration​

LabelChamp obligatoireDescription
Topic PatternOuiTopic MQTT avec espaces réservés ${metadata} facultatifs.
HostOuiNom d'hôte ou adresse IP du broker.
PortOuiPort du broker, p. ex. 1883 ou 8883.
Connection TimeoutOuiDélai d'expiration de la connexion en secondes.
Client IDNonID client MQTT.
Clean SessionNonDétermine si les données de session du broker sont rejetées.
Enable SSLNonActive TLS/SSL.

Identifiants​

Sont pris en charge anonymous, basic avec nom d'utilisateur/mot de passe et cert.PEM pour mTLS avec des certificats PEM.


Kafka​

Catégorie : Externe
Sorties : Success, Failure

Le nœud publie le corps du message courant comme enregistrement dans un topic Kafka.

Configuration​

LabelChamp obligatoireDescription
Topic PatternOuiTopic Kafka, éventuellement avec des espaces réservés de métadonnées.
Bootstrap ServersOuiListe de brokers séparés par des virgules.
Auto Retry TimesNonNombre de nouvelles tentatives d'envoi.
Batch SizeNonTaille de lot en octets.
Time to BufferNonTemps d'attente pour collecter des enregistrements, en millisecondes.
Buffer Max SizeNonTaille maximale du tampon du producer.
AcksOuiComportement d'acquittement du broker.
SerializerOuiClasses de sérialiseur.
Other PropertiesNonPropriétés supplémentaires du producer Kafka.

Sortie​

En cas de succès, offset, partition et topic sont écrits dans les métadonnées.


RabbitMQ​

Catégorie : Externe
Sorties : Success, Failure

Le nœud publie le corps du message vers un exchange RabbitMQ. L'exchange et la routing key peuvent être construits à partir des métadonnées.

Configuration​

LabelChamp obligatoireDescription
Exchange Name PatternNonNom de l'exchange. Vide signifie exchange par défaut.
Routing Key PatternNonRouting key.
Message PropertiesNonPropriétés de message AMQP.
HostOuiHôte RabbitMQ.
PortOuiPort AMQP.
Virtual HostNonVirtual host RabbitMQ.
IdentifiantsNonAuthentification.
Automatic RecoveryNonReconnexion automatique.
TimeoutsNonDélais d'expiration de connexion et de handshake.
Client PropertiesNonPropriétés client supplémentaires.

AWS SQS​

Catégorie : Externe
Sorties : Success, Failure

Le nœud envoie le corps du message courant à une queue AWS SQS. Les queues standard et FIFO sont prises en charge.

Configuration​

LabelChamp obligatoireDescription
Queue TypeOuiQueue standard ou FIFO.
Queue URL PatternOuiURL de la queue SQS. Prend en charge les espaces réservés de métadonnées.
Delay SecondsNonRetard pour les queues standard.
Message AttributesNonAttributs SQS supplémentaires.
Identifiants AWSOuiIdentifiants IAM.
AWS RegionOuiRégion AWS de la queue.

Sortie​

En cas de succès, sont ajoutés notamment messageId, requestId, messageBodyMd5, messageAttributesMd5 et, pour les queues FIFO, sequenceNumber.


AWS SNS​

Catégorie : Externe
Sorties : Success, Failure

Le nœud publie le corps du message courant vers un topic AWS SNS.

Configuration​

LabelChamp obligatoireDescription
Topic ARN PatternOuiARN du topic SNS. Prend en charge les espaces réservés de métadonnées.
Identifiants AWSOuiIdentifiants IAM.
AWS RegionOuiRégion AWS du topic.

Sortie​

En cas de succès, messageId et requestId sont écrits dans les métadonnées.


GCP Pub/Sub​

Catégorie : Externe
Sorties : Success, Failure

Le nœud publie le corps du message courant dans un topic Google Cloud Pub/Sub.

Configuration​

LabelChamp obligatoireDescription
GCP Project IDOuiID du projet Google Cloud.
Topic NameOuiNom du topic Pub/Sub.
GCP Service Account KeyOuiTéléversement d'un fichier JSON contenant les identifiants du compte de service.
Message AttributesNonAttributs Pub/Sub supplémentaires.

Remarque​

Le compte de service nécessite l'autorisation roles/pubsub.publisher sur le topic cible.

Sortie​

En cas de succès, messageId est écrit dans les métadonnées.


Send Email​

Catégorie : Externe
Sorties : Success, Failure

Le nœud envoie un objet e-mail via SMTP. L'objet e-mail doit avoir été créé au préalable par le nœud To Email.

Configuration​

LabelChamp obligatoireDescription
Use General SMTP SettingsOuiActive les paramètres SMTP à l'échelle du système.

Si les paramètres SMTP à l'échelle du système sont désactivés, il est possible de configurer smtpProtocol, smtpHost, smtpPort, username, password, timeout, enableTls, requireTls, checkServerIdentity et sslTrustHost.

Remarque​

Si le message entrant n'est pas un objet e-mail valide, il passe par Failure.


Nœuds de planification (Scheduler)​

Create Scheduled Task​

Catégorie : Scheduler
Sorties : Success, Failure

Le nœud planifie une tâche unique pour un moment ultérieur. La tâche peut générer un rapport ou déclencher une RuleChain.

Configuration​

LabelChamp obligatoireDescription
Job NameOuiNom unique de la tâche planifiée.
Delay Before StartOuiDélai avant l'exécution.
TypeOuiREPORT ou RULE_CHAIN.
Rule ChainOui, pour RULE_CHAINRuleChain à exécuter.
Champs de rapportselon le type de rapportConfiguration pour les rapports planifiés.

Remarques​

  • Une tâche portant le même jobName pour la même entité est écrasée.

Clear Scheduled Task​

Catégorie : Scheduler
Sorties : Success, Failure

Le nœud supprime une tâche planifiée précédemment avant qu'elle soit exécutée.

Configuration​

LabelChamp obligatoireDescription
Job NameOuiNom exact de la tâche à supprimer.

Remarques​

  • Le nom doit correspondre à celui de Create Scheduled Task.
  • L'association s'effectue par entité d'origine.
  • S'il n'existe aucune tâche correspondante, le message passe par Failure.

Nœuds d'événements et d'alarmes​

Complex Alarm​

Catégorie : Règle d'événement
Sorties : Success, Created, Cleared

Le nœud crée ou clôture des alarmes à partir d'une règle d'événement pour la télémétrie en temps réel. Il convient aux motifs qui ne peuvent pas être représentés par une simple vérification de valeur unique.

Configuration​

LabelChamp obligatoireDescription
Event RuleOuiSélection d'une règle d'événement existante.

Remarques​

  • La règle d'événement doit avoir été créée avant l'utilisation du nœud. Voir Event Processing
  • Created signifie qu'une nouvelle alarme a été ouverte.
  • Cleared signifie qu'une alarme existante a été clôturée.
  • Success signifie qu'aucun changement d'état d'alarme n'a eu lieu.

Complex Event Processing​

Catégorie : Règle d'événement
Sorties : Success, Created, Cleared

Le nœud applique le Complex Event Processing à des données de fichiers OSF déjà chargées. Il constitue la variante basée sur les fichiers de Complex Alarm.

Configuration​

LabelChamp obligatoireDescription
Event RuleOuiSélection de la règle d'événement pour l'évaluation CEP.

Remarques​

  • Le nœud est placé après Aggregate OSF File.
  • La règle d'événement doit avoir été créée au préalable dans la plateforme. Voir Event Processing

Enrich Alarm​

Catégorie : Règle d'événement
Sorties : Success, Failure

Le nœud enrichit une alarme existante avec des informations supplémentaires provenant d'une règle d'événement basée sur Excel.

Configuration​

LabelChamp obligatoireDescription
Event RuleOuiSélection d'une règle d'événement avec le fichier Excel associé pour l'enrichissement.

Remarques​

  • La règle d'événement doit avoir été créée au préalable dans la plateforme. Voir Event Processing
  • La règle d'événement doit posséder un fichier Excel contenant des correspondances pour des types d'alarme ou des conditions.
  • Le nœud est utilisé après Create Alarm ou Complex Alarm.
  • Les détails ajoutés sont réécrits dans l'enregistrement de l'alarme.