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

Blocs de condition

Référence de Compare, Any / all of, If / else, In range, Device state, Changed, Not repeated et Happened n times, ainsi que les valeurs et expressions.

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églageSignificationDéfautValeurs
propriétéCe qui est testémsg.payloadun chemin msg., flow., global. ou sys.
opLa comparaisoneqvoir les opérateurs ci-dessous
valeurValeur à laquelle elle est comparéevidetout 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érateurVrai 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, geInfé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.
containsLe texte contient la valeur ; un tableau a un élément égal ; un objet a une clé de ce nom
regexLe texte (ou un nombre sous forme de texte) correspond au motif : sensible à la casse, 64 caractères maximum
true, falseExactement le booléen true / false (ni 1, ni "true")
nullAbsent ou null
empty, nemptynull, "", [] ou {} / autre valeur
typeLe 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églageSignificationDéfautValeurs
modeComment les lignes sont reliéesanyany (ou), all (et)
élémentsUne comparaison par ligne : propriété, op, valeuraucunjusqu’à 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églageSignificationValeurs
exprL’expressionobligatoire, 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églageSignificationDéfautValeurs
propriétéLe nombremsg.payloadun chemin
minLimite basse, incluse ; vide = aucunevideun nombre
maxLimite haute, incluse ; vide = aucunevideun nombre
hystDe combien la valeur doit dépasser une limite pour que la réponse change00 ou plus
cléUne mémoire distincte par valeur de ce cheminmsg.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églageSignificationDéfautValeurs
cheminCe qui est testé, p. ex. flow.mode, global.persist:countobligatoireun chemin sys., flow. ou global.
opLa comparaisoneqcomme ci-dessus
valeurValeur à laquelle elle est comparéevidetout 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églageSignificationDéfautValeurs
propriétéLa valeur surveilléemsg.payloadun chemin
cléUne dernière valeur distincte par valeur de ce cheminmsg.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églageSignificationDéfautValeurs
Période (window_ms)Durée pendant laquelle la clé est retenue après un yes1 hde 0 à 7 jours ; 0 laisse tout passer
cléClés comptées séparémentmsg.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églageSignificationDéfautValeurs
nCombien de fois31 à 1 000
Période (window_ms)Fenêtre glissante10 min1 ms à 7 jours
cléClés comptées séparémentmsg.originator (une par appareil)un chemin
reset_on_yesRepartir de zéro après un yesoffon, 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 :

TypeExempleSignification
Nombre, Texte, Oui / non, JSON30, "alarm", true, {"on": true}Une valeur fixe
Variable (chemin)msg.payload.level, flow.limit, global.persist:site.maxLue à l’exécution du bloc
Expressionmsg.payload.a + msg.payload.bCalculée pour chaque message
Variable d’environnementUne valeur de l’environnement
Heure couranteL’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.msgType et msg.originator sont en lecture seule.
  • flow.… : variables de ce flux. global.… : variables partagées par tous les flux de l’organisation. Ajoutez persist: 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émentDisponible
Valeursnombres, "texte", true, false, null, [tableaux], {objets}, chemins
Opérateurs?: || && == != < <= > >= in + - * / % !
Fonctions numériquesabs, 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 textestring, len, lower, upper, trim, substr, replace, split, join, contains, starts, ends, matches
Autreskeys, has, now, fmt_time, typeof, exists, default(x, fallback), empty
  • == compare les nombres numériquement et le reste par type et par valeur ; < et > avec null valent faux.
  • Une opération arithmétique sur du texte échoue avec type, même sur du texte numérique : écrivez number(msg.payload).
  • {{ expression }} dans les champs de texte (modèles) insère une valeur : Niveau {{ msg.payload.level }} %.