Pulsante 12v monitorato con Shelly 1 e Raspberry tramite Home Assistant
di Vincenzo Caputo
04 Dicembre 2019
L'angolo dei lettori
Benvenuti nella rubrica "l'angolo dei lettori". Questo spazio è una sezione del blog che permette a chiunque di scrivere un articolo o realizzare un video, effettuare prove e test che riguardano il mondo della tecnologia e proporne la pubblicazione su queste pagine.
Oggi Nicola Bertelli (che ringraziamo per questa splendida guida) ci mostra come sia possibile monitorare la pressione di un pulsante touch alimentato a 12v (https://amzn.to/2XMhvHC) con uno Shelly 1, oppure anche con un Raspberry.
Con Home Assistant riusciremo quindi a gestire due azioni, una scaturita da una pressione “istantanea” ed una da una spinta prolungata.
Controllo con Shelly 1
Lo shelly 1 e non il 2.5 in quanto con il piccolo si ha la possibilità di lavorare con i 12V, non è così necessario convertire l’alimentazione che otteniamo dal trasformatore per alimentare il pulsante, limitando così lo spazio necessario per l’installazione.
Cosa serve:
Come prima cosa dobbiamo aprire il coperchietto dello Shelly, semplicemente tirando, spostiamo quindi il ponticello che ci permetterà di lavorare a 12V, nell’immagine sotto vi mostro la posizione finale:
Procediamo quindi con i collegamenti:
Come è possibile vedere nell’immagine, il pulsante touch ha al suo interno un relè che, qualora avvenga una pressione, viene azionato, sarà nostra discrezione scegliere NO o NC.
Per rilevare un cambiamento di stato, lo Shelly ha bisogno del ritorno del GND, quindi sfrutteremo il relè a bordo del pulsante mettendo nel comune (COM) il negativo direttamentedall’alimentatore, l’uscita, dal NO, andrà appunto allo Shelly 1 nel connettore SW.
Il pin NC rimarrà ovviamente inutilizzato.
Terminati i collegamenti, passiamo ora alla configurazione dello Shelly 1.Come prima cosa dovete includere nella vostra rete lo Shelly come ha spiegato Luigi in questo articolo:
Ricordo che per individuare l’indirizzo IP è sufficiente recarsi nell’applicazione Shelly, selezionare la stanza dove abbiamo collocato il nostro aggeggio, cliccare sull’icona selezionata in fase di installazione
cliccare IMPOSTAZIONI
selezionare DEVICE INFORMATION, sarà ora visibile l’indirizzo IP ed altre informazioni
Quindi, da un qualunque browser, inserendo l’indirizzo ricavato, sarà possibile raggiungere la pagina del nostro device.
In internet & Security > ADVANCED - DEVELOPER SETTINGS andiamo ad abilitare la comunicazione MQTT inserendo i dati del nostro server e avendo l’accortezza di annotarci il codice identificativo della nostra schedina indicato in fondo
infine SALVIAMO !!
Per questa applicazione dovremo anche modificare i settaggi in modo che premendo e tenendo premuto il pulsante touch, lo Shelly continui a chiudere il contatto fino a che smettiamo di spingere.
Quindi:
In POWER ON DEFAULT MODE selezioniamo SWITCH, in BUTTON TYPE scegliamo Toggle Switch, verifichiamo inoltre che NON sia spuntato Reverse inputs.
Infine, per quanto riguarda l’integrazione in Home Assistant ho creato un semplicissimo package. Se volete potete tranquillamente dividerlo nei file binary_sensor, automation e script, il risultato non cambia:
binary_sensor:
#
- platform: mqtt
name: pulsante 12v shelly
state_topic: "shellies/shelly1-B8BEDA/relay/0"
payload_on: "on"
payload_off: "off"
device_class: opening
automation:
- id: pressione_pulsante_shelly
alias: pressione pulsante shelly
trigger:
- entity_id: binary_sensor.pulsante_12v_shelly
platform: state
to: 'on'
action:
- delay: 00:00:01
- service: script.turn_on
data_template:
entity_id: >
{% if is_state("binary_sensor.pulsante_12v_shelly", "on") -%}
script.pressione_lunga
{%- else -%}
script.pressione_corta
{%- endif %}
#
script:
pressione_lunga:
alias: pressione prolungata del pulsante 12v
sequence:
- service: notify.notifica_nicola
data:
message: pressione lunga
#
pressione_corta:
alias: pressione breve del pulsante 12v
sequence:
- service: notify.notifica_nicola
data:
message: pressione corta
Come avrete notato il mio file si divide in tre parti appunto:
la dichiarazione del binary_sensor per lo stato dello Shelly, l’automazione che si avvia qualora venga premuto il pulsante ed infine due script che vengono lanciati a seconda di quanto tempo lo switch rimane in stato ‘on’.
Ovviamente gli script andranno personalizzati in base alle vostre necessità, nell’esempio non ho fatto altro che lanciare una notifica.
Controllo con Raspberry (il mio preferito…)
Sì lo so, costa di più, ci si deve sbattere di più, ingombra di più, a volte non è affidabile (raramente), aggiungo anche che in questo progetto dobbiamo gestire una potenza di 12v e la nostra schedina è alimentata a 5v, ma a lavoro finito si ha sempre un’infinita libertà di gestione del dispositivo a seconda delle nostre necessità e della nostra esperienza.
Da non trascurare anche la possibilità di coordinare anche altri progetti con la medesima schedina.
Sono queste le motivazioni che mi hanno portato a preferire il Raspberry come prima scelta.
Ma bando alle ciance, iniziamo subito con il progetto:
Cosa serve:
- 1 Raspberry, consiglio il modello Zero w per consumo e dimensioni https://amzn.to/34MeXvL
- jumper vari https://amzn.to/2Y98FE7
- un convertitore di alimentazione da 12v a 5v tipo questo questo https://amzn.to/2YfU75I
- un trasformatore da 220v a 12v trasformatore o trasformatore2
- un cavetto usb maschio a micro-usb maschio
Non mi dilungo con l’installazione di Raspbian già vista qui, mi limito a sottolineare che è inutile scegliere la variante con la parte grafica, andremmo ad appesantire inutilmente il sistema.
Ecco lo schemino per i collegamenti:
ecco un particolare dei GPIO del Raspberry scelti:
Ora accediamo alla nostra schedina via SSH e lanciamo i seguenti comandi:
cd ~/
sudo apt-get install python3 python3-pip
sudo pip3 install paho-mqtt
mkdir pulsante_12v
cd pulsante_12v
nano pulsante.py
ora incollate all’interno il seguente lo script che ho salvato qui:
premete ctrl + x , confermate con s o y a seconda della lingua che avete impostato.
Torniamo alla cartella home e impostiamo l’avvio del nostro script all’avvio del Raspberry:
cd ~/
nano avvio.sh
Incollate le seguenti righe:
#! bin/sh
sleep 15
python /home/pi/pulsante_12v/pulsante.py &
di nuovo premete ctrl + x , confermate con s o y a seconda della lingua che avete impostato
Quindi inseriamo nel file di configurazione di crontab il file avvio.sh:
sudo crontab -e
andate alla fine del file edi inserite una riga come segue:
@reboot sh /home/pi/avvio.sh
quindi salvate e riavviate (sudo reboot).
Ora non vi resta che impostare Home Assistant come mostro qui sotto:
binary_sensor:
- platform: mqtt
name: pulsante 12v raspberry
state_topic: "pulsante_12v"
payload_on: "on"
payload_off: "off"
device_class: opening
#
automation:
#
- id: pressione_pulsante_raspberry
alias: pressione pulsante Raspberry
trigger:
- entity_id: binary_sensor.pulsante_12v_raspberry
platform: state
to: 'on'
action:
- delay: 00:00:01
- service: script.turn_on
data_template:
entity_id: >
{% if is_state("binary_sensor.pulsante_12v_raspberry", "on") -%}
script.pressione_lunga
{%- else -%}
script.pressione_corta
{%- endif %}
#
#
#
script:
pressione_lunga:
alias: pressione prolungata del pulsante 12v
sequence:
- service: notify.notifica_nicola
data:
message: pressione lunga
#
pressione_corta:
alias: pressione breve del pulsante 12v
sequence:
- service: notify.notifica_nicola
data:
message: pressione corta
Ringraziamo ancora Nicola Bertelli per quest'utilissima guida e godiamoci il video di fine articolo dove potremo osservare il sistama di Nicola in funzione. Buona visione!
Produrre e aggiornare contenuti su vincenzocaputo.com richiede molto tempo e lavoro. Se il contenuto che hai appena letto è di tuo gradimento e vuoi supportarmi, clicca uno dei link qui sotto per fare una donazione.