Skripty v smart rules a notifikáciách
Čo smart rules typu Rovnica, Vzorec a Skript, obmedzujúca podmienka typu Vzorec a skripty notifikácií odovzdávajú skriptu a čo robia s jeho výsledkom: LastState, TriggerName, výstupy, chyby a SLEEP.
Prehľad
Smart rules odovzdávajú svojmu skriptu hodnoty zariadení vybraných ako premenné, pod ich skratkami, a výsledok používajú rôznymi spôsobmi:
| Kde skript beží | Čo robí výsledok | LastState | TriggerName |
|---|---|---|---|
| Smart rule typu Rovnica | TRUE spustí akcie pre pravdu, FALSE akcie pre nepravdu | Predchádzajúci výsledok, na začiatku FALSE | Áno |
| Smart rule typu Vzorec | Zapíše sa do každej výstupnej premennej | Predchádzajúci výsledok, na začiatku Null | Áno |
| Smart rule typu Skript | Priradenia do premenných na čítanie a zápis sa stanú akciami na zariadeniach | Nie | Áno |
| Obmedzujúca podmienka typu Vzorec | TRUE dovolí smart rule bežať | Nie | Nie |
| Notifikácia, názov a text | Text notifikácie | Nie | Iba akcie Rovnice |
SLEEP je vo všetkých skriptoch smart rules a notifikácií odmietnutý chybou SLEEP function not allowed in this context. Jedinou výnimkou je obmedzujúca podmienka typu Vzorec, ktorá ho prijme; ani tam ho však nepoužívajte, pretože zdrží vyhodnocovanie smart rules. ADDERROR, ADDWARNING a ADDINFO tu skončia chybou ADDERROR function not supported here.; fungujú iba v skriptoch zariadení.
Smart rule typu Rovnica
Smart rule typu Rovnica vyhodnotí svoj skript vždy, keď sa zmení niektorá z jeho premenných, po uložení a po štarte Core. Výsledok sa číta ako boolovská hodnota, pričom nenulové číslo je TRUE. Akcie sa vykonajú iba pri zmene výsledku, takže jednorazové akcie a notifikácie sa spustia raz pri každej zmene.
- Výsledok
Nullalebo chyba skriptu uvoľní zariadenia, ktoré smart rule ovláda; ďalší výsledokTRUEaleboFALSEznova uplatní svoje akcie. Textový výsledok sa hlási ako chyba vzorca. LastStateje predchádzajúci výsledok skriptu,FALSEpri prvom behu a po výsledkuNullalebo po chybe.TriggerNameje skratka premennej, ktorej zmena vyvolala vyhodnotenie; po uložení alebo reštarte je prázdny. Dostupné od Core 2026.1, build 35936.
Svetlo, ktoré sa zapne pod 20 lx a ostane zapnuté až do 60 lx:
(!LastState AND Li < 20) OR (LastState AND Li < 60);
# Result: TRUE below 20, then TRUE until Li reaches 60Rovnaká konfigurácia krok za krokom je v časti Konfigurácia pomocou LastState.
Smart rule typu Vzorec
Smart rule typu Vzorec zapíše výsledok svojho skriptu do každej výstupnej premennej. V nastavení „Vyhodnocovací režim“ zvolíte, kedy sa spustí: „Keď sa zmenila ktorákoľvek zo vstupných premenných“, alebo „Na vlastnú udalosť“, keď ho spúšťajú iba triggery smart rule a premenné sa iba čítajú.
- Výsledok môže byť ľubovoľného typu, ktorý výstup prijme. Zapíše sa aj výsledok
Null. LastStateje predchádzajúci výsledok. Pri prvom behu a po chybe skriptu jeNull, preto ho pred použitím v aritmetike ošetrite.TriggerNameje skratka vstupnej premennej, ktorá sa zmenila, alebo názov triggera, ktorý sa spustil.- Chýbajúce zariadenie sa číta ako
Null; také vstupy kontrolujte funkciouISNULL.
Počítanie otvorení dverí v režime vlastnej udalosti (triggerom je otvorenie dverového kontaktu):
IF(ISNULL(LastState), 0, LastState) + 1;
# Result: 1 on the first run, then 2, 3 and so onTermostat s funkciou HYSTERESIS používa rovnaké ošetrenie:
HYSTERESIS(Se, 23, 21, 0, 1, IF(ISNULL(LastState), 0, LastState));Smart rule typu Skript
Smart rule typu Skript má dva zoznamy premenných, „Premenné iba na čítanie“ a „Premenné na čítanie a zápis“. Priradenie do premennej na čítanie a zápis vytvorí akciu na zariadení; viac priradení do jedného zariadenia sa zlúči do jednej akcie. Editor zobrazuje „Skript musí obsahovať aspoň jedno priradenie.“, kým skript neobsahuje :=.
IF Se > 25
Mu := 1;
ELSE
Mu := 0;
END- Spúšťa sa v režime „Zmení sa ktorákoľvek z premenných iba na čítanie“ alebo „Na vlastnú udalosť“.
- Zapíšu sa iba premenné priradené v danom behu. Keď smart rule drží svoje akcie, beh, ktorý priradí iba niektoré premenné na čítanie a zápis, ostatné uvoľní, a beh, ktorý nepriradí žiadnu, uvoľní všetky. Riadenie potom prevezme smart rule s nižšou prioritou alebo predvolená hodnota. Priraďte každý výstup v každej vetve, ako v príklade vyššie.
- Chyba skriptu uvoľní všetky držané výstupy. Hodnota nesprávneho typu pre zariadenie zahodí celý beh vrátane priradení pred ňou.
TriggerNameje skratka premennej iba na čítanie, ktorá sa zmenila. Ostáva prázdny, keď žiadna premenná iba na čítanie nie je označená ako „Spúšťač“. Pri vlastných udalostiach je to názov triggera, ktorý sa spustil. Skript doň môže aj priradiť.LastStateneexistuje.
Obmedzujúca podmienka typu Vzorec
Typ Vzorec obmedzujúcej podmienky vyhodnotí skript nad vlastnými premennými. TRUE dovolí smart rule bežať; FALSE, Null alebo chyba skriptu ho zablokuje.
Te < 22 AND Hu < 70;Skripty notifikácií
Názov a text notifikácie sú skripty, ktoré musia vrátiť text. Môžu čítať zariadenia vybrané pre notifikáciu a konštanty notifikácií uvedené v časti Kontextové konštanty.
"Temperature in " + LocationName + " is " + TOSTRING(Te, "F1") + " °C";