lunedì 28 febbraio 2022

Rule Tasmota - Sintassi dei trigger

 

Poter scrivere una Rule usando il firmware Tasmota è una cosa davvero comoda, oggi vediamo insieme i Trigger che si possono usare!
Nella Wiki di Tasmota, alla voce Rule vengono riportati molti trigger, ma ovviamente non tutti.

Io, invece, ho scelto di riportare qui solo i trigger che uso. Mica per altro, io parlo di quello che provo, non avendo determinati hardware è inutile che riporto il comando...

Alcuni trigger si meritano un post tutto loro, per esempio i trigger di inizializzazione. Questi sono utilizzabili nella fase di boot del dispositivo con Tasmota a bordo, ma bisogna fare un discorso articolato in merito. Bisogna prima capire le fasi di boot , per questo farò un post a parte e segnerò questi trigger come "Trigger di boot".

Esistono anche altri trigger, strettamente legati (ma non ad uso esclusivo) alle Variabili. Li affronterò nel post che sto preparando, per ora non li aggiungo qui, trovo stupido scriverli e poi metterci a fianco la scritta "aspetta il prossimo post" :-)

Ed ora via che si inizia con i trigger!


I trigger e la loro sintassi

Qui di seguito i trigger, la loro spiegazione e la sintassi d'utilizzo. Come sempre, se qualcosa non ti è chiaro, lascia un commento in fondo al post e vedrò di essere più chiaro.


Trigger di stato


ButtonX#State
Scatena l'evento se il ButtonX è premuto. Ovviamente X è il numero di Button. 
Gli stati possibili sono i seguenti :
0 = OFF
1 = ON
2 = TOGGLE
3 = HOLD
Se vogliamo, per esempio, intercettare l'evento della pressione prolungata del pulsante 1 che generi un comando di HOLD il nostro trigger sarà Button1#State=3


Switch1#State
Serve per intercettare quando uno switch cambia stato.
Gli stati sono i seguenti :
0 = OFF
1 = ON
2 = TOGGLE
3 = HOLD Per funzionare correttamente, lo SwitchTopic deve essere a 0.
4 = INC_DEC Non testato. Incrementa o decrementa il dimmer
5 = INV Non testato. Inverte lo stato 4
6 = CLEAR
Questo trigger si scatena dopo che il tasto che attiva lo switch è stato rilasciato per un tempo superiore a quello espresso in SetOption32.
Se non hai modificato questo valore, ti ricordo che il valore di default è 4 secondi.

Ovviamente, se ci sono più switch, si usa Switch2#State, Switch3#State e via dicendo.


MemX#State
L'evento si attiva quando la posizione di memoria MemX viene cambiata. Anche per gli "oggetti" Mem ed i loro fratelli Var ne parliamo tra qualche post.


VarX#State
L'evento si attiva quando la posizione di memoria VarX viene cambiata. Come per MemX#State, approfondiamo in un post dedicato.


Trigger di boot (eseguiti all'avvio del sistema)

Come dicevo prima, questi trigger si meritano un post a parte. Questo perchè capire bene la sequenza di avvio è fondamentale per usare al meglio questi trigger. Comunque, sappi che sono elencati in ordine di avvio al boot.


Power1#Boot
Sta ad indicare lo stato del relè numero 1 in fase di boot. Si rifà al comando PowerOnState


Switch1#Boot
Serve a portare lo Switch1 nello stato precedente al riavvio. Comunque, ma ne parliamo in un post a parte.


System#Init
Viene lanciato quando la connessione all'access point Wi-Fi e la connessione al server MQTT sono state stabilite con successo.


Http#Initialized
Quando la parte del webserver di Tasmota è pronta alla connessione.


System#Boot
siamo arrivati all'ultimo trigger di avvio. Si usa quando il dispositivo con il firmware Tasmota è pronto ad operare ed ha terminato tutta la sequenza di avvio.


System#Save
Questro trigger non è propriamente un trigger di boot. Anzi, viene eseguito prima del riavvio del dispositivo, quando vengono salvati gli stati dei relè in memoria.


Trigger di Tempo


Time#Initialized
Viene eseguito solo una volta, immediatamente dopo che l'ora viene allineata con quella fornita dal server NTP di riferimento. Anche questo è un trigger di boot.


Time#Initialized>XXX
Dopo XXX minuti dall'inizializzazione del tempo.


Time#Minute
Utile per far girare un processo ogni minuto.


Time#Minute|X
Specificando |X , dove X è il numero dei minuti, questo trigger sarà eseguito ogni X minuti dall'avvio della rule.


Time#Minute=XXX
Se al posto di | si mette il simbolo di = sta a significare XXX minuti dopo la mezzanotte


Time#Set
Ogni ora, a partire da Time#Initialized, viene allineato l'orario di bordo con il server NTP. Questo trigger scatta nel momento che viene ricevuto il pacchetto NTP.


Rules#Timer=1
Quando il timer numero X si esaurisce. Dei Timer ne parliamo diffusamente più avanti, per ora sappi che ce ne sono 8 e che fungono da conto alla rovescia.


Clock#Timer=X
Quando parte il Timer numero X viene scatenato il Trigger. Dei Timer ne parliamo tra qualche post, promesso!


Trigger di connessione


Mqtt#Connected
Quando il server MQTT è connesso.
Può essere sia un trigger di boot che essere usato per loggare quando il server MQTT si collega.


Mqtt#Disconnected
Quando il server MQTT si disconnette.
Usato in concomitanza con il trigger precedente, si possono avere degli alert in modo da capire dove si hanno problemi nella connessione MQTT.


Wifi#Connected
Quando il wifi è connesso.
Può essere sia un trigger di boot che essere usato per loggare quando la connettività wifi va a buon fine.


Wifi#Disconnected
Quando il wifi è disconnesso.
Anche qui, se usato intelligentemente con delle variabili di data ed ora, si possono realizzare degli alert per controllare lo stato della connetttività.


Trigger di Teleperiod - Wifi


Tutte le informazioni che vengono inviate come TelePeriod possono anche essere usate come trigger. Magari ci faccio un post a parte con degli esempi più dettagliati, ma per ora vediamolo molto semplicemente. 

Ricorda che questi trigger vengono eseguiti SOLO quando viene erogato un messaggio di TelePeriod!


Tele-Wifi1#AP
Viene riportato il numero dell'access point in uso.


Tele-Wifi1#Ssid
Viene riportato il nome della rete alla quale si è collegati. Anzi, per essere proprio precisi e puntigliosi, è meglio chiamarlo ESSID (Extended Service Set Identification).


Tele-Wifi1#Bssid
Viene riportato il nome della rete alla quale si è collegati, in caso sia una connessione ad-hoc. Infatti il BSSID (Basic Service Set Identification) viene usato solo per questa tipologia di connessioni.


Tele-Wifi1#Channel
Questo trigger si attiva quando un TelePeriod contiene il numero del canale wifi usato


Tele-Wifi1#RSSI
Viene attivato quando transita il valore RSSI della connettività wifi.


Tele-Wifi1#LinkCount
Questo numero è molto importate, è il numero delle disconnessioni che il dispostivo ha registrato.


Tele-Wifi1#Downtime
Questo è un valore particolare, segnala quanti secondi di disconnessione ci sono stati dall'ultimo teleperiod.

Ci sono altri trigger legati al TelePeriod, come dicevo, ma li analizzeremo a tempo debito con un post tutto per loro.




Conclusioni

Tra tutti questi trigger qualcosa sicuramente c'è per poter scatenare una Rule :-)
Pian piano sta proseguendo questo viaggio nelle Rule con ogni volta approfondimenti specifici, direi che questo post è un altro grande tassello che va al suo posto.
Prossimamente approfondiremo sia i trigger di TelePeriod che quelli di boot, così come quelli legati al consumo di energia.

Siccome si parlava di SwitchTopic, ci ho scritto già un post, eccolo: "Comandi supplementari sotto Tasmota - SwitchMode e SwitchTopic"

Se invece vuoi vedere tutto quello che ho scritto a tema Tasmota, qui ci sono tutti i post.



Nessun commento:

Posta un commento

Sei davvero sicuro di voler sprecare tempo prezioso per scrivere qualcosa? Non è che preferisci andare su Google?

Cerca nel blog

I post più letti di sempre