Sfruttare al massimo le potenzialità di interruttori e pulsanti

Sfruttare al massimo le potenzialità di interruttori e pulsanti

 

In questa guida vedremo come sfruttare al massimo le potenzialità dei commutatori collegati ad Home Assistant, vedremo quindi come configurare un qualsiasi pulsante o interruttore per eseguire azioni differenti in base al numero di volte che esso viene premuto e, in caso sia un pulsante, alla durata della pressione. Questo sistema funziona con la maggior parte degli interruttori e pulsanti compatibili con Home Assistant, l’importante è che quest’ultimo venga visto da Home Assistant come binary_sensor o come switch.

Attenzione: pulsanti come gli Xiaomi Aqara e simili non sono stati testati e potrebbero non funzionare con questo sistema dato che hanno già un sistema integrato per il riconoscimento del doppio tocco e della pressione prolungata. Io l’ho testato solo con Tasmota, esphomelib, MySensors e direttamente dal GPIO del Raspberry con Home Assistant, fatemi sapere se funziona anche con altri pulsanti.

Per procedere abbiamo bisogno di un contatore ed un timer: come contatore andremo ad utilizzare il componente input_number, mentre come timer possiamo tranquillamente usare il componente timer di Home Assistant. Il contatore ci servirà per contare il numero di volte che il pulsante viene premuto, mentre il timer ci servirà per definire il tempo massimo che può passare tra un click e l’altro. Vi consiglio un tempo compreso da 0,25 e 1 secondo, il tempo ideale è di mezzo secondo. Maggiore sarà la durata del timer e maggiore sarà il ritardo nella risposta del nostro pulsante. Sarà necessario creare un timer per ogni interruttore / pulsante, mentre il contatore rimane unico per tutti quanti.

Andiamo quindi a dichiarare le nostre entità nel configuration.yaml:

 

Adesso dall’interfaccia web di Home Assistant entriamo nelle impostazioni e selezioniamo la voce “Automazioni” ed andiamo a creare un’automazione. Per comodità e per non fare confusione se avete tanti interruttori, vi consiglio di chiamare le automazioni seguendo questo schema: [nome-interruttore] tipo-automazione.

L’automazione, che chiameremo [pulsante-tutorial] incrementa contatore, andrà ad avviare il timer ed incrementare di 1 il valore del nostro contatore ogni volta che viene premuto il pulsante. Quest’automazione deve essere aggiunta per ogni pulsante e per ogni interruttore.

Oppure, se preferite, ecco la configurazione da aggiungere in automations.yaml:

Negli interruttori a due posizioni, a differenza dei pulsanti, il contatore deve aumentare ad ogni cambio di stato, non solo quindi quando passa da off a on, ma anche quando lo stato dell’interruttore interruttore passa da on a off:

Oppure, in formato yaml avremo:

 

Andiamo ora ad impostare le azioni da eseguire quando il nostro pulsante viene premuto una sola volta: come potete vedere nelle condizioni dell’automazione viene controllato se il valore del contatore è 1, cioè che quindi il pulsante è stato premuto una sola volta. In caso sia un pulsante bisogna anche controllare che quest’ultimo sia tornato al suo stato iniziale. Viene infine resettato il contatore.

Oppure, in formato yaml avremo:

 

Per configurare un’azione da eseguire quando il pulsante viene premuto due o più volte ci basterà creare un’altra automazione e cambiare il valore del contatore nelle condizioni di quest’ultima con il numero di volte che andremo a premere il pulsante (esempio: 2.0, 3.0, 4.0 ecc.).

 

PRESSIONE PROLUNGATA DI UN PULSANTE:

Per configurare un’azione da eseguire quando il pulsante viene mantenuto premuto a lungo ci basterà impostare le condizioni in questo modo:

Oppure, in formato yaml avremo:

La pressione prolungata, ovviamente, può essere riconosciuta solo sui pulsanti e non sugli interruttori.

Detto ciò non ci resta altro che verificare che tutto funzioni correttamente.

Sto pensando di sviluppare un add-on che farà tutta questa procedura al posto nostro (a noi basterà dargli l’id del pulsante e le azioni da fare e lui penserà a creare tutte le automazioni per noi) per non doverla ripetere ogni volta.

Articolo scritto da Marco Realacci, marcorealacci.me, telegram.me/realfantasy

 

8 risposte

  1. Sergio ha detto:

    Ottimo! Proprio quello che cercavo!
    Pensavo ci fosse un setting dedicato su Tasmota per questa funzione… ma probabilmente mi sbaglio.
    Con il firmware Espurna c’era di sicuro.
    Bel lavoro comunque!

  2. carlo ha detto:

    Nel firmware Tasmota come vanno settati i pin? Button o Switch o …?

  3. Niccolò ha detto:

    Nella guida si dice che la durata ottimale del timer è di 0,5 secondi ma il componente timer non ammette durate inferiori al secondo.
    Come aggirare questo limite?

  4. giancarlo ha detto:

    Ciao io dovrei integrare in home assistant un esp8266 con espeasy con tre rele collegati che devo azionare con il comando pulse,,,.
    Ho provato a simulare la pubblicazione del post MQTT ma non riesco a fargli digerire i millisecondi dell’impulso.

  5. Michele ha detto:

    Ciao Marco, ho fatto tutto ma home Assistant non vede i cambiamenti di stato del pulsante che ho collegato su un Sonoff basic (tasmota) nel GPIO2 (settato come switch). Chiaramente il topic è corretto. Grazie 1000

  6. Domenico ha detto:

    Ottima guida, per caso sei riuscito a sviluppare ladd-on ? Sarebbe molto interessante avere già tutto programmato

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Advertisment ad adsense adlogger