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 skrypt | Co robi wynik | LastState | TriggerName |
|---|---|---|---|
| Smart rule Równanie | TRUE uruchamia akcje dla prawdy, FALSE akcje dla fałszu | Poprzedni wynik, na początku FALSE | Tak |
| Smart rule Formuła | Zapisywany do każdej zmiennej wyjściowej | Poprzedni wynik, na początku Null | Tak |
| Smart rule Skrypt | Przypisania do zmiennych do odczytu i zapisu stają się akcjami urządzeń | Nie | Tak |
| Warunek ograniczający Formuła | TRUE pozwala uruchomić smart rule | Nie | Nie |
| Tytuł i treść powiadomienia | Tekst powiadomienia | Nie | Tylko 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
Nulllub błąd skryptu zwalnia urządzenia sterowane przez regułę; następny wynikTRUElubFALSEponownie zastosuje swoje akcje. Wynik tekstowy jest zgłaszany jako błąd formuły. LastStateto poprzedni wynik skryptu,FALSEprzy pierwszym uruchomieniu oraz po wynikuNulllub błędzie.TriggerNameto 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 60Ta 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
Nullteż jest zapisywany. LastStateto poprzedni wynik. Przy pierwszym uruchomieniu i po błędzie skryptu jestNull, więc zabezpiecz go przed użyciem w arytmetyce.TriggerNameto 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 onTermostat 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.
TriggerNameto 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ść.LastStatenie 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";