TapHome

Skrypty w smart rules i powiadomieniach

Co smart rules Równanie, Formuła i Skrypt, warunek ograniczający Formuła i skrypty powiadomień przekazują skryptowi i co robią z jego wynikiem: LastState, TriggerName, wyjścia, błędy i SLEEP.

Przegląd

Smart rules przekazują swojemu skryptowi wartości urządzeń wybranych jako zmienne, pod ich skrótami, a wynik wykorzystują na różne sposoby:

Gdzie działa skryptCo robi wynikLastStateTriggerName
Smart rule RównanieTRUE uruchamia akcje dla prawdy, FALSE akcje dla fałszuPoprzedni wynik, na początku FALSETak
Smart rule FormułaZapisywany do każdej zmiennej wyjściowejPoprzedni wynik, na początku NullTak
Smart rule SkryptPrzypisania do zmiennych do odczytu i zapisu stają się akcjami urządzeńNieTak
Warunek ograniczający FormułaTRUE pozwala uruchomić smart ruleNieNie
Tytuł i treść powiadomieniaTekst powiadomieniaNieTylko akcje Równania

SLEEP jest odrzucany we wszystkich skryptach smart rules i powiadomień komunikatem SLEEP function not allowed in this context. Jedynym wyjątkiem jest warunek ograniczający Formuła, który go przyjmuje; nie używaj go jednak i tam, bo wstrzymuje obliczanie smart rules. ADDERROR, ADDWARNING i ADDINFO kończą się tu błędem ADDERROR function not supported here.; działają tylko w skryptach urządzeń.

Smart rule Równanie

Smart rule Równanie oblicza swój skrypt przy każdej zmianie którejś ze swoich zmiennych, po zapisaniu i po starcie jednostki sterującej Core. Wynik jest odczytywany jako wartość logiczna, w której liczba różna od zera to TRUE. Akcje uruchamiają się tylko przy zmianie wyniku, więc jednorazowe akcje i powiadomienia zadziałają raz na zmianę.

  • Wynik Null lub błąd skryptu zwalnia urządzenia sterowane przez regułę; następny wynik TRUE lub FALSE ponownie zastosuje swoje akcje. Wynik tekstowy jest zgłaszany jako błąd formuły.
  • LastState to poprzedni wynik skryptu, FALSE przy pierwszym uruchomieniu oraz po wyniku Null lub błędzie.
  • TriggerName to skrót zmiennej, której zmiana spowodowała obliczenie, pusty po zapisaniu lub restarcie. Dostępne od Core 2026.1, kompilacja 35936.

Światło, które włącza się poniżej 20 lx i pozostaje włączone do 60 lx:

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

Ta sama konfiguracja krok po kroku jest opisana w Konfiguracja z użyciem LastState.

Smart rule Formuła

Smart rule Formuła zapisuje wynik swojego skryptu do każdej zmiennej wyjściowej. W polu Tryb obliczania wybierasz, kiedy reguła działa: Gdy uległa zmianie którakolwiek ze zmiennych wejściowych albo Przy niestandardowym zdarzeniu, gdzie uruchamiają ją tylko wyzwalacze reguły, a zmienne są jedynie odczytywane.

  • Wynik może mieć dowolny typ, który przyjmuje wyjście. Wynik Null też jest zapisywany.
  • LastState to poprzedni wynik. Przy pierwszym uruchomieniu i po błędzie skryptu jest Null, więc zabezpiecz go przed użyciem w arytmetyce.
  • TriggerName to skrót zmiennej wejściowej, która się zmieniła, albo nazwa wyzwalacza, który zadziałał.
  • Brakujące urządzenie odczytuje się jako Null; takie wejścia sprawdzaj funkcją ISNULL.

Liczenie otwarć drzwi w trybie niestandardowego zdarzenia (wyzwalaczem jest otwarcie kontaktu drzwi):

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

Termostat z HYSTERESIS używa tego samego zabezpieczenia:

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

Smart rule Skrypt

Smart rule Skrypt ma dwie listy zmiennych: Zmienne tylko do odczytu i Zmienne do odczytu i zapisu. Przypisanie do zmiennej do odczytu i zapisu tworzy akcję urządzenia; kilka przypisań do jednego urządzenia łączy się w jedną akcję. Dopóki skrypt nie zawiera :=, edytor pokazuje komunikat Skrypt musi zawierać co najmniej jedno przypisanie.

IF Se > 25
    Mu := 1;
ELSE
    Mu := 0;
END
  • Uruchamia się, gdy: Dowolna zmienna tylko do odczytu ulegnie zmianie albo Przy niestandardowym zdarzeniu.
  • Zapisywane są tylko zmienne przypisane w tym uruchomieniu. Gdy reguła utrzymuje swoje akcje, uruchomienie, które przypisuje tylko część zmiennych do odczytu i zapisu, zwalnia pozostałe, a uruchomienie bez żadnego przypisania zwalnia wszystkie. Sterowanie przejmuje wtedy reguła o niższym priorytecie albo wartość domyślna. Przypisuj każde wyjście w każdej gałęzi, jak w przykładzie powyżej.
  • Błąd skryptu zwalnia wszystkie utrzymywane wyjścia. Wartość niewłaściwego typu dla urządzenia odrzuca całe uruchomienie, łącznie z wcześniejszymi przypisaniami.
  • TriggerName to skrót zmiennej tylko do odczytu, która się zmieniła. Pozostaje pusty, gdy żadna zmienna tylko do odczytu nie jest oznaczona jako wyzwalacz. Przy niestandardowych zdarzeniach to nazwa wyzwalacza, który zadziałał. Skrypt może też do niego przypisać wartość.
  • LastState nie istnieje.

Warunek ograniczający Formuła

Typ Formuła warunku ograniczającego oblicza skrypt nad własnymi zmiennymi. TRUE pozwala uruchomić smart rule; FALSE, Null lub błąd skryptu ją blokuje.

Te < 22 AND Hu < 70;

Skrypty powiadomień

Tytuł i treść powiadomienia to skrypty, które muszą zwrócić tekst. Mogą odczytywać urządzenia wybrane dla powiadomienia oraz stałe powiadomień wymienione w Stałe kontekstu.

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