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äuft | Was das Ergebnis bewirkt | LastState | TriggerName |
|---|---|---|---|
| Smart rule Gleichung | TRUE führt die Aktionen für „wahr“ aus, FALSE die Aktionen für „falsch“ | Vorheriges Ergebnis, anfangs FALSE | Ja |
| Smart rule Formel | Wird in jede Ausgangsvariable geschrieben | Vorheriges Ergebnis, anfangs Null | Ja |
| Smart rule Skript | Zuweisungen an Lese-/Schreibvariablen werden zu Geräteaktionen | Nein | Ja |
| Begrenzungsbedingung Formel | TRUE lässt die smart rule laufen | Nein | Nein |
| Benachrichtigung — Titel und Nachricht | Der Text der Benachrichtigung | Nein | Nur 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
Nulloder ein Skriptfehler gibt die Geräte frei, die die smart rule steuert; das nächste ErgebnisTRUEoderFALSEwendet ihre Aktionen wieder an. Ein Textergebnis wird als Fehler der Formel gemeldet. LastStateist das vorherige Ergebnis des Skripts,FALSEbeim ersten Durchlauf und nach einem ErgebnisNulloder einem Fehler.TriggerNameist 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 60Dieselbe 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
Nullwird geschrieben. LastStateist das vorherige Ergebnis. Es istNullbeim ersten Durchlauf und nach einem Skriptfehler; sichern Sie es also ab, bevor Sie es in der Arithmetik verwenden.TriggerNameist die Abkürzung der Eingangsvariablen, die sich geändert hat, oder der Name des ausgelösten Triggers.- Ein fehlendes Gerät wird als
Nullgelesen; prüfen Sie solche Eingänge mitISNULL.
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 onEin 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.
TriggerNameist die Abkürzung der schreibgeschützten Variablen, die sich geändert hat.TriggerNamebleibt 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";