Neu: Die KI-Firewall überwacht jedes Modul und erklärt jeden Vorfall in einfachen Worten. So funktioniert es

Bedingungsblöcke

Referenz zu Compare, Any / all of, If / else, In range, Device state, Changed, Not repeated und Happened n times sowie zu Werten und Ausdrücken.

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.

EinstellungBedeutungStandardWerte
EigenschaftWas geprüft wirdmsg.payloadein Pfad msg., flow., global. oder sys.
opDer Vergleicheqsiehe die Operatoren unten
WertWomit verglichen wirdleerbeliebige 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:

OperatorWahr, wenn
eq, neGleich, 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, geKleiner, kleiner oder gleich, größer, größer oder gleich. Zahlen und numerischer Text als Zahlen; zwei Texte alphabetisch; jede andere Mischung ist falsch.
containsText enthält den Wert; ein Array hat ein gleiches Element; ein Objekt hat einen Schlüssel mit diesem Namen
regexText (oder eine Zahl als Text) passt zum Muster: Groß- und Kleinschreibung wird beachtet, höchstens 64 Zeichen
true, falseGenau der Boolesche Wert true / false (nicht 1, nicht "true")
nullFehlend oder null
empty, nemptynull, "", [] oder {} / alles andere
typeDer 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“.

EinstellungBedeutungStandardWerte
modeWie die Zeilen verbunden werdenanyany (oder), all (und)
EinträgeEin Vergleich pro Zeile: Eigenschaft, op, Wertkeinebis 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.

EinstellungBedeutungWerte
exprDer Ausdruckerforderlich, 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.

EinstellungBedeutungStandardWerte
EigenschaftDie Zahlmsg.payloadein Pfad
minUntergrenze, einschließlich; leer = keineleereine Zahl
maxObergrenze, einschließlich; leer = keineleereine Zahl
hystWie weit ein Grenzwert überschritten werden muss, bevor sich die Antwort ändert00 oder mehr
keyEin eigener Speicher pro Wert dieses Pfadsmsg.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.

EinstellungBedeutungStandardWerte
PfadWas geprüft wird, z. B. flow.mode, global.persist:counterforderlichein Pfad sys., flow. oder global.
opDer Vergleicheqwie oben
WertWomit verglichen wirdleerbeliebige 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.

EinstellungBedeutungStandardWerte
EigenschaftDer beobachtete Wertmsg.payloadein Pfad
keyEin eigener letzter Wert pro Wert dieses Pfadsmsg.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.

EinstellungBedeutungStandardWerte
Zeitraum (window_ms)Wie lange nach einem yes der Key zurückgehalten wird1 h0 bis 7 Tage; 0 lässt alles durch
keyGetrennt gezählte Keysmsg.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.

EinstellungBedeutungStandardWerte
nWie oft31 bis 1.000
Zeitraum (window_ms)Gleitendes Fenster10 min1 ms bis 7 Tage
keyGetrennt gezählte Keysmsg.originator (einer pro Gerät)ein Pfad
reset_on_yesNach einem yes wieder bei null zu zählen beginnenausan, 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:

ArtBeispielBedeutung
Zahl, Text, Ja / Nein, JSON30, "alarm", true, {"on": true}Ein fester Wert
Variable (Pfad)msg.payload.level, flow.limit, global.persist:site.maxWird beim Ausführen des Blocks gelesen
Ausdruckmsg.payload.a + msg.payload.bWird für jede Nachricht berechnet
UmgebungsvariableEin Wert der Umgebung
Aktuelle ZeitDie 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.msgType und msg.originator sind schreibgeschützt.
  • flow.…: Variablen dieses Flows. global.…: Variablen, die allen Flows der Organisation gemeinsam sind. Fügen Sie persist: 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.

TeilVerfügbar
WerteZahlen, "Text", true, false, null, [Arrays], {Objekte}, Pfade
Operatoren?: || && == != < <= > >= in + - * / % !
Zahlenfunktionenabs, 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 …)
Textfunktionenstring, len, lower, upper, trim, substr, replace, split, join, contains, starts, ends, matches
Sonstigeskeys, has, now, fmt_time, typeof, exists, default(x, fallback), empty
  • == vergleicht Zahlen numerisch und alles andere nach Typ und Wert; < und > mit null ergeben false.
  • Arithmetik mit Text schlägt mit type fehl, auch bei numerischem Text: Schreiben Sie number(msg.payload).
  • {{ expression }} in Textfeldern (Vorlagen) fügt einen Wert ein: Level {{ msg.payload.level }} %.