TapHome

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ă scriptulCe face rezultatulLastStateTriggerName
Smart rule EcuațieTRUE execută acțiunile pentru adevărat, FALSE acțiunile pentru falsRezultatul anterior, la început FALSEDa
Smart rule FormulăSe scrie în fiecare variabilă de ieșireRezultatul anterior, la început NullDa
Smart rule ScriptAtribuirile către variabilele de citire/scriere devin acțiuni ale dispozitivelorNuDa
Condiția de limitare FormulăTRUE permite rularea acestei smart ruleNuNu
Titlul și mesajul notificăriiTextul notificăriiNuDoar 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 Null sau o eroare a scriptului eliberează dispozitivele pe care le controlează regula; următorul rezultat TRUE sau FALSE aplică din nou acțiunile lui. Un rezultat de tip text este raportat ca eroare a formulei.
  • LastState este rezultatul anterior al scriptului, FALSE la prima rulare și după un rezultat Null sau o eroare.
  • TriggerName este 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 60

Aceeaș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 Null se scrie.
  • LastState este rezultatul anterior. Este Null la prima rulare și după o eroare a scriptului, de aceea trebuie verificat înainte de a fi folosit în aritmetică.
  • TriggerName este 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ă cu ISNULL.

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 on

Un 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.
  • TriggerName este 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";