Script nelle smart rule e nelle notifiche
Che cosa passano a uno script le smart rule Equazione, Formula e Script, la condizione limitante Formula e gli script delle notifiche, e che cosa fanno con il suo risultato: LastState, TriggerName, uscite, errori e SLEEP.
Panoramica
Le smart rule passano al loro script i valori dei dispositivi scelti come variabili, con le loro abbreviazioni, e usano il risultato in modi diversi:
| Dove viene eseguito lo script | Che cosa fa il risultato | LastState | TriggerName |
|---|---|---|---|
| Smart rule Equazione | TRUE esegue le azioni per vero, FALSE quelle per falso | Risultato precedente, FALSE all’inizio | Sì |
| Smart rule Formula | Viene scritto in ogni variabile di uscita | Risultato precedente, Null all’inizio | Sì |
| Smart rule Script | Le assegnazioni alle variabili di lettura e scrittura diventano azioni sui dispositivi | No | Sì |
| Condizione limitante Formula | TRUE lascia eseguire la smart rule | No | No |
| Titolo e messaggio di una notifica | Il testo della notifica | No | Solo nelle azioni di Equazione |
SLEEP viene rifiutato in tutti gli script delle smart rule e delle notifiche con SLEEP function not allowed in this context. L’unica eccezione è la condizione limitante Formula, che lo accetta; non usarlo nemmeno lì, perché blocca la valutazione delle smart rule. ADDERROR, ADDWARNING e ADDINFO qui falliscono con ADDERROR function not supported here.; funzionano solo negli script dei dispositivi.
Smart rule Equazione
La smart rule Equazione valuta il suo script ogni volta che cambia una delle sue variabili, dopo il salvataggio e dopo l’avvio del Core. Il risultato viene letto come booleano, dove un numero diverso da zero è TRUE. Le azioni vengono eseguite solo quando il risultato cambia, quindi le azioni una tantum e le notifiche scattano una volta per ogni cambiamento.
- Un risultato
Nullo un errore dello script rilascia i dispositivi controllati dalla regola; il successivo risultatoTRUEoFALSEapplica di nuovo le sue azioni. Un risultato di tipo testo viene segnalato come errore della formula. LastStateè il risultato precedente dello script,FALSEalla prima esecuzione e dopo un risultatoNullo un errore.TriggerNameè l’abbreviazione della variabile il cui cambiamento ha causato la valutazione, vuoto dopo un salvataggio o un riavvio. Disponibile dal Core 2026.1, build 35936.
Una luce che si accende sotto 20 lx e resta accesa fino a 60 lx:
(!LastState AND Li < 20) OR (LastState AND Li < 60);
# Result: TRUE below 20, then TRUE until Li reaches 60La stessa configurazione passo per passo si trova in Configurazione con LastState.
Smart rule Formula
La smart rule Formula scrive il risultato del suo script in ogni variabile di uscita. In Modalità di valutazione scegli quando viene eseguita: Quando una delle variabili di input è cambiata, oppure Su evento personalizzato, dove la avviano solo i trigger della regola e le variabili vengono soltanto lette.
- Il risultato può essere di qualsiasi tipo accettato dall’uscita. Anche un risultato
Nullviene scritto. LastStateè il risultato precedente. ÈNullalla prima esecuzione e dopo un errore dello script, quindi proteggilo prima di usarlo in un calcolo.TriggerNameè l’abbreviazione della variabile di ingresso che è cambiata, oppure il nome del trigger che è scattato.- Un dispositivo mancante viene letto come
Null; controlla questi ingressi conISNULL.
Conteggio delle aperture di una porta con la modalità a evento personalizzato (il trigger è l’apertura del contatto della porta):
IF(ISNULL(LastState), 0, LastState) + 1;
# Result: 1 on the first run, then 2, 3 and so onUn termostato con HYSTERESIS usa la stessa protezione:
HYSTERESIS(Se, 23, 21, 0, 1, IF(ISNULL(LastState), 0, LastState));Smart rule Script
La smart rule Script ha due elenchi di variabili, Variabili di sola lettura e Variabili di lettura e scrittura. L’assegnazione di una variabile di lettura e scrittura crea un’azione sul dispositivo; più assegnazioni allo stesso dispositivo vengono unite in un’unica azione. L’editor mostra Lo Script deve contenere almeno un'assegnazione. finché lo script non contiene :=.
IF Se > 25
Mu := 1;
ELSE
Mu := 0;
END- Viene eseguita quando Qualsiasi variabile di sola lettura cambia, oppure Su evento personalizzato.
- Vengono scritte solo le variabili assegnate in questa esecuzione. Quando la regola mantiene le sue azioni, un’esecuzione che assegna solo alcune variabili di lettura e scrittura rilascia le altre, e un’esecuzione che non ne assegna nessuna le rilascia tutte. Subentra allora una regola con priorità più bassa o il valore predefinito. Assegna ogni uscita in ogni ramo, come nell’esempio sopra.
- Un errore dello script rilascia tutte le uscite mantenute. Un valore di tipo errato per un dispositivo scarta l’intera esecuzione, comprese le assegnazioni precedenti.
TriggerNameè l’abbreviazione della variabile di sola lettura che è cambiata. Resta vuoto quando nessuna variabile di sola lettura è contrassegnata come trigger. Con gli eventi personalizzati è il nome del trigger che è scattato. Lo script può anche assegnarlo.LastStatenon c’è.
Condizione limitante Formula
Il tipo Formula di una condizione limitante valuta uno script sulle proprie variabili. TRUE lascia eseguire la smart rule; FALSE, Null o un errore dello script la bloccano.
Te < 22 AND Hu < 70;Script delle notifiche
Il titolo e il messaggio di una notifica sono script che devono restituire testo. Possono leggere i dispositivi scelti per la notifica e le costanti della notifica elencate in Costanti di contesto.
"Temperature in " + LocationName + " is " + TOSTRING(Te, "F1") + " °C";