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églage | Signification | Par défaut | Valeurs |
|---|---|---|---|
| property | La valeur testée par les règles | msg.payload | un chemin |
| rules | Une ligne et une sortie chacune : op, value (et value2 pour between), Name facultatif | aucune | jusqu’à 16 règles |
| stop_first | Envoie seulement à la première règle correspondante | on | on, 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églage | Signification | Par défaut | Valeurs |
|---|---|---|---|
| initial | État au démarrage du flux | open | open, closed |
| control_topic | Topic des messages de contrôle ; vide = aucun | gate | jusqu’à 64 caractères |
| condition | Expression facultative : ouvert seulement tant qu’elle est vraie | vide | une expression |
| closed | Un message pendant la fermeture | drop | drop, queue |
| max_queue | Messages conservés en file d’attente | 32 | jusqu’à 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églage | Signification | Par défaut | Valeurs |
|---|---|---|---|
| window_ms | Tous les messages doivent être plus récents que cette durée ; 0 = pas de limite | 10 s | 0 à 24 h |
| key | Emplacement où la clé est lue | msg.topic | un chemin |
| min_inputs | Nombre de clés différentes nécessaires | 2 | 2 à 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églage | Signification | Par défaut | Valeurs |
|---|---|---|---|
| dedup_ms | Supprime un message dont la clé est passée depuis moins de cette durée ; 0 = tout laisser passer | 0 | 0 à 24 h |
| key | La clé de contrôle des répétitions | msg.topic | un 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églage | Signification | Par défaut | Valeurs |
|---|---|---|---|
| mode | auto (élément, clé ou délimiteur) ou length (morceaux) | auto | auto, length |
| delimiter | Endroit où le texte est coupé ; \n nouvelle ligne, \t tabulation | \n | jusqu’à 16 caractères |
| length | Taille des morceaux en éléments ou en caractères | 1 | 1 à 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églage | Signification | Par défaut | Valeurs |
|---|---|---|---|
| mode | auto reconstruit ce que Split a découpé ; manual construit à partir de n’importe quels messages | auto | auto, manual |
| build | Ce qu’il faut construire (manual) | array | array, object, string |
| joiner | Entre les morceaux de texte | \n | jusqu’à 16 caractères |
| key | Clé d’objet de chaque message | msg.topic | un chemin |
| count | Envoi après ce nombre de messages ; 0 = pas de comptage | 0 | 0 à 10 000 |
| timeout_ms | Envoi de ce qui est arrivé à cette durée après le premier message ; 0 = attendre | 0 | 0 à 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églage | Signification | Par défaut | Valeurs |
|---|---|---|---|
| mode | Par nombre ou par temps | count | count, interval |
| count | Messages par groupe | 10 | 1 à 10 000 |
| overlap | Messages du dernier groupe renvoyés avec le suivant | 0 | 0 à count − 1 |
| interval_ms | Durée entre le premier message en attente et le départ du groupe | 1 s | 1 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églage | Signification | Par défaut | Valeurs |
|---|---|---|---|
| ms | Attente | 1 s | 0 à 7 jours |
| ms2 | Borne haute d’une attente aléatoire | vide | 0 à 7 jours |
| from_msg | Prendre l’attente dans msg.delay | off | on, off |
| max_pending | Messages en attente simultanément | 1,000 | 1 à 100 000 |
| on_new | queue : chacun attend son propre temps ; restart : un nouveau message supprime les messages en attente de sa clé | queue | queue, restart |
| key | Clé pour restart | msg.originator | un chemin |
msg.reset = true supprime tous les messages en attente. Erreur queue_full quand max_pending est atteint.
Debounce
Un message par salve.
| Réglage | Signification | Par défaut | Valeurs |
|---|---|---|---|
| ms | Temps calme qui termine une salve | 500 ms | 0 à 24 h |
| edge | trailing : le dernier message après le temps calme ; leading : le premier tout de suite | trailing | trailing, leading |
| key | Chaque clé est traitée séparément | msg.originator | un chemin |
Deduplicate
Un message par période et par clé, quel que soit le nombre reçu.
| Réglage | Signification | Par défaut | Valeurs |
|---|---|---|---|
| strategy | first, last, ou all (un message dont le payload liste chaque { payload, metadata }) | first | first, last, all |
| window_ms (Period) | Commence avec le premier message d’une clé | 60 s | 1 s à 24 h |
| key | Un paquet par valeur | msg.originator | un chemin |
| time | message (l’heure propre de la mesure, depuis ts_path ou l’heure d’enregistrement) ou arrival | message | message, arrival |
| ts_path | Emplacement de l’heure de la mesure (time = message) | l’heure d’enregistrement | un chemin |
| max_pending | Messages conservés par clé pour all | 100 | 1 à 1 000 |
| msg_type | Type de message du résultat all | le type du premier message | jusqu’à 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églage | Signification | Par défaut | Valeurs |
|---|---|---|---|
| n | Messages par période | 1 | 1 à 10 000 |
| per_ms | La période glissante | 1 s | 1 ms à 24 h |
| mode | Au-delà de la limite : drop, latest (ne garder que le plus récent), queue | drop | drop, latest, queue |
| max_queue | Messages en attente par clé | 32 | 1 à 1 000 |
| key | Chaque clé a sa propre limite | msg.originator | un 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églage | Signification | Par défaut | Valeurs |
|---|---|---|---|
| property | La valeur | msg.payload | un chemin |
| mode | change, deadband (d’au moins value), deadband_pct (d’au moins value % de la dernière value) | change | |
| value | La zone morte | 0 | 0 ou plus |
| key | Chaque key a sa propre dernière value | msg.originator | un chemin |
| first | Laisser passer la première value d’une key | on | on, 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églage | Signification | Par défaut | Valeurs |
|---|---|---|---|
| first | Envoyé immédiatement : le message lui-même, rien, ou une value pour msg.payload | le message | |
| then | Envoyé après l’attente : rien, le message, ou une value | nothing | |
| ms | Wait | 1 s | 0 à 7 jours |
| extend | Un nouveau message pendant l’attente redémarre l’attente | off | on, off |
| key | Chaque key a sa propre attente | msg.originator | un 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églage | Signification | Par défaut | Valeurs |
|---|---|---|---|
| target | Le nom du Link in | required | |
| timeout_ms | Attendre la réponse | 30 s | 1 ms à 1 h |
| returns | Retours nommés de la cible ; chacun devient une sortie | none |
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.

