TapHome

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ýsledokLastStateTriggerName
Smart rule typu RovnicaTRUE spustí akcie pre pravdu, FALSE akcie pre nepravduPredchádzajúci výsledok, na začiatku FALSEÁno
Smart rule typu VzorecZapíše sa do každej výstupnej premennejPredchádzajúci výsledok, na začiatku NullÁno
Smart rule typu SkriptPriradenia do premenných na čítanie a zápis sa stanú akciami na zariadeniachNieÁno
Obmedzujúca podmienka typu VzorecTRUE dovolí smart rule bežaťNieNie
Notifikácia, názov a textText notifikácieNieIba 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 Null alebo chyba skriptu uvoľní zariadenia, ktoré smart rule ovláda; ďalší výsledok TRUE alebo FALSE znova uplatní svoje akcie. Textový výsledok sa hlási ako chyba vzorca.
  • LastState je predchádzajúci výsledok skriptu, FALSE pri prvom behu a po výsledku Null alebo po chybe.
  • TriggerName je 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 60

Rovnaká 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.
  • LastState je predchádzajúci výsledok. Pri prvom behu a po chybe skriptu je Null, preto ho pred použitím v aritmetike ošetrite.
  • TriggerName je skratka vstupnej premennej, ktorá sa zmenila, alebo názov triggera, ktorý sa spustil.
  • Chýbajúce zariadenie sa číta ako Null; také vstupy kontrolujte funkciou ISNULL.

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 on

Termostat 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.
  • TriggerName je 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ť.
  • LastState neexistuje.

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";