TapHome

Skripte in smart rules und Benachrichtigungen

Was die smart rules Gleichung, Formel und Skript, die Begrenzungsbedingung Formel und Benachrichtigungsskripte an ein Skript übergeben und mit seinem Ergebnis tun: LastState, TriggerName, Ausgänge, Fehler und SLEEP.

Überblick

Smart rules übergeben ihrem Skript die Werte der als Variablen ausgewählten Geräte unter deren Abkürzungen und verwenden das Ergebnis auf unterschiedliche Weise:

Wo das Skript läuftWas das Ergebnis bewirktLastStateTriggerName
Smart rule GleichungTRUE führt die Aktionen für „wahr“ aus, FALSE die Aktionen für „falsch“Vorheriges Ergebnis, anfangs FALSEJa
Smart rule FormelWird in jede Ausgangsvariable geschriebenVorheriges Ergebnis, anfangs NullJa
Smart rule SkriptZuweisungen an Lese-/Schreibvariablen werden zu GeräteaktionenNeinJa
Begrenzungsbedingung FormelTRUE lässt die smart rule laufenNeinNein
Benachrichtigung — Titel und NachrichtDer Text der BenachrichtigungNeinNur Aktionen der Gleichung

SLEEP wird in allen Skripten von smart rules und Benachrichtigungen mit SLEEP function not allowed in this context. abgelehnt. Die einzige Ausnahme ist die Begrenzungsbedingung Formel, die es akzeptiert; verwenden Sie es auch dort nicht, denn es hält die Auswertung der smart rules auf. ADDERROR, ADDWARNING und ADDINFO schlagen hier mit ADDERROR function not supported here. fehl; sie funktionieren nur in Geräteskripten.

Smart rule Gleichung

Die smart rule Gleichung wertet ihr Skript jedes Mal aus, wenn sich eine ihrer Variablen ändert, nach dem Speichern und nach dem Start der Steuereinheit Core. Das Ergebnis wird als boolescher Wert gelesen, wobei eine Zahl ungleich null TRUE ist. Aktionen werden nur ausgeführt, wenn sich das Ergebnis ändert; einmalige Aktionen und Benachrichtigungen lösen also einmal pro Änderung aus.

  • Ein Ergebnis Null oder ein Skriptfehler gibt die Geräte frei, die die smart rule steuert; das nächste Ergebnis TRUE oder FALSE wendet ihre Aktionen wieder an. Ein Textergebnis wird als Fehler der Formel gemeldet.
  • LastState ist das vorherige Ergebnis des Skripts, FALSE beim ersten Durchlauf und nach einem Ergebnis Null oder einem Fehler.
  • TriggerName ist die Abkürzung der Variablen, deren Änderung die Auswertung ausgelöst hat, leer nach dem Speichern oder einem Neustart. Verfügbar ab Core 2026.1, Build 35936.

Ein Licht, das unter 20 lx einschaltet und bis 60 lx eingeschaltet bleibt:

(!LastState AND Li < 20) OR (LastState AND Li < 60);
# Result: TRUE below 20, then TRUE until Li reaches 60

Dieselbe Konfiguration Schritt für Schritt steht in Konfiguration mit LastState.

Smart rule Formel

Die smart rule Formel schreibt das Ergebnis ihres Skripts in jede Ausgangsvariable. Unter „Auswertungsmodus“ wählen Sie, wann sie läuft: „Wenn sich eine der Eingabevariablen geändert hat“ oder „Bei benutzerdefiniertem Ereignis“, wobei nur die Trigger der smart rule sie starten und die Variablen nur gelesen werden.

  • Das Ergebnis darf jeden Typ haben, den der Ausgang akzeptiert. Auch ein Ergebnis Null wird geschrieben.
  • LastState ist das vorherige Ergebnis. Es ist Null beim ersten Durchlauf und nach einem Skriptfehler; sichern Sie es also ab, bevor Sie es in der Arithmetik verwenden.
  • TriggerName ist die Abkürzung der Eingangsvariablen, die sich geändert hat, oder der Name des ausgelösten Triggers.
  • Ein fehlendes Gerät wird als Null gelesen; prüfen Sie solche Eingänge mit ISNULL.

Zählen von Türöffnungen im Modus mit benutzerdefiniertem Ereignis (der Trigger ist das Öffnen des Türkontakts):

IF(ISNULL(LastState), 0, LastState) + 1;
# Result: 1 on the first run, then 2, 3 and so on

Ein Thermostat mit HYSTERESIS verwendet dieselbe Absicherung:

HYSTERESIS(Se, 23, 21, 0, 1, IF(ISNULL(LastState), 0, LastState));

Smart rule Skript

Die smart rule Skript hat zwei Listen von Variablen, „Schreibgeschützte Variablen“ und „Lese-/Schreibvariablen“. Eine Zuweisung an eine Lese-/Schreibvariable erzeugt eine Geräteaktion; mehrere Zuweisungen an ein Gerät werden zu einer Aktion zusammengefasst. Der Editor zeigt „Das Skript muss mindestens eine Zuweisung enthalten.“, bis das Skript := enthält.

IF Se > 25
    Mu := 1;
ELSE
    Mu := 0;
END
  • Sie läuft im Modus „Eine der schreibgeschützten Variablen ändert sich“ oder „Bei benutzerdefiniertem Ereignis“.
  • Nur die in diesem Durchlauf zugewiesenen Variablen werden geschrieben. Wenn die smart rule ihre Aktionen hält, gibt ein Durchlauf, der nur einigen Lese-/Schreibvariablen einen Wert zuweist, die übrigen frei, und ein Durchlauf ohne jede Zuweisung gibt alle frei. Dann übernimmt eine smart rule mit niedrigerer Priorität oder der Standardwert. Weisen Sie in jedem Zweig jedem Ausgang einen Wert zu, wie im Beispiel oben.
  • Ein Skriptfehler gibt jeden gehaltenen Ausgang frei. Ein Wert des falschen Typs für ein Gerät verwirft den ganzen Durchlauf, einschließlich der Zuweisungen davor.
  • TriggerName ist die Abkürzung der schreibgeschützten Variablen, die sich geändert hat. TriggerName bleibt leer, wenn keine schreibgeschützte Variable als Trigger markiert ist. Bei benutzerdefinierten Ereignissen ist es der Name des ausgelösten Triggers. Das Skript kann ihm auch einen Wert zuweisen.
  • Es gibt kein LastState.

Begrenzungsbedingung Formel

Der Typ Formel einer Begrenzungsbedingung wertet ein Skript über ihre eigenen Variablen aus. TRUE lässt die smart rule laufen; FALSE, Null oder ein Skriptfehler blockiert sie.

Te < 22 AND Hu < 70;

Benachrichtigungsskripte

Titel und Nachricht einer Benachrichtigung sind Skripte, die Text zurückgeben müssen. Sie können die für die Benachrichtigung ausgewählten Geräte lesen sowie die Benachrichtigungskonstanten, die unter Kontextkonstanten aufgeführt sind.

"Temperature in " + LocationName + " is " + TOSTRING(Te, "F1") + " °C";