Les blocs d’action font quelque chose : appeler un autre système, publier un message, stocker une variable, démarrer une minuterie, transmettre le message à un autre flux ou écrire une ligne de journal. Les actions liées aux appareils, aux alarmes et aux notifications figurent sur leurs propres pages : blocs de données IoT et blocs Alarme, commande et notification.
Comportement commun des blocs sortants
HTTP request, MQTT out et Webhook partagent ces règles :
| Sujet | Comportement |
|---|---|
| Risque | Externe : un déploiement qui en contient un demande une confirmation |
| Nouvelles tentatives | Seules les défaillances transitoires sont relancées ; 3 tentatives par défaut (paramètres retry_*), au maximum 5, avec un délai exponentiel à partir de 1 s |
| Idempotence | Chaque tentative d’un même message porte la même clé (X-Idempotency-Key, ou la propriété utilisateur MQTT 5 idempotency-key), y compris après un plantage ou une relecture, afin qu’un récepteur puisse dédoublonner |
| Livraison | Au moins une fois |
| Disjoncteur | Un bloc dont les appels échouent sans cesse suspend ses appels pendant un certain temps (circuit_open) |
| Messages tardifs | late : skip (par défaut ; le message s’arrête et est compté comme Trop ancien) ou send (un flux de données qui doit aussi recevoir le retard accumulé après une panne) |
| Tests | Une exécution de test n’envoie rien et indique ce qu’elle aurait envoyé |
| Ordre | Les appels HTTP request et MQTT out s’exécutent séparément de l’exécution qui les a produits : le message suivant de l’appareil n’attend pas la réponse, et l’ordre des messages après l’appel n’est pas garanti |
| Adresses | Les adresses privées et internes sont refusées (ssrf_blocked) |
HTTP request
Appelle un point de terminaison HTTP et place la réponse dans le message. Le schéma, l’hôte, le port, l’authentification et le TLS proviennent uniquement de la connexion endpoint, jamais du message. Voir Connexions et secrets.
| Paramètre | Signification | Par défaut | Valeurs |
|---|---|---|---|
| endpoint | La connexion au point de terminaison HTTP | obligatoire | |
| host | Un autre hôte autorisé par le point de terminaison | vide | un modèle ; doit correspondre aux hôtes autorisés du point de terminaison |
| method | Méthode HTTP | GET | GET, POST, PUT, PATCH, DELETE, HEAD |
| path | Ajouté au chemin de base du point de terminaison | vide | un modèle, 1 024 caractères |
| query | Paramètres de requête | aucun | jusqu’à 16 lignes |
| headers | En-têtes supplémentaires | aucun | jusqu’à 16 lignes ; Host, Authorization, Cookie, Proxy-*, Content-Length, X-Idempotency-Key et les en-têtes hop-by-hop sont refusés |
| body | Ce qui est envoyé | payload | payload, template, none (masqué pour GET, HEAD, DELETE) |
| template | Le modèle du corps | vide | jusqu’à 4 096 caractères |
| template_format | Écriture des valeurs {{ }} | text | text, json (chaque valeur en valeur JSON ; le corps doit être du JSON) |
| timeout_ms | Durée par tentative | 10,000 | 1 000 à 30 000 |
| parse | Lecture de la réponse | auto | auto, json, text |
| max_bytes | Réponse la plus grande | 64 KiB | 1 à 256 KiB |
| response_headers | En-têtes de réponse conservés dans msg.metadata.headers | all | all, list, none (32 en-têtes au maximum, 8 KiB) |
| max_parallel | Appels en cours pour ce bloc | 0 (sans limite) | 0 à 64 |
| inline | Garde l’appel dans l’exécution, de sorte que le message suivant de l’appareil attend la réponse (le déploiement affiche un avertissement) | off | on, off |
| retry_* | Tentatives et délai | 3, à partir de 1 s | |
| late | Voir ci-dessus | skip | skip, send |
Sorties :
out: statut inférieur à 400.msg.payloadest le corps,msg.statusCode,msg.contentType,msg.metadata.headers. Les redirections ne sont pas suivies.error:http_status(400 ou plus, corps dansmsg.payload),timeout,connect,tls,ssrf_blocked,too_large,invalid_json,invalid_value,oauth_failed,function_error,circuit_open,limit.msg.error.attemptsindique le nombre de tentatives effectuées.
Relancées : délais d’attente, échecs de connexion et HTTP 408, 425, 429 (en respectant Retry-After), 500, 502, 503, 504.
Pour un corps JSON construit à partir de valeurs, utilisez template_format: json et n’entourez pas les espaces réservés de guillemets : {"name": {{ msg.payload.name }}, "n": {{ msg.payload.n }}}.
HTTP response
Répond à l’appelant d’un déclencheur Webhook synchrone (reply: response). La première réponse d’une exécution l’emporte.
| Paramètre | Signification | Par défaut | Valeurs |
|---|---|---|---|
| status | Statut HTTP (msg.statusCode le remplace) | 200 | 100 à 599 |
| headers | En-têtes de réponse | aucun | content-type, cache-control, location (3xx), x-* (pas x-forwarded-*) |
| body | Ce qui est envoyé | payload | payload, template, none |
| template | Modèle du corps | vide | jusqu’à 4 096 caractères |
| max_bytes | Corps le plus grand | 256 KiB | 256 KiB au maximum |
Erreurs : no_reply_pending, reply_sent, limit. Sans réponse, l’appelant reçoit 204 ; après le délai d’attente du hook, 504.
MQTT out
Publie la charge utile vers un sujet de votre broker, puis transmet le message. Le texte est envoyé en texte, tout le reste en JSON.
| Paramètre | Signification | Par défaut | Valeurs |
|---|---|---|---|
| broker | La connexion au broker MQTT | obligatoire | |
| topic | Le sujet | {{ msg.topic }} | un modèle, 256 caractères ; un ~/ en tête représente le préfixe de sujet du broker |
| qos | Garantie de livraison | 0 | 0, 1, 2 |
| retain | Demander au broker de conserver le message | off | on, off |
| timeout_ms | Délai de l’accusé de réception | 10,000 | 1 000 à 30 000 |
| max_parallel | Publications en cours | 0 (sans limite) | 0 à 64 |
| retry_*, late | Comme ci-dessus |
Erreurs : bad_topic (vide, + ou #, ou ~/ sans préfixe), timeout, connect, auth, ssrf_blocked, node_not_ready, not_configured, circuit_open, limit. Seuls les délais d’attente et les échecs de connexion sont relancés.
Webhook
Envoie le message à l’un des points de terminaison webhook de votre organisation : signé, relancé et listé dans les livraisons du point de terminaison. C’est le chemin de livraison garantie.
| Paramètre | Signification | Par défaut | Valeurs |
|---|---|---|---|
| endpoint | Le point de terminaison | obligatoire | points de terminaison actifs abonnés à Automation message |
| topic | Envoyé comme topic | {{ msg.topic }} | un modèle, 256 caractères |
| body | Ce qui est envoyé en plus du sujet | payload | payload, payload and metadata |
| metadata_keys | Clés de métadonnées envoyées | aucune | 20 au maximum |
| late | Voir ci-dessus | skip | skip, send |
Le récepteur reçoit l’événement automation.message avec topic, payload, originator, flowId, flowVersion, nodeId, actor et les métadonnées listées. out porte msg.metadata.webhook.deliveryId une fois mis en file. Erreurs : endpoint_not_found, endpoint_inactive, enqueue_failed, not_configured, node_not_ready, circuit_open, limit (webhooks non inclus dans votre offre). Voir Webhooks.
Emit event
Envoie un événement que Event déclenché avec la source flow entend, dans n’importe quel flux.
| Paramètre | Signification | Par défaut | Valeurs |
|---|---|---|---|
| kind | Le nom de l’événement | obligatoire | une lettre minuscule en premier, puis des lettres minuscules, des chiffres, _ et . ; 32 caractères au maximum |
| data | Ce qu’il transporte | msg.payload | tout type de valeur ; une valeur qui n’est pas un objet est encapsulée dans { "value": … } |
Les écouteurs reçoivent msg.payload = les données et msg.topic flow/<kind>. Erreurs : rate_limited, invalid_value (un kind invalide, ou « emit: depth » : la cinquième étape d’une chaîne). Un déploiement refuse une boucle qu’il peut voir (flow_cycle). Un message tardif n’émet rien.
Set variable
Stocke une valeur dans une variable de flux ou globale.
| Paramètre | Signification | Valeurs |
|---|---|---|
| path | La variable | flow.<name> ou global.<name>, clés plus profondes autorisées ; flow.persist:<name> pour le stockage persistant |
| value | Ce qu’il faut stocker | tout type de valeur ; rien (null) la supprime |
Erreurs : invalid_value, limit (stockage plein ; l’ancienne valeur reste). Limites : 1 MiB par flux, 4 MiB pour les variables globales. Dans un test, la copie propre au test est écrite.
Minuterie
Démarre, redémarre ou annule une minuterie nommée. À échéance, chaque déclencheur Minuterie nommée portant ce nom se déclenche.
| Réglage | Signification | Valeur par défaut | Valeurs |
|---|---|---|---|
| name | La minuterie, partagée par tous les flux | obligatoire | |
| op | Démarrer (à nouveau) ou annuler | start | start, cancel |
| ms | Durée (msg.ms la remplace) | 1 min | 0 à 7 jours |
Démarrer une minuterie en cours la redémarre à zéro : le schéma de chien de garde. Erreur queue_full « too many timers » : l’organisation détient 64 minuteries de 60 s ou moins, ou 10 000 plus longues. Un message tardif ne démarre ni n’annule rien.
Activer ou désactiver un flux
Active ou désactive un autre flux, comme le commutateur de la liste des flux.
| Réglage | Signification | Valeur par défaut | Valeurs |
|---|---|---|---|
| flow | Le flux | obligatoire | un flux déployé de l’organisation, autre que celui-ci |
| state | Activer ou désactiver | enable | enable, disable |
out transporte msg.metadata.flow_enable { flow, enabled, changed }. Erreurs : not_configured, self_reference, not_found, not_approved, conflict, invalid, limit (plus de 6 commutations par minute). Déployer un flux contenant ce bloc exige la confirmation saisie.
Exécuter un flux
Transmet le message à l’Entrée de flux d’un autre flux et termine cette branche.
| Réglage | Signification | Valeurs |
|---|---|---|
| flow | Le flux à exécuter | un autre flux du même hôte ; jamais un flux racine |
Pas de port out ; rien ne revient. Erreurs : not_configured, invalid_value (absent, désactivé ou arrêté), forbidden (une racine), loop (cinquième saut). Un flux que d’autres flux exécutent ne peut pas être supprimé tant que ces blocs ne sont pas retirés. Le message conserve son appareil, donc Enregistrer la télémétrie fonctionne dans le flux cible.
Sortie de liaison
Transmet le message aux blocs Entrée de liaison par leur nom, ou renvoie la réponse à un Appel de liaison.
| Réglage | Signification | Valeur par défaut | Valeurs |
|---|---|---|---|
| mode | link (vers des blocs Entrée de liaison) ou return (répondre à l’appelant) | link | link, return |
| targets | Noms des Entrées de liaison (mode link) | vide | jusqu’à 16 |
| name | Le nom du retour (mode return) | out | un retour déclaré par l’appelant |
Pas de port out. Une cible absente est un avertissement dans le panneau de débogage, non une erreur. Un déploiement refuse les noms inconnus et les boucles sans bloc d’attente (cycle_sync).
Journal système
Écrit une ligne dans le journal du flux (Activité > Événements > Journal, conservé 24 heures).
| Réglage | Signification | Valeur par défaut | Valeurs |
|---|---|---|---|
| text | La ligne, avec des espaces réservés {{ }} | {{ msg.payload }} | jusqu’à 512 caractères |
| level | Priorité | info | info, notice, warn, err |
Débogage
Affiche les messages qui lui parviennent dans l’onglet Activité > Débogage de l’éditeur. Pas de port out.
| Réglage | Signification | Valeur par défaut | Valeurs |
|---|---|---|---|
| property | Ce qu’il faut afficher | msg.payload | msg (le message entier) ou un chemin |
| active | Afficher les messages | on | on, off |
Les entrées de débogage sont conservées 24 heures et sont visibles des personnes autorisées à déboguer. Le bouton du bloc les active et désactive sans enregistrer.
Écrire dans une base de données de séries temporelles externe
Un bloc écrit un point par message dans un serveur de base de données de séries temporelles externe qui vous appartient, via une connexion au serveur de base de données. Réglages : le serveur, le bucket ou la base, la mesure, jusqu’à 16 tags, 1 à 32 champs (avec un type : auto, float, int, string, bool), l’heure (par défaut : l’heure de la première tentative, identique à chaque nouvelle tentative), timeout_ms (1 000 à 30 000), les nouvelles tentatives et late. out transporte msg.metadata avec la mesure, les champs et les tags écrits. Pour une intégration générale, le bloc Requête HTTP vers votre propre API est souvent plus simple.

