Ein Bedingungsblock prüft etwas und sendet die Nachricht unverändert über seinen yes– oder no-Ausgang. Damit filtern und verzweigen Sie. Alle Bedingungsblöcke haben außerdem einen error-Ausgang für eine Prüfung, die nicht durchgeführt werden konnte. Diese Seite listet die Blöcke so auf, wie sie definiert sind, und erklärt danach die Werte, Pfade und Ausdrücke, die sie verwenden.
Vergleichen
Vergleicht eine Eigenschaft mit einem Wert.
| Einstellung | Bedeutung | Standard | Werte |
|---|---|---|---|
| Eigenschaft | Was geprüft wird | msg.payload | ein Pfad msg., flow., global. oder sys. |
| op | Der Vergleich | eq | siehe die Operatoren unten |
| Wert | Womit verglichen wird | leer | beliebige Wertart; nicht angezeigt für true, false, null, empty, nempty |
Eine fehlende Eigenschaft zählt als null: gt 30 ist dann falsch. Fehler: invalid_value (ein ungültiges Muster oder ein ungültiger Operator) oder der Code eines Wertes, der nicht ermittelt werden konnte.
Operatoren
Gemeinsam genutzt von Vergleichen, Beliebige / alle von, Gerätezustand und Schalter:
| Operator | Wahr, wenn |
|---|---|
eq, ne | Gleich, ungleich. Eine Zahl und eine Zahl oder numerischer Text werden als Zahlen verglichen ("5" ist gleich 5, true zählt als 1); alles andere wird inhaltlich als JSON verglichen. |
lt, le, gt, ge | Kleiner, kleiner oder gleich, größer, größer oder gleich. Zahlen und numerischer Text als Zahlen; zwei Texte alphabetisch; jede andere Mischung ist falsch. |
contains | Text enthält den Wert; ein Array hat ein gleiches Element; ein Objekt hat einen Schlüssel mit diesem Namen |
regex | Text (oder eine Zahl als Text) passt zum Muster: Groß- und Kleinschreibung wird beachtet, höchstens 64 Zeichen |
true, false | Genau der Boolesche Wert true / false (nicht 1, nicht "true") |
null | Fehlend oder null |
empty, nempty | null, "", [] oder {} / alles andere |
type | Der Typ ist number, string, boolean, array, object oder null |
Muster dürfen keine Lookahead- oder Lookbehind-Ausdrücke und keine Rückverweise verwenden; ein solches Muster wird beim Deployment abgelehnt (regex_unsupported).
Beliebige / alle von
Bis zu 8 Vergleiche, verbunden mit „oder“ oder „und“.
| Einstellung | Bedeutung | Standard | Werte |
|---|---|---|---|
| mode | Wie die Zeilen verbunden werden | any | any (oder), all (und) |
| Einträge | Ein Vergleich pro Zeile: Eigenschaft, op, Wert | keine | bis zu 8 Zeilen |
Zeilen werden der Reihe nach geprüft, und die Prüfung endet, sobald das Ergebnis feststeht. Ohne Zeilen ist any falsch und all wahr.
Wenn / sonst
Wahr, wenn ein Ausdruck wahr ist.
| Einstellung | Bedeutung | Werte |
|---|---|---|
| expr | Der Ausdruck | erforderlich, bis zu 512 Zeichen |
no, wenn das Ergebnis false, null, 0, "" oder keine Zahl ist; ein leeres Array oder Objekt zählt als wahr. Fehler: invalid_value (kompiliert nicht), type, div_zero, steps, regex, limit.
Beispiel: msg.payload.temperature > 30 && flow.mode == "auto".
Im Bereich
Ist eine Zahl zwischen einem Minimum und einem Maximum, mit optionaler Hysterese.
| Einstellung | Bedeutung | Standard | Werte |
|---|---|---|---|
| Eigenschaft | Die Zahl | msg.payload | ein Pfad |
| min | Untergrenze, einschließlich; leer = keine | leer | eine Zahl |
| max | Obergrenze, einschließlich; leer = keine | leer | eine Zahl |
| hyst | Wie weit ein Grenzwert überschritten werden muss, bevor sich die Antwort ändert | 0 | 0 oder mehr |
| key | Ein eigener Speicher pro Wert dieses Pfads | msg.originator (einer pro Gerät) | ein Pfad |
Solange der Wert innen liegt, bleibt die Antwort yes, bis der Wert unter min − hyst fällt oder über max + hyst steigt; außerhalb wird die Antwort nur innerhalb von min + hyst … max − hyst wieder yes. Keine Zahl: no, Speicher unverändert.
Gerätezustand
Prüft eine gespeicherte Variable (flow., global.) oder einen Plattformwert (sys.) statt der Nachricht. Die Nachricht bestimmt nur, wann die Prüfung erfolgt.
| Einstellung | Bedeutung | Standard | Werte |
|---|---|---|---|
| Pfad | Was geprüft wird, z. B. flow.mode, global.persist:count | erforderlich | ein Pfad sys., flow. oder global. |
| op | Der Vergleich | eq | wie oben |
| Wert | Womit verglichen wird | leer | beliebige Wertart |
Geändert
yes, wenn sich eine Eigenschaft von ihrem Wert in der vorherigen Nachricht mit demselben Key unterscheidet; die erste Nachricht eines Keys ist yes.
| Einstellung | Bedeutung | Standard | Werte |
|---|---|---|---|
| Eigenschaft | Der beobachtete Wert | msg.payload | ein Pfad |
| key | Ein eigener letzter Wert pro Wert dieses Pfads | msg.originator (einer pro Gerät) | ein Pfad |
Werte werden als JSON-Text verglichen: 5 und "5" unterscheiden sich.
Nicht wiederholt
yes nur, wenn innerhalb des Zeitraums nichts mit demselben Key durch yes gelaufen ist.
| Einstellung | Bedeutung | Standard | Werte |
|---|---|---|---|
Zeitraum (window_ms) | Wie lange nach einem yes der Key zurückgehalten wird | 1 h | 0 bis 7 Tage; 0 lässt alles durch |
| key | Getrennt gezählte Keys | msg.originator (einer pro Gerät) | ein Pfad |
Nur ein yes startet den Zeitraum; bei einem Zeitraum von 1 Stunde ergibt ein gleichmäßiger Strom ein yes pro Stunde. Damit verhindern Sie wiederholte Benachrichtigungen.
Mehrfach aufgetreten
yes, wenn diese Nachricht innerhalb des Zeitraums mindestens n Nachrichten desselben Keys ergibt.
| Einstellung | Bedeutung | Standard | Werte |
|---|---|---|---|
| n | Wie oft | 3 | 1 bis 1.000 |
Zeitraum (window_ms) | Gleitendes Fenster | 10 min | 1 ms bis 7 Tage |
| key | Getrennt gezählte Keys | msg.originator (einer pro Gerät) | ein Pfad |
| reset_on_yes | Nach einem yes wieder bei null zu zählen beginnen | aus | an, aus |
Speicher der Bedingungsblöcke
In range, Changed, Not repeated und Happened n times speichern Werte pro Key. Auf Hermetry ist der Key standardmäßig der Originator der Nachricht, sodass jedes Gerät seinen eigenen Speicher hat; setzen Sie key auf msg.topic (oder einen anderen Pfad), um ihn anders zu teilen oder aufzuteilen. Jeder Block behält höchstens 10.000 Keys; darüber hinaus wird der älteste vergessen. Der Speicher überlebt Neustarts. Ein Deployment einer Änderung an den Einstellungen des Blocks startet seinen Speicher leer. Siehe Zähler, Statistiken und Watchdogs.
Werte, Pfade und Ausdrücke
Viele Einstellungen nehmen einen Wert einer dieser Arten an:
| Art | Beispiel | Bedeutung |
|---|---|---|
| Zahl, Text, Ja / Nein, JSON | 30, "alarm", true, {"on": true} | Ein fester Wert |
| Variable (Pfad) | msg.payload.level, flow.limit, global.persist:site.max | Wird beim Ausführen des Blocks gelesen |
| Ausdruck | msg.payload.a + msg.payload.b | Wird für jede Nachricht berechnet |
| Umgebungsvariable | Ein Wert der Umgebung | |
| Aktuelle Zeit | Die Zeit, zu der die Nachricht eintrifft |
Pfade
msg.…: die Nachricht. Felder, die mit_beginnen, gehören zur Engine und können nicht geschrieben werden;msg.msgTypeundmsg.originatorsind schreibgeschützt.flow.…: Variablen dieses Flows.global.…: Variablen, die allen Flows der Organisation gemeinsam sind. Fügen Siepersist:hinzu, um den persistenten Speicher zu nutzen (flow.persist:total). Der erste Schlüssel beginnt mit einem Buchstaben oder_und hat höchstens 32 Buchstaben, Ziffern oder_.sys.…: schreibgeschützte Plattformwerte.- Fehlende Pfade ergeben
null.
Ausdrücke
Bis zu 512 Zeichen, höchstens 10.000 Auswertungsschritte.
| Teil | Verfügbar |
|---|---|
| Werte | Zahlen, "Text", true, false, null, [Arrays], {Objekte}, Pfade |
| Operatoren | ?: || && == != < <= > >= in + - * / % ! |
| Zahlenfunktionen | abs, round(x, decimals), floor, ceil, min, max, clamp(x, lo, hi), sqrt, pow, number, int, fixed, sum, avg sowie trigonometrische und logarithmische Funktionen (sin, cos, asin, rad, log10 …) |
| Textfunktionen | string, len, lower, upper, trim, substr, replace, split, join, contains, starts, ends, matches |
| Sonstiges | keys, has, now, fmt_time, typeof, exists, default(x, fallback), empty |
==vergleicht Zahlen numerisch und alles andere nach Typ und Wert;<und>mitnullergeben false.- Arithmetik mit Text schlägt mit
typefehl, auch bei numerischem Text: Schreiben Sienumber(msg.payload). {{ expression }}in Textfeldern (Vorlagen) fügt einen Wert ein:Level {{ msg.payload.level }} %.

