You are currently viewing Shelly e Home Assistant

Shelly e Home Assistant

  • Autore dell'articolo:
  • Categoria dell'articolo:Home Assistant
  • Commenti dell'articolo:15 commenti
  • Ultima modifica dell'articolo:3 Aprile 2021

In questo articolo tratteremo il collegamento dei dispositivi Shelly con Home Assistant analizzando le varie possibilità a disposizione con i loro pro e contro. Ma prima ancora ti presento i dispositivi che secondo me possono esserti più utili per farti un’idea precisa di cosa può servirti per le esigenze di casa tua.
Qui non copriremo quindi i dettagli di come integrare i dispositivi (che comunque se segui i miei consigli sarà facilissimo!) ma questa vuole essere un’analisi delle possibilità, dei pro e contro di ognuna di esse, così da farti una tua idea. Tanti blog, infatti, partono da un punto di vista che il più delle volte non è il più intuitivo né il più saggio. Tanti utenti rischiano quindi partire con la soluzione più complessa o meno aderente alle proprie necessità pensando sia “la cosa giusta” o l’unica soluzione “per non usare il cloud” (ne parlerò meglio più avanti).

Prosegui quindi la lettura con lo spirito di orientarti verso le soluzioni esistenti nel modo che riterrai più opportuno, avendo un quadro della situazione il più completo possibile.

I dispositivi Shelly

La società Allterco Robotics Ltd. con base in Bulgaria, produce una serie di prodotti noti con il marchio Shelly, che stanno riscuotendo un grande successo commerciale, per più di un buon motivo.

Tutti i prodotti Shelly sono basati su microcontrollore ESP8266 e si collegano alla rete wifi a 2,4 GHz.
I loro prodotti vengono suddivisi nelle seguenti categorie:

  • Relays: dispositivi per accendere luci o carichi singoli o doppi a 230V, strip RGBW, dimmer, lettura stato interruttori e carichi 230V. Alcuni possono anche essere usati a 12V, 30-50V.
  • Plug&Play: dispositivi pronti per essere usati come smart plug, lampadine smart e pulsanti, oltrea d un purificatore
  • Sensori: sensori di presenza, temperatura, allagamento, apertura porte/finestre, gas e fumo. Alcuni di essi alimentati a batteria
  • Accessori: pezzi aggiuntivi per i prodotti di cui sopra

I prodotti Shelly danno in dotazione un proprio sistema cloud illimitato incluso nel prezzo di acquisto dei dispositivi. Sebbene questa sia un’ottima opzione per l’utente meno esperto e permette delle semplici automazioni (all’interno del loro ecosistema) non è questo il tema dell’articolo, volendo invece trattare l’integrazione di tali prodotti con l’hub di domotica Home Assistant.

Ma quali sono i vantaggi salienti che caratterizzano i prodotti Shelly rispetto alla concorrenza?

mostra peculiarità dei prodotti Shelly

  • Sono prodotti in Europa (Bulgaria), rispettano quindi le norme CE e UL in quanto a emissioni, sicurezza elettrica, sicurezza dei materiali e qualità costruttiva.
  • L’approccio della società è molto aperto e parzialmente open source. Le API sono aperte a chiunque e ben documentate sul sito. Il firmware originale è quindi totalmente interoperabile così com’è con qualunque sistema che possa effettuare una chiamata HTTP REST o MQTT (anch’esso integrato nativamente nel firmware) e la connessione al cloud è opzionale.
  • La società è molto onesta riguardo ai problemi che si sono verificati nel tempo risultando sempre in post pubblici sul loro gruppo Facebook di assistenza direttamente dal CEO Dimitar Dimitrov, in cui hanno sempre descritto in tutta onestà l’origine del problema e cosa avessero fatto / stessero facendo per risolverlo.
  • Risultato dell’approccio aperto ed onesto è che il firmware può essere sostituito nei dispositivi senza invalidarne la garanzia (anche se non ci sono molti motivi se non particolari per farlo) e che se un dispositivo si brucia anche a causa di un errato collegamento, Allterco Robotics ne spedisce un’altro gratuitamente (se comprati dalla casa madre).
  • I relay, al contrario di quando si usano lampadine smart comandate da interruttori smart, hanno tutti un ingresso collegabile al classico interruttore / deviatore / pulsante così che la modalità d’uso delle luci non subisca alcuna differenza rispetto all’uso in un impianto non domotico e continui a funzionare normalmente in caso di guasti ad Home Assistant o alla rete di casa.
  • Il collegamento wifi, sebbene porti delle complicazioni, ha il grande vantaggio di sfruttare la copertura preesistente della nostra casa tramite il router / sistema mesh / repeater e access point già presenti nella nostra abitazione.
  • Il prezzo non è elevato
  • Ehi, non mi pagano per scrivere questo articolo, sto dando le mie oneste opinioni 🙂

Ne risulta quindi che i dispositivi Shelly possano essere degli utili alleati per domotizzare casa nostra, particolarmente nei casi di retrofitting, ovvero quando l’impianto elettrico è già esistente e non predisposto per la domotica.

Una raccomandazione importante

Prima di iniziare vorrei raccomandarti di valutare attentamente le modifiche all’impianto elettrico. Al di fuori dei prodotti nella categoria Plug&Play gli altri dispositivi richiedono l’installazione a regola d’arte da parte di persone con competenza e conoscenza degli impianti elettrici. Se non ti senti in grado o hai dubbi su come si installano non pensarci due volte: chiedi al tuo elettricista di fiducia.
Con la tensione di casa a 230V non si scherza, un errore può essere fatale!

Sembra un’ovvietà ma il gruppo Facebook di supporto Shelly è pieno di post con foto di dispositivi installati in modo non idoneo, senza usare puntalini e le più basiche norme di installazione.

I migliori dispositivi Shelly con Home Assistant

Ho personalmente provato quasi tutti i dispositivi Shelly e, prima di passare alle integrazioni da utilizzare, posso quindi stilare un elenco di quelli che secondo me sono più utili e a cosa possono servire concretamente, per aiutarti nella valutazione di uno o più di questi dispositivi.

Shelly 1 / Shelly 1L

Link prodotti: Shelly 1 / Shelly 1L
Questi articoli sono due semplici relay (on / off) che accettano anche un ingresso da un interruttore / deviatore / pulsante a 230V così da poter comandare direttamente il carico collegato. Si prestano quindi a domotizzare dei punti luce di impianti tradizionali nascondendo questi dispositivi nella scatola 503 (se c’è un frutto libero), in una scatola di derivazione o dentro la lampada, se c’è posto.
La differenza tra i due è che Shelly 1 può funzionare anche a bassa tensione (12V) mentre Shelly 1L solo a 230V ma non ha necessità di essere collegato anche al neutro.

Shelly 1PM

Link prodotto
Come il precedente anche Shelly 1PM è un relay con ingresso per interruttore / deviatore / tasto a 230V AC o 24-60V DC ma in più misura anche il consumo istantaneo del carico collegato al relay in output.
Sebbene le specifiche lo diano per 16A di consumo massimo ne sconsiglio l’uso su apparecchi molto energivori per lunghi periodi come il forno. Meglio in tal caso utilizzare uno Shelly EM.

Shelly 2.5

Link prodotto
Questo dispositivo è molto versatile in quanto equivale a due Shelly 1PM combinati in un unico device. Ha due relay in uscita e due ingressi per interruttori / deviatori / pulsanti a 230V.
Può essere configurato per gestire due carichi indipendenti come due luci oppure per gestire il motore di una tapparella, facendo divenire i relay interbloccati.
In questa ultima configurazione gestisce la posizione parziale della tapparella effettuando una prima calibrazione automatica ed il rilevamento ostacoli, impostando una soglia di intervento in W.
Unica nota quando usato per carichi accesi costantemente tende a scaldare parecchio, superando anche i 70° ma questo non comporta alcun problema.

Shelly RGBW2

Link prodotto
Anche questo dispositivo è molto versatile, alimentato a 12V o 24V, DC o AC. Può essere utilizzato in due modalità: controller per una lampada o strip RGB o RGBW oppure per controllare fino a quattro luci led in bassa tensione dimmerabili. Anch’esso dispone di un ingresso collegabile ad un interruttore / deviatore / pulsante ma attenzione che in questo caso deve essere un circuito in bassa tensione utilizzante la stessa alimentazione data a Shelly.

Shelly Dimmer 2

Link prodotto
Con questo dispositivo è possibile comandare una illuminazione dimmerabile a 230V (tra quelle supportate, verificare sul sito). Dispone anche di due ingressi per interruttori / deviatori / pulsanti a 230V con cui comandare direttamente il carico. Può essere cablato, se si rispettano certi requisiti, senza utilizzare il neutro (verificare il manuale)

Shelly EM

Link prodotto
Se vuoi misurare l’energia che consumi in ogni istante questo è il dispositivo giusto. Ha due canali cui si collegano due pinze amperometriche (apribili, così non devi nemmeno scollegare le fasi sulle quali li posizionerai…) e un’uscita per collegare un teleruttore. Si può montare nel quadro principale per misurare il consumo totale e il secondo canale può essere usato per misurare la produzione dei pannelli fotovoltaici o, come ho fatto io, per misurare il consumo di una sezione dell’impianto.
Altra modalità di utilizzo è per misurare il consumo in modo sicuro di elettrodomestici energivori come forno, lavastoviglie o piano ad induzione dove sarebbe più saggio usare questo dispositivo piuttosto che uno Shelly 1PM.

Shelly Plug / Shelly Plug S

Link prodotti: Shelly Plug / Shelly Plug S
Una Smart Plug davvero versatile. La Shelly Plug S è solo poco più grande di un adattatore schuko (forse la più compatta che puoi trovare!) e supporta un carico massimo di 2500W. Rileva il consumo istantaneo e la potenza assorbita nel tempo, oltre che poter spegnere e accendere il carico collegato.
Shelly Plug, invece, è la sorella più ingombrante ma con carico massimo di 16A.

Shelly Gas / Shelly Smoke

Link prodotti: Shelly Gas / Shelly Smoke
Per la sicurezza della casa questi due dispositivi sono l’ottima versione moderna dei rilevatori di fumo/gas che, oltre a suonare, segnalano la concentrazione di gas / fumo e possono far scattare automazioni, allarmi, notifiche e tutto quel che vuoi.
Shelly Gas esiste in due versioni: LPG per il gas GPL (le bombole) e CNG per il metano. Entrambe richiedono una presa 230V.
Shelly Smoke funziona invece a batteria o alimentato da micro USB e rileva l’eventuale fumo di combustione presente.

Nell’elenco sopra avrai notato che non ho incluso alcun dispositivo a batteria (H&T, D&W, Flood). Tali device, infatti, sono quelli che preferisco meno in quanto il vincolo della tecnologia di comunicazione wifi, sebbene perfettamente idoneo ai dispositivi alimentati, diventa un handicap per i dispositivi a batteria. Sia per quanto riguarda la scarsa durata e grande dimensione della batteria che per il principio di funzionamento.
Tali dispositivi, infatti, sono normalmente disconnessi e si riconnettono al wifi solo in caso di necessità (per aggiornare i dati). In tale modalità impostarne una configurazione differente diventa molto difficile se non si è presenti in luogo premendo il pulsantino che permette di effettuare una connessione al wifi.
Se sei interessato a sensori porta, temperatura, allagamento, ecc ti consiglio piuttosto di orientarti alla tecnologia Zigbee, molto più idonea a tale utilizzo, con batterie a bottone della durata di oltre un anno e molto più veloci nell’invio di cambio stato. Ti consiglio anche di leggere gli articoli dedicati a Zigbee: Home Assistant e ZigBee: orientiamoci e ZigBee: copertura, router, canali.

Il cloud tra leggende metropolitane e false credenze

Rispondendo spesso a frequenti dubbi espressi da molti utenti sul gruppo Facebook Home Assistant Italia mi sono reso conto che c’è un grosso falso mito che aleggia tra gli utenti che si avvicinano a questo mondo

Se integro Shelly con una integrazione nativa lo uso attraverso il cloud, se invece lo integro con MQTT allora non uso il cloud.
Questa credenza è semplicemente FALSA!

La verità è che… non esiste alcuna integrazione che utilizza il cloud di Shelly (c’è una piccola eccezione che nominerò descrivendo l’integrazione ShellyForHass).

E allora perchè c’è questa diffusa credenza? Secondo me ci sono più fattori sommati.

  • Il primo deriva da Sonoff, diffusi prima che i prodotti Shelly diventassero noti. Essi utilizzavano il cloud obbligatoriamente. Per poterli usare in locale si era soliti cambiarne il firmware (invalidandone la garanzia appena acquistati… al contrario degli Shelly) con il famoso Tasmota, che appunto comunica in MQTT. Può quindi venir facile pensare allo stesso modo anche con Shelly, che però ha dei principi ben diversi alla base.
  • Il secondo è che per vincoli della limitata memoria presente sui dispositivi se si utilizza MQTT si è obbligati a disattivarne il cloud in quanto la memoria non basterebbe a far funzionare entrambe le funzionalità contemporaneamente. Questo significa che con l’integrazione nativa il cloud può rimanere attivato. Attenzione, il fatto che possa essere attivato non significa che debba né tantomeno che lo si stia utilizzando. E’ semplicemente una possibilità in più.

Le possibili integrazioni di Shelly in Home Assistant

Fugata questa grossa leggenda infondata passiamo ora ad analizzare le tre integrazioni disponibili in Home Assistant che permettono di utilizzare i nostri dispositivi Shelly.

Per ognuna di esse analizzerò i pro e contro così da farci un’idea più precisa di cosa abbia ognuna da offrire così che ti possa orientare su quella che ti sembra più idonea al tuo modo di valutare.

Su quest’ultimo punto vorrei insistere. Per questo come per altri argomenti dove bisogna effettuare una scelta non credere a me, non credere agli esperti, non credere a chi ha una risposta perentoria. Acquisisci le informazioni che leggi e fatti una tua opinione personale che sia il più conscia possibile perchè solo te sai quali sono le tue priorità.

Integrazione Shelly nativa

Questa è l’integrazione inclusa in Home Assistant “out of the box”. E’ la più recente ma proprio per questo è stata realizzata nel migliore dei modi, sfruttando l’esperienza di ShellyForHass alle spalle. Nel momento in cui scrivo, con la release 2020.3 di Home Assistant, supporta il 100% dei dispositivi Shelly, compreso il nuovissimo Shelly Motion.
E’ certamente l’integrazione più facilmente fruibile (basta un click…) Espone quasi tutte le informazioni che i device sono in grado di fornire (ad esempio segnale wifi o temperatura interna), semplicemente attivando le entità per default disattivate che ti interessano. Risulta ben funzionante, rapida e intuitiva.

Ha la capacità di prelevare il nome configurato nei nostri dispositivi dalla memoria locale degli stessi, facilitando l’operazione di rinominare le entità.

Nota: è possibile tenere attivo il cloud di Shelly parallelamente all’utilizzo locale da parte di Home Assistant.

Protocolli di comunicazione

Comunicazione da Home Assistant al dispositivo

I comandi da Home Assistant al dispositivo vengono inviati direttamente dall’integrazione utilizzando dei semplici comandi HTTP REST che implementano out of the box tutti i dispositivi Shelly e sono documentati molto bene. La comunicazione è quindi diretta e veloce tra Home Assistant ed il nostro dispositivo.

Comunicazione dal dispositivo ad Home Assistant

Le comunicazioni dei nostri dispositivi verso Home Assistant, invece, utilizzano CoAp-msg, un protocollo concorrente a MQTT ma ritenuto migliore in termini di velocità e latenza. Una comparazione tra i due protocolli sarà trattata più avanti nell’articolo.
Il risultato è che la ricezione degli eventi come “luce spenta” è immediata, con la latenza più bassa possibile.

Pro e contro dell’integrazione nativa

PRO

  • Semplicissima da utilizzare, pochi click del mouse
  • Supporta tutti i dispositivi Shelly esistenti, compreso il nuovissimo Shelly Motion
  • Integrazione nativa , supportata e attivamente sviluppata
  • Protocolli efficienti e comunicazione diretta con i dispositivi
  • Realizzata di recente: utilizza le migliori tecniche

Contro

CONTRO

  • Supporta solo i firmware 1.8 o seguenti (anche se non lo vedo un problema. Li aggiorni i tuoi Shelly… vero?)

ShellyForHass

Questa è l’integrazione più anziana, sviluppata dal rivenditore Shelly per la Svezia è diventata diffusa in quanto ottimamente funzionante e supportata attraverso la sua pagina GitHub.
E’ installabile manualmente come custom component o, molto più comodamente, usando HACS.

Negli anni sono state fatte tante migliorie, implementazioni e bugfixing. E’ quindi ora in uno stato di maturità anche se il suo sviluppo sembra andare da un po’ di tempo a questa parte un po’ a rilento in quanto il responsabile Håkan Åkerberg probabilmente ha poco tempo da dedicarvi.

Sono supportati tutti i dispositivi Shelly al di fuori del nuovo Shelly Motion. Come l’integrazione nativa si può usare senza configurare nulla anche se un minimo di opzioni sono consigliate per avere qualche sensore in più come la temperatura interna del dispositivo o il segnale wifi. Si tratta comunque di pochissime banali righe.

Accennavo precedentemente ad una eccezione nell’uso del cloud di questa integrazione: è possibile impostare l’accesso al cloud Shelly nella configurazione (qua il riferimento) all’unico fine di prelevarne il nome già assegnato quando viene rilevato un nuovo dispositivo. Non c’è alcun altro utilizzo del cloud, che risulta solo un plus di comodità opzionalmente attivabile, una feature in più insomma. Questa è comunque una feature che l’integrazione nativa implementa meglio, prelevando il nome del dispositivo direttamente dal dispositivo spesso, focalizzandosi questa sui nuovi firmware che implementano la memorizzazione locale del nome dispositivo. ShellyForHass, invece, gestisce tutte le versioni di firmware.

Una feature che ha più dell’integrazione nativa è un server light MQTT interno, riuscendo quindi a comunicare, se così si vuole, in MQTT con i dispositivi senza usare un broker esterno.

Nota: è possibile tenere attivo il cloud di Shelly parallelamente all’utilizzo locale da parte di Home Assistant (se non si utilizza MQTT)

Protocolli di comunicazione

Comunicazione da Home Assistant al dispositivo

Al pari dell’integrazione nativa, i comandi da Home Assistant al dispositivo vengono inviati direttamente dall’integrazione utilizzando dei semplici comandi HTTP REST che implementano out of the box tutti i dispositivi Shelly e sono documentati molto bene. La comunicazione è quindi diretta e veloce tra Home Assistant ed il nostro dispositivo.

Comunicazione dal dispositivo ad Home Assistant

Le comunicazioni dei nostri dispositivi verso Home Assistant, sempre come l’integrazione nativa, utilizzano CoAp-msg, un protocollo concorrente a MQTT ma ritenuto migliore in termini di velocità e latenza.
Il risultato è che la ricezione degli eventi come “luce spenta” è immediata, con la latenza più bassa possibile.

Pro e contro di ShellyForHass

PRO

  • Semplicissima da utilizzare, pochi click del mouse al massimo poche righe per alcune banali opzioni
  • Supporta tutte le versioni di firmware e tutti i dispositivi (tranne il nuovo motion, ad oggi)
  • Integrazione matura e ben collaudata. C’è però da dire che nuovi problemi vengono affrontati in tempi lunghi quindi in caso di stravolgimenti firmware potrebbe trasformarsi in un “contro”…
  • Protocolli efficienti e comunicazione diretta con i dispositivi
  • Ha la possibilità di configurare i dispositivi in MQTT e attivare un light MQTT server interno all’integrazione per far comunicare alcuni/tutti i dispositivi qualora si avessero problemi con il router o per esigenze particolari, senza quindi usare alcun broker esterno.

Contro

CONTRO

  • Quando escono nuovi dispositivi o nuovi problemi i tempi di reazione dell’autore non sono sempre fulminei per via del suo poco tempo, accennato precedentemente
  • L’autore ha ultimamente poco tempo da dedicare e lo sviluppo sembra essersi fermato

MQTT

L’utilizzo di Shelly in MQTT è esposto da molti come fosse l’unico degno di nota, la modalità migliore a disposizione ma non è esattamente così…

Questa modalità di utilizzo prevede la disattivazione del cloud sui dispositivi Shelly (perchè, come detto precedentemente, per vincoli di memoria non è possibile tenere attive entrambe le funzionalità) e l’attivazione della modalità MQTT.

Andrà inoltre installato e configurato un MQTT broker su altro dispositivo o sullo stesso che esegue Home Assistant (in cui è disponibile come Add-on con Mosquitto Broker).

In seguito, su Home Assistant, andrà installata l’integrazione MQTT che va fatta collegare al broker MQTT di cui sopra.

Sarà infine necessario scrivere righe di configurazione e creare delle automazioni che effettuino delle operazioni sui dispositivi al riavvio di Home Assistant.

Nota: non è possibile tenere attivo il cloud di Shelly parallelamente all’utilizzo locale da parte di Home Assistant.

Protocolli di comunicazione

Comunicazione da Home Assistant al dispositivo

I comandi da Home Assistant vengono inviati tramite comunicazione TCP al broker MQTT che si occuperà a sua volta di inviare la comunicazione al dispositivo attraverso un comando MQTT su di una connessione TCP al dispositivo.

Ne consegue che la latenza non possa che essere superiore rispetto alle due soluzioni precedenti in quanto vengono effettuate due connessioni TCP passando da un software esterno, prima di raggiungere il dispositivo.

Comunicazione dal dispositivo ad Home Assistant

La ricezione degli eventi dai dispositivi, in questa modalità, avviene per mezzo di una comunicazione MQTT che il dispositivo effettua al broker attraverso una connessione TCP. Il broker, a sua volta, invierà questo messaggio ad Home Assistant per mezzo di un altra connessione TCP attraverso l’integrazione MQTT.

Ne consegue che la latenza non possa che essere superiore rispetto alle due soluzioni precedenti in quanto vengono effettuate due connessioni TCP passando da un software esterno, prima di raggiungere Home Assistant.
Le connessioni TCP sono poi più pesanti per i dispositivi embedded e meno performanti, da un punto di vista della latenza. Ecco perchè confrontandolo con un protocollo basato su UDP e per giunta diretto non può che avere un tempo superiore.

Pro e contro di MQTT

PRO

  • Ottima se si utilizza MQTT in altri progetti, ad esempio in firmware personali su microcontrollori con cui si vuole comandare dei dispositivi o se ci sono più fruitori, oltre ad home assistant, dei dati scambiati su MQTT

Contro

CONTRO

  • Protocollo prolisso e non autodescrittivo basato su testo ASCII e connessioni TCP
  • Necessaria applicazione esterna per funzionare (MQTT broker)
  • Comunicazioni multiple TCP per ogni comando inviato o ricevuto
  • Può risultare più complicato da configurare, per gestire tutti i dati ricevuti, i topic, i parametri e le unità di misura.

Conclusione: quale integrazione per Shelly in Home Assistant?

Qual è quindi il migliore dei modi per collegare i nostri dispositivi Shelly a Home Assistant? La risposta non è univoca e condivisa da tutti. Esporrò di seguito la mia opinione che potrai valutare secondo il tuo personale criterio avendo acquisito i dati esposti sopra.

La prima delle valutazioni da fare è se usare MQTT o i protocolli nativi.
A mio avviso l’utilizzo di MQTT aveva senso soltanto prima del firmware 1.10 di Shelly. Prima di tale versione, infatti, l’utilizzo di CoIot (usato per inviare gli eventi dai dispositivi a Home Assistant) era vincolato alla modalità multicast, che quindi non permetteva il funzionamento senza polling in caso di Shelly in subnet/VLAN differenti da Home Assistant o problemi del proprio router a gestire multicast.

Con l’aggiornamento 1.10 è possibile però, accedendo via browser all’IP del dispositivo Shelly e andando in Internet & Security -> Advanced – Developer settings -> CoIoT peer, inserire l’ip di Home Assistant (senza porta!) per indirizzare i pacchetti di aggiornamento stato CoIoT direttamente all’IP senza passare da multicast, risolvendo quindi qualunque problema di routing precedentemente risolvibile solo con MQTT.

E’ quindi secondo me molto meglio utilizzare i protocolli nativi di Shelly, ovvero HTTP REST + CoAp-msg e non MQTT.

Questo perchè, come spiegato sopra, MQTT “passa la palla” al broker, prima di arrivare ad Home Assistant, con multiple connessioni TCP, aumentando quindi la latenza e rendendo il sistema più complicato senza una ragione razionale.
C’è inoltre da tenere in considerazione che il protocollo MQTT è formattato con stringhe di testo estese intellegibili ASCII (quindi prolisse) ed è basato su TCP, mentre CoAp-msg (parte di CoIoT) è basato su UDP, molto più snello e indicato per messaggi a bassa latenza, e i messaggi sono binari e più compatti, aumentando ulteriormente il gap tra i due protocolli.

Per chi volesse approfondire consiglio la lettura di uno studio comparativo in uno scenario di utilizzo tra MQTT e CoAp.

Nel caso decidessi di utilizzare MQTT avresti comunque due possibilità:

  • se hai già un broker MQTT configurato e attivo per altro, potresti utilizzare quello
  • se non lo hai ti consiglio invece di provare ShellyForHass che permette l’utilizzo dei dispositivi in MQTT, qualora lo si volesse, integrando al suo interno un server MQTT light che non richiede alcuna configurazione né addon esterno. Anche la configurazione degli Shelly avverrebbe automaticamente, semplificando tutta la gestione.

Se hai optato invece, come me, per HTTP REST + CoAp-msg hai due possibilità:

  • Integrazione nativa
  • ShellyForHass

L’integrazione nativa è realizzata ex novo, con concetti più nuovi, aderenza del 100% con le API e programmazione asincrona e dall’aggiornamento 2020.3 di Home Assistant (appena rilasciato mentre scrivo) supporta il 100% dei dispositivi compreso il nuovissimo Shelly Motion. Sarebbe facile pensare che possano presentarsi problemi di gioventù del progetto ma in realtà uno degli autori (Simone Chemelli) era contributore anche di ShellyForHass e ne ha trasportato il know-how del lungo sviluppo nella nuova integrazione che, effettivamente, devo appuntare avesse davvero pochi issue aperti su github che comunque sono stati tutti chiusi per la release 2020.3. Lo sviluppo futuro, ad ogni modo, sembra molto vigoroso, visto il ritmo di implementazione dei vari dispositivi.

ShellyForHass è un progetto più vecchio e con qualche possibilità in più ma non sviluppato attivamente, negli ultimi periodi. Allo stato attuale funziona molto bene ma in caso di necessità di modifiche i tempi potrebbero non essere fulminei… Rispetto all’integrazione nativa offre due possibilità aggiuntive: supporto dei firmware precedenti all’1.8 e supporto ad un light MQTT server interno, qualora lo si volesse usare.

Quale delle due usare quindi? Entrambe sono valide ma credo sia meglio iniziare con l’integrazione nativa a meno che non servano delle peculiarità di ShellyForHass (Firmware < 1.8 o serva MQTT)
Ringrazio Simone Chemelli, sviluppatore di entrambi i progetti, per avermi condiviso delle utili informazioni interne che mi hanno convinto che questa sia la strada giusta da seguire.

Se non hai quindi un’esigenza specifica di quelle espresse sopra, sia che tu sia alle prime armi, sia che tu sia un guru di Home Assistant, ti consiglio di provare l’integrazione nativa, che si ottiene semplicemente da Impostazioni -> Integrazioni Aggiungi integrazione e selezionando Shelly smart home.

Se invece ti serve una delle feature che ha in più (firmware vecchi, MQTT interno) allora ShellyForHass sarà comunque un’ottima scelta.

Aggiornamenti lenti con integrazione nativa o ShellyForHass?

Come accennato sopra è possibile che il tuo router non gestisca correttamente il multicast (o non sia configurato correttamente) per far funzionare il protocollo CoIoT per i pacchetti CoAp-msg usati dagli Shelly per inviare gli aggiornamenti sugli stati in tempo reale.
Questo può accadere anche se il tuo impianto è sezionato in diverse subnet / VLAN.

Cosa succede in questi casi? Sia l’integrazione nativa che ShellyForHass utilizzeranno il polling per determinare lo stato dei dispositivi (accesi / spenti, stato degli input, temperatura, consumo, ecc), il che significa richiedere ai dispositivi ogni intervallo configurato lo stato ai dispositivi (dovrebbe essere 30 secondi, in ShellyForHass è configurabile). Questa è una situazione ovviamente ben lontana dall’essere desiderabile…

Ci si può accorgere facilmente, ad esempio, tenendo in mano lo smartphone con l’app companion che mostra lo stato dell’entità di uno Shelly e premendo il pulsante collegato al suo input. Se il cambio di stato visibile sullo smartphone è immediato allora CoIoT sta funzionando correttamente.

Se invece passano diversi secondi dalla pressione dell’interruttore all’aggiornamento dello stato sullo smartphone allora è del tutto probabile che CoIoT non stia funzionando per uno dei motivi elencati ad inizio paragrafo.

Ma niente paura, risolvere è semplicissimo! Basta configurare i dispositivi Shelly per usare unicast e non multicast.

Per farlo anzitutto assicurati che i dispositivi Shelly siano aggiornati alla versione 1.10 o seguente in quanto unicast è configurabile solo da tale release.

A questo punto accedi all’interfaccia web usando un pc o un telefono ma usando il browser, non l’app. Basta digitare l’indirizzo IP del dispositivo Shelly nel tuo browser.

Ora vai in Internet & Security -> Advanced – Developer settings: assicurati che Enable CoIot sia abilitato e nella casella CoIoT peer inserisci l’indirizzo IP (senza porta) del tuo server Home Assistant al posto di mcast. Poi premi SAVE.

Ripeti questa operazione per tutti i tuoi dispositivi Shelly e rieffettua il collaudo dello smartphone: vedrai che ora i tempi di risposta sono immediati!

Se i tempi di risposta sono immediati non ha senso configurare unicast come descritto in questo capitolo. Se non hai problemi lascia “mcast” nel campo CoIoT peer in quanto è più flessibile, non dovrai infatti ricordarti di aggiornare l’IP di Home Assistant qualora un giorno dovessi cambiarlo.

Un aiuto nella decisione

A riassunto della mia opinione personale motivata nel paragrafo precedente riporto un semplice flow chart decisionale di come effettuerei io la valutazione dell’integrazione da usare per i dispositivi Shelly in Home Assistant.
Parti da START e arriva all’integrazione consigliata.

Ti è piaciuto questo contenuto?

Se ti è stato utile l’articolo che hai letto potresti pensare di darmi una mano offrendomi un caffè!
Oltre ad aiutarmi a star sveglio nelle nottate di ricerche e scrittura mi daresti una mano concreta nel sostenere le spese del server web, incentivandomi a produrre altri contenuti di qualità.
(se non vedi il tasto di seguito clicca QUI)

Henrik Sozzi

Sono un analista programmatore per lavoro e per passione. Amo la domotica, la stampa 3D e la tecnologia in generale.

Questo articolo ha 15 commenti.

  1. Matteo

    Sempre chiaro!!!
    Matteo

    1. Henrik Sozzi

      Grazie Matteo! In realtà ho appena modificato l’articolo aggiornando molte informazioni grazie al contributo di Simone Chemelli, sviluppatore di ShellyForHass e ora dell’integrazione nativa. Non cambiano i concetti fondamentali ma alcuni pro/contro, la valutazione finale ora propende per l’integrazione interna e il flow chart è ora aggiornato.

  2. Alessandro Terrusso

    Complimenti Henrik, ma soprattutto grazie! Come ti anticipavo per gli altri articoli, ci vuole parecchio tempo e nervoso per arrivare, con l’esperienza, ad una consapevolezza di questo tipo. Riesci sempre ad esporre le cose con una banalità disarmante. La cosa più bella è che, alla fine dell’articolo, il lettore prende consapevolmente la sua strada. grazie ancora!

    1. Henrik Sozzi

      Alessandro grazie mille! Queste tue parole sono la migliore ricompensa alle ore di sonno perse per scrivere questi articoli ❤️

    1. Henrik Sozzi

      Hello Bieniu, Shelly Discovery seems a good way to simplify Shelly configuration using MQTT as it automatically create entitites in Home Assistant when MQTT topics are detected and I think is a must if you’re planning to use MQTT. However, in my point of view using MQTT, even with the help of this script, is much more complicated than using native integration or ShellyForHass. Just see the minimum configuration requested by this script or the full configuration (that adds to the MQTT broker and per device configuration) and compare it to the minimum configuration requested by other integration (none) 🙂
      In the end this does not add or remove anything to the protocol comparation and considerations 😉 I would use MQTT only in the final flow chart case.

  3. Antonio

    Complimenti per la guida Henrik!

    Ho scoperto per caso il tuo sito e ho già letto tutti gli articoli che hai pubblicato!

    In questo articolo in particolare, mi hai “convinto” a provare l’integrazione nativa di Shelly. Avendo già la configurazione con mqtt attiva, cosa devo fare per passare alla configurazione nativa?
    Grazie

    1. Henrik Sozzi

      Ciao e grazie Antonio! Se vuoi provare l’integrazione nativa ti consiglio anzitutto di fare un backup / snapshot prima di iniziare, così puoi tornare indietro 🙂
      Poi rimuovi l’integrazione MQTT in HA (il Broker se non lo usi per altro lo puoi anche eliminare ma anche se lo lasci non da fastidio)
      A quel punto configuri i dispositivi Shelly disattivando MQTT, è importante, non saltarlo (e riattivando il cloud, se lo volessi utilizzare ma ricordo che è parallelo e non c’entra niente con HA). Vai nelle integrazioni, aggiungi l’integrazione “Shelly smart home” e i device saranno scoperti automaticamente. Se così non fosse premi Configura e verranno scoperti tutti. Segui comunque le indicazioni ufficiali: https://www.home-assistant.io/integrations/shelly/

  4. Andrea

    Onestamente non sono proprio d’accordo…
    Il problema più grande della integrazione nativa è che funziona con metodo “polling” vuol dire che aspetta un determinato numero di tempo prima di andare a vedere cosa succede sullo shelly. Questo è assolutamente inaccettabile quando si ha bisogno di essere immediatamente notificati di qualcosa (vedi per esempio, quando si preme l’interruttore quando lo shelly è configurato in detached mode “.

    Allo stesso modo, MQTT risolve questo problema ed usando lo script che scopre automaticamente gli shelly, hai tutto configurato in pochi secondi (e con molti più sensori)…

    1. Henrik Sozzi

      Il discorso che fai avrebbe senso… non fosse che parte da un presupposto errato: l’integrazione nativa, così come ShellyForHass, non si basano su polling!
      Leggi con attenzione l’articolo in quanto espongo i protocolli utilizzati. E scoprirai che per la ricezione degli eventi si basano su CoAp-msg (un protocollo binario ed efficiente basato su UDP) e HA riceverà quindi le informazioni più velocemente rispetto a MQTT (per le ragione esposte nell’articolo).
      Solo se il tuo router non supporta correttamente il multicast allora queste integrazioni passeranno al polling in quanto “meglio di niente”. In Realtà ShellyForHass ha anche una modalità aggressiva per risottoscrivere regolarmente il multicast su router che lo implementano male.
      Io sono stato in questo caso con un TP-Link Deco M5 ed ho preferito però risolvere il problema, piuttosto che circumnavigarlo… Ho preso un Fritz 7590 e il multicast (oltre che tutto il resto) funziona a meraviglia.
      Infine non è vero che con MQTT hai molti più sensori in quanto sia con ShellyForHass che con l’integrazione nativa hai a disposizione il 100% delle informazioni che i dispositivi Shelly sono in grado di fornire (compresa ad esempio temperatura interna, potenza del segnale wifi, stato di sovraccarico, ecc)
      Tutto questo è scritto nell’articolo comunque…

  5. sircame

    Guida abbastanza lunga, ma molto interessante. Ho iniziato da poco, ora ho tutto zigbee, ma mi serviva qualcosa che andasse, non a sostituire ma ad affiancare, i pulsanti fisici a muro.
    Ora ho 2 shelly plug S, in seguito conto di fare tutta la casa con gli shelly.
    Grazie! Ora mi vado a guardare tutti i tuoi articoli, perche’ se sono scritti come questo, rende il tutto facile come leggere un romanzo.
    GRAZIE!
    P.s. come faccio a sapere se il mio router accetta il multicast? lo sapro’ quando andró a provare gli shelly o ci sono dei link/guide da guardare?

    1. Henrik Sozzi

      Ti ringrazio, purtroppo è difficile rendere breve un articolo che contiene tante informazioni. Tanti altri rendono brevi gli articoli non esponendo le scelte scrivendo “si fa così, così e così” ma è un dei motivi per cui ho aperto il mio blog: non nascondo cosa preferisco ma espongo le alternative e soprattutto argomenti tecnicamente i pro ed i contro delle scelte così che ognuno si possa fare una propria opinione razionale. E questo purtroppo richiede tante “parole” 🙂 Ma vedo che la cosa è apprezzata e questo mi rende felice.
      Riguardo al multicast ho a lungo ricercato un metodo semplice per capirlo ma non ne ho trovato uno che non richiedesse scrivere un articolo a sè… Tu però hai degli shelly Plug S, basta usare quelli. Assicurati che abbiano l’ultima versione fw (1.10.x), Integrali in Home Assistant con l’integrazione nativa, mostra il dispositivo su Home Assistant dal PC e con il telefono tramite l’app Shelly o tramite la pagina raggiungibile al suo indirizzo IP ne cambi lo stato. Se vedi riflettersi il nuovo stato immediatamente (ordine di millisecondi) su PC allora il multicast funziona. Se invece passano secondi prima che lo stato del PC si aggiorni allora non funziona. In alternativa puoi impostare l’ip al posto di mcast nelle impostazioni (come spiegato in fondo all’articolo) per esser sicuro, a quel punto non ti interessa che funzioni o no.

  6. Roberto

    E’ possibile integrare uno shelly installato in un altra abitazione tramite cloud? Quando provo ad aggiungerlo tramite l’integrazione ufficiale mi chiede l’indirizzo ip.
    So che tramite mqtt potrei integrarlo facilmente ma perderei il cloud.

    1. Henrik Sozzi

      Ciao Roberto, che io sappia tramite cloud non c’è nulla che ti permetta di integrare gli Shelly. Credo che sia perché avendo delle API locali ben documentate e rientrando nel principio di HA di comandare tutto senza cloud la strada giusta sia quella. Però certo avere la possibilità di usare uno Shelly remoto non sarebbe male. Puoi fartelo a mano usando le API rest di Shelly.cloud, se ti piace la “hard way” 😀
      Ad ogni modo puoi farlo con integrazione nativa a patto di avere una VPN o un IP statico dove hai lo shelly remoto.

Rispondi