community italiana di domotica personale
 
Integrare Shelly 1 Plus a Home Assistant via MQTT

Integrare Shelly 1 Plus a Home Assistant via MQTT

Scopi della guida:
  • Integrare l’attuatore Shelly 1 Plus all’HUB di domotica personale Home Assistant
  • Livello di difficoltà: media
  • Categoria d’integrazione: Local Push
Concetti affrontati:
  • Configurazione software
Componenti software utilizzate:
Prerequisiti:
  • Home Assistant configurato e funzionante
  • Componente/i Shelly da integrare già configurato/i in Wi-Fi
Dispositivi fisici utilizzati:
GUIDA INDICATA A UTENTI CON ISTALLAZIONE:
Ambienti Home Assistant HassOS-Supervised-Core
NOTE E DISCLAIMER
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata e realizzata SOLO da personale qualificato;
  • qualsiasi modifica non prevista attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno infatti puro scopo didattico) e fa decadere garanzia, omologazioni e certificazioni di qualità; dei dispositivi interessati;
  • tutte le tecniche descritte si intendono applicate a software e firmware aggiornati alle ultime versioni disponibili;
  • gli articoli di inDomus sono totalmente indipendenti e non sponsorizzati. Se mai questo cambiasse, verrà segnalato chiaramente sulle pagine oggetto di sponsorizzazione;
  • questa pagina è materialmente scritta e manutenuta da più individui: non ci si aspetti né si pretenda un supporto personale. In caso di difficoltà, chiedere supporto alla community sul nostro forum o sulla nostra chat;
  • se hai bisogno di orientarti, c'è la mappa.
Revisione guida: 1.3

Shelly 1 Plus - Home Assistant

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 solitamente 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.

Fino ad oggi abbiamo sempre consigliato e ritenuto migliore l’integrazione via MQTT per una questione di performance, di libertà nei confronti di integrazioni che prevedessero la presenza del cloud (vedi approfondimento). Con i nuovi device di seconda generazione abbiamo avuto modo di apprezzare l’introduzione dello standard RPC, evidenziando come sia ora possibile controllare e monitorare i nostri Shelly sempre nello stesso modo ma utilizzando, volendo, tecnologie e protocolli diversi, per lo più in modalità Local Push.

Vista questa uniformità, vista la maturità raggiunta dall’integrazione Shelly già inclusa in Home Assistant e viste le diversità a livello di API che rendono di fatto più contorta l’integrazione via MQTT, per questi device noi di inDomus consigliamo di utilizzare quindi l’integrazione nativa di Shelly su Home Assistant.

Nonostante ciò, ci teniamo a mostrarvi come integrare il device utilizzando MQTT (quindi, uno dei possibili RPC Channel previsti da questi nuovi componenti) sia per mostrarvi effettivamente di cosa stiamo parlando che per cercare di rendere più chiaro il da farsi nel caso in cui qualcuno volesse optare per questa soluzione.

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

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 “Settings“, poi “MQTT“:

Shelly Plus - Settings

Selezionare solo le voci “Enable MQTT Control” e “Generic Status Update“; compilare inoltre gli altri campi in base alle proprie esigenze. Nel caso in cui il broker fosse in ascolto su una porta diversa dalla 1883 standard, specificare l’indirizzo in termini di IP:PORTA (eg. 192.168.1.10:1883).

Cliccare infine su “Save settings“.

Modalità d’uso dello Shelly

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

Trattandosi di un attuatore a singolo canale, esso viene tipicamente utilizzato per controllare un punto luce, una presa elettrica o comunque un carico generico: va da sé che l’integrazione da realizzare sia questa, ovvero dotarsi di uno “Switch” per attivare/disattivare tale interruttore.

Nei paragrafi che seguono scopriremo come integrare via MQTT queste funzionalità.

N.b. A differenza del modello Shelly Plus 1PM, lo Shelly 1 non dispone di sensori rilevazione di assorbimento elettrico né sensori di temperatura e surriscaldamento, quindi alla fine l’integrazione risulta piuttosto basica.

Home Assistant

Vediamo ora come provvedere all’integrazione dell’attuatore, ipotizzando l’uso come “Relay”, nonché come sensori di diversa natura sopra descritti.

Relè

Ipotizziamo di aver collegato un carico al singolo canale d’uscita dello Shelly 1 e un pulsante/interruttore murale per controllare il canale.

L’obiettivo dell’integrazione dev’essere dunque quello di dotarsi, presso Home Assistant, di uno “Switch” il quale non solo agisca sullo Shelly in modo da poter attivarne il relè, 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“.

La configurazione, dunque, è la seguente:

mqtt:
  switch:
  - name: "Switch"
    command_topic: NOME-SHELLY/command/switch:0
    payload_on: 'on'
    payload_off: 'off'
    state_topic: "NOME-SHELLY/status/switch:0"
    value_template: "{{ value_json.output }}"
    state_on: true
    state_off: false
    availability_topic: "NOME-SHELLY/online"
    payload_available: 'true'
    payload_not_available: 'false'
    optimistic: false 

Availability topic e stato

L’availability topic  viene pubblicato in automatico dallo Shelly con la retain, sarà quindi sempre disponibile sulla coda del broker. Lo stato invece dovremo recuperarlo si all’avvio di Home Assistant, sia a cadenza regolare visto che, nei device di seconda generazione, di default non viene pubblicato lo stato ogni 30 secondi. Questa cosa è possibile modificarla andando a creare appositi script direttamente sul device oppure, come indicato di seguito, creando la classica automazione su Home Assistant

Vi mostriamo quindi di seguito come abbiamo pensato noi questa automazione. Innanzi tutto dobbiamo fare in modo che scatti all’avvio di Home Assistant e che poi giri ogni “tot” secondi per recuperare lo stato del device.

automation:
- id: shelly_status_update
  alias: "Shelly Status Update"
  trigger:
  # L'automazione scatta al termine dello start di Home Assistant
  - platform: homeassistant 
    event: start
  # Il secondo trigger occorre per fare un polling cadenzato ogni 30s
  - platform: time_pattern  # Polling Status
    seconds: "/30"
  action:
    - service: mqtt.publish
      data:
        topic: "shellies/command"
        payload: "status_update" 

Le API Shelly di seconda generazione: una panoramica tecnica


⚠️ 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.