Nouveau : le pare-feu IA surveille chaque module et explique chaque incident en termes simples. Découvrez comment ça marche

Blocs de routage et de temporisation

Référence de Switch, Gate, All of, Any of, Not, Split, Join, Sort, Batch, Delay, Debounce, Deduplicate, Rate limit, Only changes, Trigger, Detach et Link call.

Ces blocs décident où un message va et quand. Les blocs qui attendent ou retiennent des messages les conservent de façon durable : un redémarrage de la plateforme ne les perd pas. Sauf si une clé est définie, les blocs qui mémorisent par clé gardent une mémoire par appareil (l’originator du message). Chaque bloc conserve au plus 10 000 clés et retient au plus 16 MiB de messages.

Switch

Achemine un message selon la valeur d’une propriété. Chaque règle a sa propre sortie.

RéglageSignificationPar défautValeurs
propertyLa valeur testée par les règlesmsg.payloadun chemin
rulesUne ligne et une sortie chacune : op, value (et value2 pour between), Name facultatifaucunejusqu’à 16 règles
stop_firstEnvoie seulement à la première règle correspondanteonon, off

Sorties : o0 … o15 (une par règle, libellée avec le Name de la règle si défini), else (affichée comme « otherwise »), error. Les opérateurs sont ceux de Compare, plus between (de value à value2, bornes incluses) et expr (l’expression propre à la règle est vraie). Avec stop_first désactivé, chaque règle correspondante reçoit le message.

Gate

Laisse passer les messages quand il est ouvert, les retient ou les supprime quand il est fermé.

RéglageSignificationPar défautValeurs
initialÉtat au démarrage du fluxopenopen, closed
control_topicTopic des messages de contrôle ; vide = aucungatejusqu’à 64 caractères
conditionExpression facultative : ouvert seulement tant qu’elle est vraievideune expression
closedUn message pendant la fermeturedropdrop, queue
max_queueMessages conservés en file d’attente32jusqu’à 1 000

Les messages de contrôle ont msg.topic égal au topic de contrôle et msg.payload open (ou true, 1, on), close (ou false, 0, off), toggle ou status ; ils ne sont pas transmis. Sorties : out, dropped (supprimé pendant la fermeture, ou éjecté d’une file pleine), error. Exemple de condition pour les heures ouvrées : number(fmt_time(now(), "%H")) >= 8 && number(fmt_time(now(), "%H")) < 18.

All of

Attend que des messages ayant des clés différentes (par défaut des topics différents) soient tous arrivés dans une fenêtre, puis envoie un seul message contenant tous leurs payloads.

RéglageSignificationPar défautValeurs
window_msTous les messages doivent être plus récents que cette durée ; 0 = pas de limite10 s0 à 24 h
keyEmplacement où la clé est luemsg.topicun chemin
min_inputsNombre de clés différentes nécessaires22 à 16

Sortie out : le message qui complète le groupe, avec msg.payload = { key: payload, … }. Seul le message qui complète le groupe part. Ce qu’il collecte est conservé par appareil par défaut (group_by : originator, ou flow).

Any of

Laisse passer chaque message ; supprime en option les répétitions d’une clé.

RéglageSignificationPar défautValeurs
dedup_msSupprime un message dont la clé est passée depuis moins de cette durée ; 0 = tout laisser passer00 à 24 h
keyLa clé de contrôle des répétitionsmsg.topicun chemin

Not

Remplace msg.payload par son opposé logique, true ou false. false, null, 0, "" et not-a-number deviennent true ; tout le reste (y compris "0", "false", [], {}) devient false. Aucun réglage.

Split

Un message par partie de msg.payload : par élément de tableau, par clé d’objet, par ligne de texte, ou par morceau de taille fixe.

RéglageSignificationPar défautValeurs
modeauto (élément, clé ou délimiteur) ou length (morceaux)autoauto, length
delimiterEndroit où le texte est coupé ; \n nouvelle ligne, \t tabulation\njusqu’à 16 caractères
lengthTaille des morceaux en éléments ou en caractères11 à 65 536

Chaque partie porte msg.parts (id, index, count, type, key …) pour Join. Erreur queue_full au-delà de 10 000 parties.

Join

Regroupe des messages en un seul.

RéglageSignificationPar défautValeurs
modeauto reconstruit ce que Split a découpé ; manual construit à partir de n’importe quels messagesautoauto, manual
buildCe qu’il faut construire (manual)arrayarray, object, string
joinerEntre les morceaux de texte\njusqu’à 16 caractères
keyClé d’objet de chaque messagemsg.topicun chemin
countEnvoi après ce nombre de messages ; 0 = pas de comptage00 à 10 000
timeout_msEnvoi de ce qui est arrivé à cette durée après le premier message ; 0 = attendre00 à 24 h

msg.complete (quelle que soit sa valeur) envoie aussitôt un groupe manuel. Définissez count, timeout_ms ou msg.complete en mode manuel, sinon le groupe ne part qu’à la limite de 10 000 messages.

Sort

Trie une liste (mode array : property, field facultatif) ou les messages d’un groupe créé par Split ou Batch (mode messages : key, timeout_ms). Réglages : order asc/desc, numeric activé/désactivé (sans lui, "10" se trie avant "9"). Erreur queue_full au-delà de 10 000 éléments.

Batch

Envoie les messages par groupes.

RéglageSignificationPar défautValeurs
modePar nombre ou par tempscountcount, interval
countMessages par groupe101 à 10 000
overlapMessages du dernier groupe renvoyés avec le suivant00 à count − 1
interval_msDurée entre le premier message en attente et le départ du groupe1 s1 ms à 24 h

Chaque message d’un groupe reçoit msg.parts ; un Join en mode auto fait ensuite une seule liste.

Delay

Retient chaque message, puis l’envoie sans modification.

RéglageSignificationPar défautValeurs
msAttente1 s0 à 7 jours
ms2Borne haute d’une attente aléatoirevide0 à 7 jours
from_msgPrendre l’attente dans msg.delayoffon, off
max_pendingMessages en attente simultanément1,0001 à 100 000
on_newqueue : chacun attend son propre temps ; restart : un nouveau message supprime les messages en attente de sa cléqueuequeue, restart
keyClé pour restartmsg.originatorun chemin

msg.reset = true supprime tous les messages en attente. Erreur queue_full quand max_pending est atteint.

Debounce

Un message par salve.

RéglageSignificationPar défautValeurs
msTemps calme qui termine une salve500 ms0 à 24 h
edgetrailing : le dernier message après le temps calme ; leading : le premier tout de suitetrailingtrailing, leading
keyChaque clé est traitée séparémentmsg.originatorun chemin

Deduplicate

Un message par période et par clé, quel que soit le nombre reçu.

RéglageSignificationPar défautValeurs
strategyfirst, last, ou all (un message dont le payload liste chaque { payload, metadata })firstfirst, last, all
window_ms (Period)Commence avec le premier message d’une clé60 s1 s à 24 h
keyUn paquet par valeurmsg.originatorun chemin
timemessage (l’heure propre de la mesure, depuis ts_path ou l’heure d’enregistrement) ou arrivalmessagemessage, arrival
ts_pathEmplacement de l’heure de la mesure (time = message)l’heure d’enregistrementun chemin
max_pendingMessages conservés par clé pour all1001 à 1 000
msg_typeType de message du résultat allle type du premier messagejusqu’à 64 caractères

Le résultat porte msg.metadata.dedup avec count, start et end. Avec Time message, un retard vidé donne un résultat par période de temps de l’appareil.

Rate limit

Au plus n messages par période et par clé.

RéglageSignificationPar défautValeurs
nMessages par période11 à 10 000
per_msLa période glissante1 s1 ms à 24 h
modeAu-delà de la limite : drop, latest (ne garder que le plus récent), queuedropdrop, latest, queue
max_queueMessages en attente par clé321 à 1 000
keyChaque clé a sa propre limitemsg.originatorun chemin

Sorties : out, dropped. À placer devant un appel SMS, mail ou externe.

Only changes

Ne laisse passer un message que si sa valeur a changé depuis le dernier passé.

RéglageSignificationPar défautValeurs
propertyLa valeurmsg.payloadun chemin
modechange, deadband (d’au moins value), deadband_pct (d’au moins value % de la dernière value)change
valueLa zone morte00 ou plus
keyChaque key a sa propre dernière valuemsg.originatorun chemin
firstLaisser passer la première value d’une keyonon, off

La nouvelle value est comparée à la dernière value qui a passé, de sorte qu’une dérive lente est signalée une fois qu’elle s’est accumulée.

Trigger

Envoie un premier message, attend, puis envoie un second.

RéglageSignificationPar défautValeurs
firstEnvoyé immédiatement : le message lui-même, rien, ou une value pour msg.payloadle message
thenEnvoyé après l’attente : rien, le message, ou une valuenothing
msWait1 s0 à 7 jours
extendUn nouveau message pendant l’attente redémarre l’attenteoffon, off
keyChaque key a sa propre attentemsg.originatorun chemin

msg.reset = true annule l’attente de cette key.

Detach

Le reste de la branche s’exécute séparément, de sorte que le prochain message de l’appareil n’attend pas celle-ci. À utiliser avant une branche lente. Après celle-ci, l’ordre des messages n’est pas garanti. Aucun réglage.

Appel de lien

Envoie le message à un Link in (ou avec flow:<slug>, à l’Flow input d’un autre flux) et attend la réponse d’un Link out en mode return.

RéglageSignificationPar défautValeurs
targetLe nom du Link inrequired
timeout_msAttendre la réponse30 s1 ms à 1 h
returnsRetours nommés de la cible ; chacun devient une sortienone

Sorties : out (la réponse), une par retour nommé, timeout (aucune réponse à temps ; le message d’origine), error (invalid_value lien inexistant, queue_full, unknown_return, loop). Les appels s’imbriquent au plus 16 niveaux ; un appel dans sa propre pile d’appels échoue avec loop.