lunedì 26 novembre 2018

Comandi supplementari sotto Tasmota - SwitchMode e SwitchTopic


Vedo che molti utenti usano i Sonoff con firmware Tasmota come pulsanti normalmente aperti, normalmente chiusi o come interruttori.
Ma come diavolo fanno?


Al momento, non interessa molto dal lato pratico, però non si sa mai, magari in futuro lo sfrutto a fondo!

Fortunatamente la wiki di Tasmota tratta questo argomento anche se in maniera veloce.
Basandomi su quelle poche righe, mi sono dato allo studio, intanto non è il mio primo giro in console, fortunatamente!

In buona sostanza, lo SwitchMode è un parametro che definisce il modo in cui funziona il comando del carico collegato al Sonoff tasmotizzato.

Si potrebbe, per esempio, collegare una fotocellula in parallelo al pulsante del Sonoff e stabilire cosa fare se il segnale si interrompe.
Magari pubblicare un messaggio MQTT, o magari mandare un messaggio di tipo "comando" via MQTT ad un altro dispositivo, che potrebbe essere un segnale luminoso o una sirena.

Se non sai nulla di MQTT, ho scritto un articolo qualche tempo fa sull'argomento.

Ok, via che si inizia!
Per vedere lo SwitchMode attuale basta andare in console e lanciare il comando senza parametri.
Verrà presentato lo stato attuale, segnatevelo prima di fare cambiamenti!

Switchmode


Siccome sul Sonoff ci possono anche essere più relais (due o quattro), ogni switch è associato ad un relais. Sui Sonoff basic, TH e POW c'è solo un relais, conviene settarlo sempre come Switch1.

I comandi SwitchMode con i relativi parametri sono i seguenti, il simbolo # identifica lo switch sul quale si va ad operare.
I valori tra parentesi, invece, identificano le possibili variabili.
Se si vuole approfondire, la lista competa dei comandi è reperibile sulla wiki di Tasmota.

SwitchMode# 0 (0,1)
Questo è il comportamento di base per i Sonoff.
Si preme il pulsante ed il relais cambia stato, viene mandato un messaggio a seconda dello stato ON oppure OFF.

SwitchMode# 1 (0,1) - Follow
Quando si chiude il circuito il relais si attiva e viene mandato un messaggio di ON.
Quando si apre il circuito relais si attiva e viene mandato un messaggio di OFF.
Se si usa con un interruttore, si ha la certezza che lo stato dell'interruttore è uguale allo stato del relais del Sonoff.

SwitchMode# 2 (0,1) - Inverted Follow
Quando si chiude il circuito il relais si disattiva e viene mandato un messaggio di OFF.
Quando si apre il circuito il relais si disattiva e viene mandato un messaggio di ON.
Se si usa con un interruttore, si ha la certezza che lo stato dell'interruttore è inverso allo stato del relais del Sonoff.

SwitchMode# 3 (0,1)
Quando si apre il circuito il relais si disattiva e manda un messaggio MQTT "STATUS" di OFF.
Quando si chiude il circuito, non succede nulla.
Si usa con un pulsante momentaneo.

SwitchMode# 4 (0,1)
Quando si chiude il circuito il relais si attiva e manda un messaggio MQTT "STATUS" di ON.
Quando si apre il circuito, non succede nulla.
Si usa con un pulsante momentaneo.

SwitchMode# 5 (0,1)
Quando si apre il circuito viene mandato un messaggio MQTT "CMND" di OFF ed il relais viene disattivato in seguito alla ricezione.
Quando si chiude il circuito, non succede nulla.
Si usa con un pulsante momentaneo.
In buona sostanza, è come lo Switchmode 3, con in più l'erogazione del comando MQTT.
Cambiando lo SwitchTopic a 1, se il circuito viene aperto per 4 secondi si attiva la funzione HOLD (vedi dopo).
Viene inoltre pubblicato un messaggio di stato:
comnd/sonoff/POWER1 = HOLD 

SwitchMode# 6 (0,1)
Quando si chiude il circuito viene mandato un messaaggio MQTT "CMND"  di ON ed il relais viene attivato in seguito alla ricezione.
Quando si apre il circuito, non succede nulla.
Si usa con un pulsante momentaneo.
In buona sostanza, è come lo Switchmode 4, con in più l'erogazione del comando MQTT.
Cambiando lo SwitchTopic a 1, se il circuito viene chiuso per 4 secondi si attiva la funzione HOLD (vedi dopo).
Viene inoltre pubblicato un messaggio di stato:
comnd/sonoff/POWER1 = HOLD 

SwitchMode# 7 (0,1)
Fino a che viene mantenuto chiuso il circuito, il relais viene attivato.
Viene pubblicato un messaggio di stato.


Per fare un esempio, se si ha solo un relais e lo si è settato come Switch 01, il comando da inviare per fare un semplice toggle è il seguente:

SwitchMode1 1


Ma parliamo della funzione HOLD alla quale ho accennato poco fa.
Tale funzione permette, a seguito della pressione per 4 secondi del pulsante, di mandare un topic di tipo CMND. Questo è molto comodo se si vuole usare un pulsante per, magari, pilotare lo spegnimento di tutte le luci con un solo tasto.

Ah, il tempo pressione del pulsante può essere cambiato usando il comando da console SETOPTION32.
Se si lancia semplicemente SETOPTION32. il Sonoff risponde con 40, ovvero 40 millisecondi.
Se ne consegue che se si vuole abbassare il tempo necessario a scatenare l'evento HOLD a 2 secondi, il comando darà SETOPTION32 20.


SwitchTopic


Parliamo quindi dello SwitchTopic, in relazione agli SwitchMode 6 e 7.
L'argomento SwitchTopic ha tre possibili stati, vediamoli:

SwitchTopic 0
Quando il pulsante viene premuto, viene pubblicata dal dispositivo una coppia di messaggi MQTT di tipo STAT che segnala che il carico è ON oppure OFF
La coppia di messaggi all'attivazione del relais quindi sarà:

stat/sonoff/RESULT = {"POWER":"ON"}
stat/sonoff/POWER = ON

Questo è lo stato di default.


SwitchTopic1
Quando il pulsante viene premuto, viene pubblicato un messaggio di tipo CMND al broker MQTT, il quale ritorna il comando di accensione.
Questo viene seguito da una coppia di messaggi di tipo STAT che riportano la stessa informazione.
I messaggi alla pressione del pulsante saranno:

cmnd/sonoff/POWER1 = ON
stat/sonoff/RESULT = {"POWER":"ON"}
stat/sonoff/POWER = ON


Anche se pare uguale allo SwitchTopic0, c'è la sottile differenza che il messaggio di accensione viene ricevuto via MQTT come se fosse un comando che proviene da fonte esterna e non dalla pressione del pulsante fisico del dispositivo.
Ugualmente, quando si cambia staato e si va in spegnimento, la tripletta dei messaggi sarà:

cmnd/sonoff/POWER1 = OFF
stat/sonoff/RESULT = {"POWER":"OFF"}
stat/sonoff/POWER = OFF


Questo è molto utile perché avendo il topic ed il messaggio di tipo CMND si possono pilotare dei comandi aggiuntivi.

SwitchTopic2
Alla pressione del pulsante viene pubblicato un messaggio MQTT con un topic a scelta dell'utente, purchè sia di non più di 32 caratteri.
Altra funzione comoda, perché si potrebbero far interagire solo alcune classi di dispositivi con uno specifico comando erogato solo da quel particolare Sonoff.


Direi che per il momento l'argomento è concluso e mi ha fatto venire diverse idee, vedremo cosa riuscirò a combinare :-)

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