Scopi della guida:
Concetti affrontati:
|
Componenti software utilizzate:
Prerequisiti:
Dispositivi fisici utilizzati:
|
GUIDA INDICATA A UTENTI CON ISTALLAZIONE: |
|
NOTE E DISCLAIMER
|
|
Revisione guida: 1.1 |
Abstract
Uno dei grandi vantaggi della linea Shelly (rispetto per esempio alla diretta rivale, la ITEAD Sonoff, o altre analoghe) è quella di installare sui propri componenti di firmware in grado di offrire 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 i quali è più semplice far dialogare i componenti Shelly sfruttando il protocollo MQTT: in questa guida vedremo come predisporre le funzionalità dello Shelly UNI e come configurare Home Assistant affinché lo integri in tutte le sue possibili funzioni.
N.b. La metodologia MQTT qui descritta rimane tra quelle più comprovatamente sicure, efficienti. In assoluto, però, si consiglia l’utilizzo della piattaforma di integrazione inclusa nativamente su Home Assistant, in quanto ormai più che rodata, affidabile e, tutto sommato, più semplice da attuare. Inoltre, essa rende inutile la presenza di un broker MQTT il quale, va da sé, rappresenta un single-point-of-failure in più nella catena d’integrazione. |
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 dotarsi di un broker e per attivare le funzioni client MQTT su Home Assistant si rimanda a questa guida.
Si assume inoltre che lo/gli Shelly in questione siano già stati configurati fornendogli accesso alla propria rete Wi-Fi, cosa che può essere fatta sia tramite l’app Shelly Cloud (per Android e iOS) sia attraverso l’access point da essi fornito a fronte di un reset alle impostazioni di fabbrica.
Si parte
- Abilitare la modalità LAN e MQTT su Shelly
- Modalità d’uso dello Shelly
- Home Assistant
- Relè
- Stato interruttori/pulsanti
- Sensori
- longpush-shortpush
- volt in ingresso
- overpower (sovraccarico)
- Automazione per il censimento iniziale dello stato
- Comandi speciali
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“:
Entrare poi nella sezione “Advanced – Developer Settings“.
La schermata che segue consente di inserire username, password e indirizzo (e porta) del proprio broker MQTT:
Per quanto riguarda l’indirizzo e porta del server, esso deve essere espresso in termini di IP:PORTA (eg. 192.168.1.1: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:
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.
Poiché le applicazioni dello Shelly UNI possono essere le più disparate (come anche spiegato nella recensione), la presente guida perseguirà lo scopo di interare il device come un doppio interruttore, nonché le rilevazioni di pressione dei pulsanti presenti a bordo dell’unità. È comunque ovvio che tale configurazione possa (anzi, debba) essere adattata a seconda degli specifici casi di utilizzo: questa guida spiega l’approccio e la filosofia dell’integrazione. Non è infatti possibile redigere una singola guida per tutti i vari casi d’uso: Shelly UNI nasce appositamente per collegare diversi sensori/attuatori, pertanto è possibile fare davvero moltissime cose diverse.
Home Assistant
Vediamo ora come provvedere all’integrazione di questo particolarissimo device.
Relè
Ipotizziamo di aver collegato un carico generico ai due canali d’uscita dello Shelly UNI.
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 attivarne i relè, ma anche da visualizzarne lo stato operativo aggiornato in caso di variazione effettuata tramite i pulsanti/interruttori esterni.
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):
mqtt:
switch:
- name: "Interruttore 1"
state_topic: "shellies/NOME_SHELLY/relay/0"
command_topic: "shellies/NOME_SHELLY/relay/0/command"
availability_topic: "shellies/NOME_SHELLY/online"
qos: 1
value_template: "{% if value == 'on' %} on {% else %} off {% endif %}"
payload_on: "on"
payload_off: "off"
payload_available: "true"
payload_not_available: "false"
optimistic: false
retain: false
- name: "Interruttore 2"
state_topic: "shellies/NOME_SHELLY/relay/1"
command_topic: "shellies/NOME_SHELLY/relay/1/command"
availability_topic: "shellies/NOME_SHELLY/online"
qos: 1
value_template: "{% if value == 'on' %} on {% else %} off {% endif %}"
payload_on: "on"
payload_off: "off"
payload_available: "true"
payload_not_available: "false"
optimistic: false
retain: false
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).
QoS, come spesso capita, è impostato a 1 per una maggiore certezza dell’esecuzione dei comandi.
Stato interruttori/pulsanti
Oltre allo stato dell’interruttore intelligente è possibile, tramite Shelly 1L, censire lo stato degli interruttori o pulsanti eventualmente collegati fisicamente all’unità, ovvero la posizione degli stessi (0/1).
Per farlo useremo un “Binary Sensor“:
mqtt:
binary_sensor:
- name: "Shelly 1L - Stato comando esterno 1"
payload_on: "on"
payload_off: "off"
device_class: power
state_topic: "shellies/NOME_SHELLY/input/0"
value_template: "{% if value == '1' %} on {% else %} off {% endif %}"
payload_on: "on"
payload_off: "off"
payload_available: "true"
payload_not_available: "false"
- name: "Shelly 1L - Stato comando esterno 2"
state_topic: "shellies/NOME_SHELLY/input/1"
payload_on: "on"
payload_off: "off"
value_template: "{% if value == '1' %} on {% else %} off {% endif %}"
payload_available: "true"
payload_not_available: "false"
device_class: power
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“).
QoS, come spesso capita, è impostato a 1 per una maggiore certezza dell’esecuzione dei comandi.
Stato interruttori/pulsanti
Oltre allo stato degli interruttori intelligenti è possibile, tramite Shelly UNI, censire lo stato degli interruttori o pulsanti collegati fisicamente all’unità, ovvero la posizione degli stessi (0/1).
Per farlo useremo un “Binary Sensor“:
mqtt:
binary_sensor:
- name: "Shelly UNI - Stato comando esterno 1"
state_topic: "shellies/NOME_SHELLY/input/0"
value_template: "{% if value == '1' %} on {% else %} off {% endif %}"
payload_on: "on"
payload_off: "off"
availability_topic: "shellies/NOME_SHELLY/online"
payload_available: "true"
payload_not_available: "false"
device_class: power
- name: "Shelly UNI - Stato comando esterno 2"
state_topic: "shellies/NOME_SHELLY/input/1"
value_template: "{% if value == '1' %} on {% else %} off {% endif %}"
payload_on: "on"
payload_off: "off"
availability_topic: "shellies/NOME_SHELLY/online"
payload_available: "true"
payload_not_available: "false"
device_class: power
Questo può essere utile in caso – tramite la configurazione dell’attuatore – gli interruttori/pulsanti vogliano essere usato solo come comando virtuale da utilizzare in domotica e non per innescare il relè dell’attuatore stesso ma piuttosto altre funzioni. Un po’ come fa lo Shelly i3, per capirci.
Sensori
LONGPUSH – SHORTPUSH
Attraverso l’utilizzo di un sensor possiamo inoltre rilevare se la pressione del pulsante esterno è da attribuirsi a una pressione prolungata (“longpush”) piuttosto che a una “corta” (“short”). Tale sensore potrebbe risultare particolarmente utile, una volta integrato nel nostro hub domotico, qualora decidessimo di utilizzare lo Shelly UNI per scatenare delle automazioni e/o degli scenari a seconda della pressione dei pulsanti esterni:
mqtt:
sensor:
- name: "Shelly UNI - Pressione comando esterno 1 "
state_topic: "shellies/NOME_SHELLY/longpush/0"
value_template: "{{ value }}"
availability_topic: "shellies/NOME_SHELLY/online"
payload_available: "true"
payload_not_available: "false"
- name: "Shelly UNI - Pressione comando esterno 2"
state_topic: "shellies/NOME_SHELLY/longpush/1"
value_template: "{{ value }}"
availability_topic: "shellies/NOME_SHELLY/online"
payload_available: "true"
payload_not_available: "false"
VOLT IN INGRESSO
Tra le funzionalità offerte dallo Shelly UNI è possibile, inoltre, catturare la misura del voltaggio in ingresso dal comando esterno (ricordandone i limiti imposti, come spiegato in recensione). Per farlo, il codice di configurazione (il quale utilizza la piattaforma “MQTT Sensor”) è il seguente:
mqtt:
sensor:
- name: "Shelly UNI - Volt ingresso 1"
state_topic: "shellies/NOME_SHELLY/adc/0"
value_template: "{{ value }}"
unit_of_measurement: "V"
device_class: voltage
availability_topic: "shellies/NOME_SHELLY/online"
payload_available: "true"
payload_not_available: "false"
- name: "Shelly UNI - Volt ingresso 2"
state_topic: "shellies/NOME_SHELLY/adc/1"
value_template: "{{ value }}"
unit_of_measurement: "V"
device_class: voltage
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 “Shelly UNI – Volt ingresso 1” e “Shelly UNI – Volt ingresso 2“).
OVERPOWER (sovraccarico)
Ci doteremo infine di un ulteriore “Binary Sensor” il quale si attivi quando l’unità Shelly UNI dovesse segnalare un eventuale problema di sovraccarico:
mqtt:
binary_sensor:
- name: "Shelly UNI - Overpower 1"
state_topic: "shellies/NOME_SHELLY/relay/0"
value_template: "{% if value == 'overpower' %} on {% else %} off {% endif %}"
payload_on: "on"
payload_off: "off"
availability_topic: "shellies/NOME_SHELLY/online"
payload_available: "true"
payload_not_available: "false"
device_class: "problem"
qos: 0
- name: "Shelly UNI - Overpower 2"
state_topic: "shellies/NOME_SHELLY/relay/1"
value_template: "{% if value == 'overpower' %} on {% else %} off {% endif %}"
payload_on: "on"
payload_off: "off"
availability_topic: "shellies/NOME_SHELLY/online"
payload_available: "true"
payload_not_available: "false"
device_class: "problem"
qos: 0
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:
automation:
- alias: MQTT Announce
trigger:
- event: start
platform: homeassistant
condition: []
action:
- service: mqtt.publish
data:
payload: update
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:
⚠️ Se di Home Assistant ne sai poco ma sei interessato a capirne di più, ti suggeriamo di partire da qui. |
Questa pagina è redatta, manutenuta e aggiornata dallo staff di inDomus, un gruppo di persone molto diverse tra loro che trovi, per domande e supporto, sul forum e sulla chat del sito. Alcuni link sono taggati in qualità di affiliati Amazon e riceviamo un compenso dagli acquisti idonei, utile al sostenimento del sito, ma le nostre recensioni sono tutte indipendenti e non sponsorizzate. Se ti sei perso, a tua disposizione c'è la mappa. |