Un bloc de condition teste une valeur et envoie le message, inchangé, sur sa sortie yes ou no. Utilisez-les pour filtrer et brancher. Tous les blocs de condition ont aussi une sortie error pour un test qui n’a pas pu être effectué. Cette page liste les blocs tels qu’ils sont définis, puis explique les valeurs, chemins et expressions qu’ils utilisent.
Compare
Compare une propriété à une valeur.
| Réglage | Signification | Défaut | Valeurs |
|---|---|---|---|
| propriété | Ce qui est testé | msg.payload | un chemin msg., flow., global. ou sys. |
| op | La comparaison | eq | voir les opérateurs ci-dessous |
| valeur | Valeur à laquelle elle est comparée | vide | tout type de valeur ; non affiché pour true, false, null, empty, nempty |
Une propriété absente compte comme null : gt 30 est alors faux. Erreurs : invalid_value (un motif ou un opérateur invalide), ou le code d’une valeur qui n’a pas pu être calculée.
Opérateurs
Partagés par Compare, Any / all of, Device state et Switch :
| Opérateur | Vrai quand |
|---|---|
eq, ne | Égal, différent. Un nombre et un nombre ou un texte numérique se comparent comme nombres ("5" est égal à 5, true compte comme 1) ; le reste se compare par contenu en JSON. |
lt, le, gt, ge | Inférieur, inférieur ou égal, supérieur, supérieur ou égal. Nombres et textes numériques comme nombres ; deux textes par ordre alphabétique ; tout autre mélange est faux. |
contains | Le texte contient la valeur ; un tableau a un élément égal ; un objet a une clé de ce nom |
regex | Le texte (ou un nombre sous forme de texte) correspond au motif : sensible à la casse, 64 caractères maximum |
true, false | Exactement le booléen true / false (ni 1, ni "true") |
null | Absent ou null |
empty, nempty | null, "", [] ou {} / autre valeur |
type | Le type est number, string, boolean, array, object ou null |
Les motifs ne peuvent pas utiliser lookahead, lookbehind ni back-references ; un tel motif est refusé au déploiement (regex_unsupported).
Any / all of
Jusqu’à 8 comparaisons reliées par « or » ou « and ».
| Réglage | Signification | Défaut | Valeurs |
|---|---|---|---|
| mode | Comment les lignes sont reliées | any | any (ou), all (et) |
| éléments | Une comparaison par ligne : propriété, op, valeur | aucun | jusqu’à 8 lignes |
Les lignes sont vérifiées dans l’ordre et la vérification s’arrête dès que la réponse est connue. Sans ligne, any est faux et all est vrai.
If / else
Vrai quand une expression est vraie.
| Réglage | Signification | Valeurs |
|---|---|---|
| expr | L’expression | obligatoire, 512 caractères maximum |
no quand le résultat est false, null, 0, "" ou non numérique ; un tableau ou objet vide compte comme vrai. Erreurs : invalid_value (ne compile pas), type, div_zero, steps, regex, limit.
Exemple : msg.payload.temperature > 30 && flow.mode == "auto".
Dans la plage
Indique si un nombre est compris entre un minimum et un maximum, avec hystérésis optionnelle.
| Réglage | Signification | Défaut | Valeurs |
|---|---|---|---|
| propriété | Le nombre | msg.payload | un chemin |
| min | Limite basse, incluse ; vide = aucune | vide | un nombre |
| max | Limite haute, incluse ; vide = aucune | vide | un nombre |
| hyst | De combien la valeur doit dépasser une limite pour que la réponse change | 0 | 0 ou plus |
| clé | Une mémoire distincte par valeur de ce chemin | msg.originator (une par appareil) | un chemin |
Une fois à l’intérieur, la réponse reste yes jusqu’à ce que la valeur passe sous min − hyst ou au-dessus de max + hyst ; une fois à l’extérieur, elle redevient yes seulement dans min + hyst … max − hyst. Pas un nombre : no, mémoire inchangée.
Device state
Teste une variable stockée (flow., global.) ou une valeur de la plateforme (sys.) au lieu du message. Le message décide seulement du moment où le test est effectué.
| Réglage | Signification | Défaut | Valeurs |
|---|---|---|---|
| chemin | Ce qui est testé, p. ex. flow.mode, global.persist:count | obligatoire | un chemin sys., flow. ou global. |
| op | La comparaison | eq | comme ci-dessus |
| valeur | Valeur à laquelle elle est comparée | vide | tout type de valeur |
Changé
yes quand une propriété diffère de sa valeur dans le message précédent de la même clé ; le premier message d’une clé donne yes.
| Réglage | Signification | Défaut | Valeurs |
|---|---|---|---|
| propriété | La valeur surveillée | msg.payload | un chemin |
| clé | Une dernière valeur distincte par valeur de ce chemin | msg.originator (une par appareil) | un chemin |
Les valeurs se comparent en texte JSON : 5 et "5" diffèrent.
Non répété
yes seulement si rien avec la même clé n’est passé par yes pendant la période.
| Réglage | Signification | Défaut | Valeurs |
|---|---|---|---|
Période (window_ms) | Durée pendant laquelle la clé est retenue après un yes | 1 h | de 0 à 7 jours ; 0 laisse tout passer |
| clé | Clés comptées séparément | msg.originator (une par appareil) | un chemin |
Seul un yes démarre la période ; avec une période de 1 heure, un flux constant donne un yes par heure. Utilisez-le pour éviter de répéter les notifications.
Survenu n fois
yes quand ce message atteint au moins n messages de même clé pendant la période.
| Réglage | Signification | Défaut | Valeurs |
|---|---|---|---|
| n | Combien de fois | 3 | 1 à 1 000 |
Période (window_ms) | Fenêtre glissante | 10 min | 1 ms à 7 jours |
| clé | Clés comptées séparément | msg.originator (une par appareil) | un chemin |
| reset_on_yes | Repartir de zéro après un yes | off | on, off |
Mémoire des blocs de condition
Dans la plage, Changé, Non répété et Survenu n fois mémorisent des valeurs par clé. Sur Hermetry, la clé vaut par défaut l’originator du message, donc chaque appareil a sa propre mémoire ; réglez key sur msg.topic (ou un autre chemin) pour la partager ou la séparer autrement. Chaque bloc conserve au plus 10 000 clés ; au-delà, la plus ancienne est oubliée. La mémoire survit aux redémarrages. Déployer une modification des réglages du bloc vide sa mémoire. Voir Counters, statistics and watchdogs.
Valeurs, chemins et expressions
Beaucoup de réglages acceptent une valeur de l’un de ces types :
| Type | Exemple | Signification |
|---|---|---|
| Nombre, Texte, Oui / non, JSON | 30, "alarm", true, {"on": true} | Une valeur fixe |
| Variable (chemin) | msg.payload.level, flow.limit, global.persist:site.max | Lue à l’exécution du bloc |
| Expression | msg.payload.a + msg.payload.b | Calculée pour chaque message |
| Variable d’environnement | Une valeur de l’environnement | |
| Heure courante | L’heure d’arrivée du message |
Chemins
msg.…: le message. Les champs commençant par_appartiennent au moteur et ne peuvent pas être écrits ;msg.msgTypeetmsg.originatorsont en lecture seule.flow.…: variables de ce flux.global.…: variables partagées par tous les flux de l’organisation. Ajoutezpersist:pour utiliser le stockage persistant (flow.persist:total). La première clé commence par une lettre ou_et compte au plus 32 lettres, chiffres ou_.sys.…: valeurs de plateforme en lecture seule.- Un chemin absent donne
null.
Expressions
512 caractères maximum, 10 000 étapes d’évaluation au plus.
| Élément | Disponible |
|---|---|
| Valeurs | nombres, "texte", true, false, null, [tableaux], {objets}, chemins |
| Opérateurs | ?: || && == != < <= > >= in + - * / % ! |
| Fonctions numériques | abs, round(x, decimals), floor, ceil, min, max, clamp(x, lo, hi), sqrt, pow, number, int, fixed, sum, avg, et fonctions trigonométriques et logarithmiques (sin, cos, asin, rad, log10 …) |
| Fonctions de texte | string, len, lower, upper, trim, substr, replace, split, join, contains, starts, ends, matches |
| Autres | keys, has, now, fmt_time, typeof, exists, default(x, fallback), empty |
==compare les nombres numériquement et le reste par type et par valeur ;<et>avecnullvalent faux.- Une opération arithmétique sur du texte échoue avec
type, même sur du texte numérique : écriveznumber(msg.payload). {{ expression }}dans les champs de texte (modèles) insère une valeur :Niveau {{ msg.payload.level }} %.

