Pulsante 12v monitorato con Shelly 1 e Raspberry tramite Home Assistant

Pulsante 12v monitorato con Shelly 1 e Raspberry tramite Home Assistant

di Vincenzo Caputo

04 Dicembre 2019

L'angolo dei lettori

Vincenzo Caputo

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.

Pulsante 12v monitorato con Shelly 1 e Raspberry tramite Home Assistant

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.

Pulsante 12v monitorato con Shelly 1 e Raspberry tramite Home Assistant

 

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:

Pulsante 12v monitorato con Shelly 1 e Raspberry tramite Home Assistant

Procediamo quindi con i collegamenti:

Pulsante 12v monitorato con Shelly 1 e Raspberry tramite Home Assistant

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.

Pulsante 12v monitorato con Shelly 1 e Raspberry tramite Home Assistant

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:

http://www.vincenzocaputo.com/picoblog/view/130/tutti_pazzi_per_shelly_-_la_nostra_prova_dello_shelly_1

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

Pulsante 12v monitorato con Shelly 1 e Raspberry tramite Home Assistant

cliccare IMPOSTAZIONI

Pulsante 12v monitorato con Shelly 1 e Raspberry tramite Home Assistant

selezionare DEVICE INFORMATION, sarà ora visibile l’indirizzo IP ed altre informazioni

Pulsante 12v monitorato con Shelly 1 e Raspberry tramite Home Assistant

Quindi, da un qualunque browser, inserendo l’indirizzo ricavato, sarà possibile raggiungere la pagina del nostro device.

Pulsante 12v monitorato con Shelly 1 e Raspberry tramite Home Assistant

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

Pulsante 12v monitorato con Shelly 1 e Raspberry tramite Home Assistant
Pulsante 12v monitorato con Shelly 1 e Raspberry tramite Home Assistant

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:

Pulsante 12v monitorato con Shelly 1 e Raspberry tramite Home Assistant

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:

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:

Pulsante 12v monitorato con Shelly 1 e Raspberry tramite Home Assistant

ecco un particolare dei GPIO del Raspberry scelti:

Pulsante 12v monitorato con Shelly 1 e Raspberry tramite Home Assistant

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: 

https://pastebin.com/5pRVLAu3

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.

Vincenzo Caputo

Vincenzo Caputo

Nato a Matera, il 1° novembre 1977. Sono da sempre appassionato di tecnologia e ho un'esperienza lavorativa ventennale nel settore IT. Mi piace sperimentare e cercare sempre nuove soluzioni e soprattutto mi piace comunicare le mie esperienze agli altri.

Disqus loading...