Scripturi în smart rules și notificări
Ce transmit unui script smart rules Ecuație, Formulă și Script, condiția de limitare Formulă și scripturile notificărilor și ce fac cu rezultatul lui: LastState, TriggerName, ieșiri, erori și SLEEP.
Prezentare generală
Smart rules pun la dispoziția scriptului valorile dispozitivelor alese ca variabile, sub abrevierile lor, și folosesc rezultatul în moduri diferite:
| Unde rulează scriptul | Ce face rezultatul | LastState | TriggerName |
|---|---|---|---|
| Smart rule Ecuație | TRUE execută acțiunile pentru adevărat, FALSE acțiunile pentru fals | Rezultatul anterior, la început FALSE | Da |
| Smart rule Formulă | Se scrie în fiecare variabilă de ieșire | Rezultatul anterior, la început Null | Da |
| Smart rule Script | Atribuirile către variabilele de citire/scriere devin acțiuni ale dispozitivelor | Nu | Da |
| Condiția de limitare Formulă | TRUE permite rularea acestei smart rule | Nu | Nu |
| Titlul și mesajul notificării | Textul notificării | Nu | Doar acțiunile Ecuației |
SLEEP este respins în toate scripturile smart rules și ale notificărilor cu SLEEP function not allowed in this context. Singura excepție este condiția de limitare Formulă, care îl acceptă; nici acolo nu trebuie folosit, pentru că întârzie evaluarea smart rules. ADDERROR, ADDWARNING și ADDINFO eșuează aici cu ADDERROR function not supported here.; funcționează doar în scripturile dispozitivelor.
Smart rule Ecuație
Smart rule Ecuație își evaluează scriptul ori de câte ori se modifică una dintre variabilele ei, după salvare și după pornirea Core. Rezultatul se citește ca boolean, unde un număr diferit de zero este TRUE. Acțiunile se execută doar când rezultatul se schimbă, așa că acțiunile unice și notificările se declanșează o singură dată la fiecare schimbare.
- Un rezultat
Nullsau o eroare a scriptului eliberează dispozitivele pe care le controlează regula; următorul rezultatTRUEsauFALSEaplică din nou acțiunile lui. Un rezultat de tip text este raportat ca eroare a formulei. LastStateeste rezultatul anterior al scriptului,FALSEla prima rulare și după un rezultatNullsau o eroare.TriggerNameeste abrevierea variabilei a cărei modificare a provocat evaluarea, gol după o salvare sau o repornire. Disponibil din Core 2026.1, build 35936.
O lumină care se aprinde sub 20 lx și rămâne aprinsă până la 60 lx:
(!LastState AND Li < 20) OR (LastState AND Li < 60);
# Result: TRUE below 20, then TRUE until Li reaches 60Aceeași configurație pas cu pas se găsește în Configurare cu LastState.
Smart rule Formulă
Smart rule Formulă scrie rezultatul scriptului său în fiecare variabilă de ieșire. În Mod de evaluare se alege când rulează: Când s-a modificat oricare dintre variabilele de intrare sau La eveniment personalizat, unde o pornesc doar declanșatoarele regulii, iar variabilele sunt doar citite.
- Rezultatul poate fi de orice tip acceptat de ieșire. Și un rezultat
Nullse scrie. LastStateeste rezultatul anterior. EsteNullla prima rulare și după o eroare a scriptului, de aceea trebuie verificat înainte de a fi folosit în aritmetică.TriggerNameeste abrevierea variabilei de intrare care s-a modificat sau numele declanșatorului care s-a activat.- Un dispozitiv care lipsește se citește ca
Null; astfel de intrări se verifică cuISNULL.
Numărarea deschiderilor ușii în modul cu eveniment personalizat (declanșatorul este deschiderea contactului ușii):
IF(ISNULL(LastState), 0, LastState) + 1;
# Result: 1 on the first run, then 2, 3 and so onUn termostat cu HYSTERESIS folosește aceeași verificare:
HYSTERESIS(Se, 23, 21, 0, 1, IF(ISNULL(LastState), 0, LastState));Smart rule Script
Smart rule Script are două liste de variabile, Variabile numai în citire și Variabile de citire / scriere. Atribuirea unei variabile de citire/scriere creează o acțiune a dispozitivului; mai multe atribuiri către același dispozitiv se combină într-o singură acțiune. Editorul afișează Scriptul trebuie să conțină cel puțin o atribuire. până când scriptul conține :=.
IF Se > 25
Mu := 1;
ELSE
Mu := 0;
END- Rulează când Oricare dintre variabilele numai în citire se modifică sau La eveniment personalizat.
- Se scriu doar variabilele atribuite în rularea curentă. Când regula își menține acțiunile, o rulare care atribuie doar o parte din variabilele de citire/scriere le eliberează pe celelalte, iar o rulare care nu atribuie niciuna le eliberează pe toate. Controlul îl preia atunci o regulă cu prioritate mai mică sau valoarea implicită. Fiecare ieșire se atribuie în fiecare ramură, ca în exemplul de mai sus.
- O eroare a scriptului eliberează toate ieșirile menținute. O valoare de tip greșit pentru un dispozitiv anulează întreaga rulare, inclusiv atribuirile de dinaintea ei.
TriggerNameeste abrevierea variabilei numai în citire care s-a modificat. Rămâne gol când nicio variabilă numai în citire nu este marcată ca declanșator. La evenimentele personalizate este numele declanșatorului care s-a activat. Scriptul îl poate și atribui.- Nu există
LastState.
Condiția de limitare Formulă
Tipul Formulă al unei condiții de limitare evaluează un script peste propriile variabile. TRUE permite rularea acestei smart rule; FALSE, Null sau o eroare a scriptului o blochează.
Te < 22 AND Hu < 70;Scripturile notificărilor
Titlul și mesajul unei notificări sunt scripturi care trebuie să returneze text. Ele pot citi dispozitivele alese pentru notificare și constantele notificării enumerate în Constantele contextului.
"Temperature in " + LocationName + " is " + TOSTRING(Te, "F1") + " °C";