Integrare Shelly 2.5 a Home Assistant via MQTT

7 minuti di lettura
● Resta sempre aggiornato grazie al nostro canale Telegram e alla nostra newsletter settimanale!
Scopi della guida:
  • Integrare l’attuatore Shelly 2.5 all’HUB di domotica personale Home Assistant (come singolo/doppio interruttore oppure come attuatore da tapparella)
  • Livello di difficoltà: medio/bassa
  • Categoria d’integrazione: Local Push
Concetti affrontati:
  • Configurazione software
Componenti software utilizzate:
  • Home Assistant
  • Componente Home Assistant “MQTT
  • Varie piattaforme di integrazione Home Assistant figlie del componente “MQTT”
Prerequisiti:
  • Home Assistant configurato e funzionante
  • Componente/i Shelly da integrare già configurato/i in Wi-Fi
Dispositivi fisici utilizzati:
GUIDA maggiormente indicatA per:

Tutti gli ambienti

Note e disclaimer
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata ed realizzata SOLO da personale qualificato;
  • qualsiasi modifica attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno puro scopo didattico);
  • qualsiasi modifica attuata in proprio a un dispositivo ne fa decadere garanzia, omologazioni e certificazioni di qualità.
Revisione guida: 1.2

Shelly 2.5 - Home Assistant

Abstract

Uno degli enormi vantaggi della linea Shelly (rispetto per esempio alla diretta rivale, la ITEAD Sonoff, o altre) è quella di dotare i propri componenti di firmware che siano già dotati, autonomamente, di supporto allo standard MQTT.

MQTT (Message Queue Telemetry Transport) è uno standard particolarmente apprezzato in domotica personale per prestazioni e semplicità; la sua adozione consente di integrare con estrema facilità (e nel modo preferibile, il Local Push) qualunque componente che lo utilizzi con i più svariati ambienti operativi quali, in domotica, gli HUB personali.

Home Assistant è uno degli HUB personali con il quale è più semplice far dialogare i componenti Shelly sfruttando il protocollo MQTT: in questa guida vedremo come predisporre le funzionalità dello Shelly 2.5 e come configurare Home Assistant affinché lo integri in tutte le sue possibili funzioni.

N.b. Sebbene esistano componenti aggiuntivi per integrare “facilmente” i componenti della linea Shelly, la metodologia MQTT qui descritta rimane quella più comprovatamente sicura, efficiente e dai risultati più certi nel tempo – nonché quella che consigliamo caldamente di adottare. In alternativa, è possibile utilizzare il componente ShellyForHASS (vedi guida).

Assunti

Per l’implementazione della presente guida è necessario che sulla propria rete sia presente un broker MQTT.

In primis però è importante capire come MQTT funzioni; per far questo, è importante la lettura di questa scheda scritta appositamente per capire il ruolo del broker MQTT all’interno della propria rete – a prescindere dai componenti che supportino MQTT presenti nel proprio ambiente.

Per implementare il broker :

Si assume inoltre che lo/gli Shelly in questione siano già stati installati e poi configurati presso l’app Shelly Cloud (per Android e iOS).

Si parte

Modalità LAN e MQTT

La prima cosa da fare è connettere il nostro Shelly al broker MQTT presente sulla nostra rete (must-have indicato negli assunti). Per farlo è necessario attivare la modalità LAN disponibile sul firmware dell’unità, fornire le coordinate del broker (e gli eventuali username e password di autenticazione).

Per effettuare la configurazione è necessario utilizzare un qualsiasi browser tramite il quale collegarsi all’interfaccia web offerta dall’attuatore. Non è possibile effettuare questa configurazione tramite app mobile, e il perché è semplice: alcune impostazioni (tipo questa) sull’app semplicemente non figurano.

Avremo dunque bisogno dell’indirizzo IP a cui collegarci: lo si potrà trovare facilmente tramite l’interfaccia web del proprio modem/router oppure con un qualsiasi tool di scansione reti (eg. Fing). Se l’IP assegnato sarà (per esempio) il 192.168.1.100, l’interfaccia web alla quale collegarsi sarà disponibile all’indirizzo http://192.168.1.100.

Una volta connessi apparirà un’interfaccia estremamente elementare. Tappare sulla voce “Internet & Security“:

Shelly Cloud - Intenet e security

Entrare poi nella sezione “Advanced – Developer Settings“.
La schermata che segue consente di inserire username, password e indirizzo (e porta) del proprio broker MQTT:

Shelly - Configurazione MQTT

Per quanto riguarda l’indirizzo e porta del server, esso deve essere espresso in termini di IP:PORTA (eg. 192.168.1.100:1883). La porta standard del broker MQTT è 1883 (a meno che non l’abbiate modificata).

Il resto va impostato come da configurazione (raccomandiamo la retain non abilitata e la QoS a 0 oppure a 1 (addirittura 2, in caso di specifiche necessità).

Cliccare poi su “Use Custom MQTT Prefix” per definire il “nome” MQTT dell’attuatore:

Shelly - MQTT - Custom MQTT Prefix

La scelta del nome è personale; si tratta di un passaggio cardine rispetto alla configurazione che effettueremo, successivamente, su Home Assistant.

Una volta completata la configurazione, cliccare su “SAVE“.

N.b. Attivare MQTT – quindi la cosiddetta modalità “LAN” di fatto disconnette il componente dal cloud Shelly, il che non consentirà più di controllare l’unità via app (da remoto, perché localmente continuerà a funzionare). Tale comportamento è più normale: il controllo remoto sarà garantito attraverso Home Assistant e non più dall’app Shelly Cloud.

Modalità d’uso dello Shelly

Prima di passare a Home Assistant, alcune considerazioni lato Shelly sono doverose.

Trattandosi di un componente a doppio canale, esso può essere installato e utilizzato il molti modi diversi. Va da sé che la volontà di integrarlo a Home Assistant possa essere declinata in altrettante diverse modalità: astraendosi, sono sostanzialmente due: come se lo Shelly 2.5 fosse un doppio interruttore o come se fosse al controllo, tramite i suoi due canali, di una tapparella elettrica.

In base all’uso che se ne fa, l’integrazione di Shelly 2.5  prevede diverse configurazioni su Home Assistant: le vedremo nel dettaglio. Ciò che però è importante capire è che il comportamento dello Shelly in base alla sua modalità di uso (come “Relay” o “Roller shutter” alla voce DEVICE TYPE nelle sue importazioni) varia per come è stato configurato nei suoi dettagli.

Ci spieghiamo meglio.

Se utilizziamo, per esempio, la modalità “Roller Shutter” (quindi gestione tapparella) e configuriamo l’INPUT BUTTONS MODE (la modalità di controllo esterno) con doppio pulsante, questo influenzerà il comportamento dell’unità a prescindere da Home Assistant, in quale “semplicemente” riceverà eventuali cambi di stato effettuati manualmente tramite appunto pulsanti esterni.

Sempre ragionando per esempi, se utilizziamo la modalità “Relay” (doppio interruttore intelligente, doppio canale), un’eventuale impostazione inching (apertura/chiusura del relay per una durata prefissata) – o altre, per dire –  verranno attuate sempre, sia quando l’unità riceve comandi da Home Assistant sia quando viene attivata da eventuali pulsanti esterni.

Tutto questo discorso per dire che è necessario, prima di integrare lo Shelly a Home Assistant, provvedere a configurare nel dettaglio le funzioni associate alla modalità scelta (“Relay” o “Roller Shutter” che sia) e solo dopo provvedere all’integrazione. Questo per evitare tutta una serie di difficoltà che potrebbero sorgete nella risoluzione di eventuali problemi.

Home Assistant

Vediamo ora come provvedere all’integrazione dell’attuatore, ipotizzando l’uso come “Relay” e come “Roller Shutter”.

RELAY

Ipotizziamo di aver collegato due diversi punti luce (o comunque due carichi) ai due canali dello Shelly 2.5 e due pulsanti/interruttori murali per controllare singolarmente i canali.

Uno schema elettrico analogo al seguente, per capirci:

Shelly 2.5 - schema di connessione - Relay

L’obiettivo dell’integrazione dev’essere dunque quello di dotarsi, presso Home Assistant, di due “Switch” i quali non solo agiscano sullo Shelly in modo da poter attivare selettivamente i canali, ma anche da visualizzarne lo stato operativo aggiornato in caso di variazione effettuata tramite i pulsanti/interruttori murali.

Allo scopo utilizzeremo la piattaforma “MQTT Switch“.

L’implementazione è semplice. Sarà infatti sufficiente inserire in configurazione (personalizzandola, come spiegato a seguire) il seguente blocco (integrando eventuali switch già presenti):

switch:
  - platform: mqtt
    name: "Canale 1"
    icon: mdi:lightbulb
    state_topic: "shellies/NOME_SHELLY/relay/0"
    command_topic: "shellies/NOME_SHELLY/relay/0/command"
    availability_topic: "shellies/NOME_SHELLY/online"
    optimistic: false
    payload_on: "on"
    payload_off: "off"
    payload_available: "true"
    payload_not_available: "false"
    retain: false
    qos: 1
  - platform: mqtt
    name: "Canale 2"
    icon: mdi:lightbulb
    state_topic: "shellies/NOME_SHELLY/relay/1"
    command_topic: "shellies/NOME_SHELLY/relay/1/command"
    availability_topic: "shellies/NOME_SHELLY/online"
    optimistic: false
    payload_on: "on"
    payload_off: "off"
    payload_available: "true"
    payload_not_available: "false"
    retain: false
    qos: 1

Il valore NOME_SHELLY è ovviamente da personalizzare: tale nome viene impostato nella fase di configurazione MQTT già effettuata precedentemente. Ovviamente il tutto è personalizzabile, inclusi (in primis) i nomi dei due interruttori (campo “name“), o per esempio l’icona (campo “icon“) usando il solito materialicondesign.com per la scelta dell’icona appropriata (in questo caso, una lampadina).

Come si nota facilmente, sono due i blocchi implementati, i quali variano solo in un carattere (01) il quale identifica, sul topic MQTT, quale canale si stiamo andando a censire/comandare. L’availability topic, invece, è comune ai due blocchi, perché ovviamente l’LWT è relativo all’unità Shelly e non ai singoli relè. QoS, come spesso capita, è impostato a 1 per una maggiore certezza dell’esecuzione dei comandi.

Dopo aver variato la configurazione di Home Assistant, riavviarlo. Verranno create due entità (nel caso dell’esempio, switch.canale_1 e switch_canale_2). a rappresentazione presso l’interfaccia Lovelace UI è la seguente:

Home Assistant - Shelly 2.5 Relay

ROLLER SHUTTER

In questo scenario ipotizziamo l’uso dello Shelly 2.5 per il controllo di un motore elettrico per sollevamento tapparelle. Come spiegato, assumiamo già effettuate le configurazioni base, come la durata del sollevamento, la calibrazione, la configurazione dei pulsanti murali.

Shelly 2.5 - schema di connessione - tapparella

In questo frangente l’entità che vogliamo creare su Home Assistant non è uno “Switch” come nel (duplice) caso precedente, ma semmai una di tipo “Cover”, tipologia che su Home Assistant è utilizzata per controllare tapparelle, bascule garage ed elementi analoghi.

Per farlo si utilizza la piattaforma “MQTT Cover”; il codice che andremo ad aggiungere in configurazione sarà pressoché il seguente:

cover:
- platform: mqtt
  name: "Matrimoniale"
  command_topic: "shellies/NOME_SHELLY/roller/0/command"
  position_topic: "shellies/NOME_SHELLY/roller/0/pos"
  set_position_topic: "shellies/NOME_SHELLY/roller/0/command/pos"
  availability_topic: "shellies/NOME_SHELLY/online"
  payload_available: "true"
  payload_not_available: "false"
  retain: false
  payload_open: "open"
  payload_close: "close"
  payload_stop: "stop"
  position_open: 100
  position_closed: 0
  optimistic: false
  qos: 1

Il valore NOME_SHELLY è ovviamente da personalizzare: tale nome viene impostato nella fase di configurazione MQTT già effettuata precedentemente. Ovviamente tutto è personalizzabile, inclusi (in primis) il nome dell’entità (campo “name“, qui valorizzato a “Matrimoniale“).

Dopo aver variato la configurazione di Home Assistant, riavviarlo. Verrà creata un’entità di tipo “Cover” (nel caso dell’esempio, cover.matrimoniale). La rappresentazione presso l’interfaccia Lovelace UI è la seguente:

Home Assistant - Cover

Cliccando sull’icona, i dettagli saranno visualizzati come segue:

Home Assistant - Cover - Dettagli

SENSORE

In ultimo – indipendentemente dalla modalità “Relay” o “Rolling Shutter” – è possibile catturare la lettura del sensore termico presente a bordo dello Shelly 2.5.

Per farlo, il codice di configurazione (il quale utilizza la piattaforma “MQTT Sensor”) è il seguente:

sensor:
- platform: mqtt
  name: "Temperatura Shelly Camera"
  state_topic: "shellies/NOME_SHELLY/temperature"
  availability_topic: "shellies/NOME_SHELLY/online"
  value_template: "{{ value }}"
  unit_of_measurement: "°C"
  availability_topic: "shellies/NOME_SHELLY/online"
  payload_available: "true"
  payload_not_available: "false"

Il valore NOME_SHELLY è ovviamente da personalizzare: tale nome viene impostato nella fase di configurazione MQTT già effettuata precedentemente. Ovviamente tutto è personalizzabile, inclusi (in primis) il nome dell’entità (campo “name“, qui valorizzato a “Temperatura Shelly Camera“).

Dopo aver variato la configurazione di Home Assistant, riavviarlo. Verrà creata un’entità di tipo “Sensor” (nel caso dell’esempio, sensor.temperatura_shelly_camera). La rappresentazione presso l’interfaccia Lovelace UI è la seguente:

Home Assistant - Sensor temperatura

Cliccando sull’icona, i dettagli saranno visualizzati come segue:

Home Assistant - Sensor temperatura - Dettagli

N.b. Quando si parla di sensori di questo tipo si consiglia sempre di valutare l’adozione di misure atte a ridurre il numero di dati scritti sul database.
Automazione per il censimento iniziale dello stato

All’avvio, Home Assistant non conosce lo stato dello/degli Shelly; per far in modo che tali stati vengano raccolti immediatamente, aggiungere la seguente automazione all’elenco di quelle esistenti:

- alias: MQTT Announce
  trigger:
  - event: start
    platform: homeassistant
  condition: []
  action:
  - service: mqtt.publish
    data:
      payload: announce
      topic: shellies/command
    

Pubblicando il topic “shellies/command“, tutti gli Shelly presenti sulla rete connessi al broker MQTT risponderanno fornendo il proprio stato.

Comandi speciali

La presenza dello standard MQTT consente agli Shelly di essere configurati e interrogati tramite comandi diretti MQTT (nonché API REST via HTTP). A tale aspetto abbiamo dedicato la scheda che segue:

Shelly, MQTT e HTTP: comandi utili



Home Assistant Official LogoATTENZIONE: ricorda che sul nostro community FORUM c'è una sezione ad hoc dedica a Home Assistant, per qualsiasi dubbio, domanda, informazione nel merito specifico di queste componenti.