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

Integrare Shelly Motion a Home Assistant via MQTT

Scopi della guida:
  • Integrare il sensore Shelly Motion all’HUB di domotica personale Home Assistant
  • Livello di difficoltà: bassa
  • 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 per utenti con installazione:
Ambiente 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;
  • questa pagina è materialmente scritta e manutenuta da più individui: non ci si aspetti né si pretenda un supporto personale. In presenza di difficoltà, chiedere supporto alla community sul nostro forum o sulla nostra chat.
Revisione guida: 1.1

Shelly Motion - 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 particolarmente apprezzato in domotica personale per prestazioni, sicurezza 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 Motion e come configurare Home Assistant affinché lo integri in tutte le sue possibili funzioni.

N.b. Sebbene esistano componenti specifici per integrare “facilmente” i device della linea Shelly (come per esempio quello nativo di Home Assistant), 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 anche il componente ShellyForHASS (vedi guida) o altri.

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 dal dispositivo. 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.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 del dispositivo:

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.

Vetrina - Offerte del giorno

Modalità d’uso dello Shelly

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

Lo Shelly Motion è un sensore piuttosto semplice che basa la propria connettività sul Wi-Fi 802.11 b/g/n (come detto solo su frequenze 2,4 Ghz) e che non necessità quindi di alcun BRIDGE/Gateway di appoggio, come accade invece per i sensori basati per esempio su ZigBee, Z-Wave o DECT.

Le funzioni supportate e integrabili dal sensore Shelly Motion sono quelle di rilevazione:

  • di un movimento;
  • dello stato di abilitazione/disabilitazione del sensore di movimento;
  • della vibrazione;
  • della luminosità;
  • della percentuale di carica residua della batteria.

Inoltre il sensore comunica, ad ogni trasmissione, delle telemetrie MQTT che forniscono:

  • ID;
  • indirizzo MAC;
  • indirizzo IP;
  • se sia disponibile un nuovo firmware;
  • la versione del firmware a bordo.

Home Assistant

Vediamo ora come provvedere all’integrazione del sensore nelle varie modalità descritte sopra.

Shelly Motion - Home Assistant via MQTT
alcune delle entità generate dall’integrazione.

Sensore di movimento

Il sensore principale, quello che “riassume” la funzionalità di rilevazione presenza del sensore Shelly Motion è ovviamente un sensore binario dedicato.

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

mqtt:
  binary_sensor:
 - name: "Shelly Motion - Sensore Movimento"
   state_topic: "shellies/NOME_SHELLY/status"
   value_template: "{{ 'ON' if value_json.motion == true else 'OFF'}}"
   qos: 2
   device_class: motion

Questa configurazione genera una entità di tipo “Binary Sensor” chiamata sensor.shelly_motion_sensore_movimento, la quale fornisce lo stato del sensore. Non aggiungiamo volontariamente le voci relative agli availability topic in quanto, trattandosi di un sensore che si collega/scollega alla rete Wi-Fi, tale configurazione darebbe luogo a dei “buchi” nella rappresentazione delle rilevazioni.

N.b. A prescindere, quando si parla di sensori di questo tipo si consiglia solitamente di valutare l’adozione di misure atte a ridurre il numero di dati scritti sul database. In questo caso – dato che le letture del sensore non sono frequentissime, non ce n’è bisogno.

Stato operativo

Dato che lo Shelly Motion prevede la possibilità di disabilitare temporaneamente il sensore di rilevazione del movimento, possiamo definire un sensore che andrà a restituire lo stato di attivazione/disattivazione di tale componente.

La configurazione è la seguente:

mqtt:
  binary_sensor:
 - name: "Shelly Motion - Stato Sensore Movimento"
   state_topic: "shellies/NOME_SHELLY/status"
   value_template: "{{ 'ON' if value_json.active == true else 'OFF'}}"
   qos: 1

Questa configurazione genera una entità di tipo “Binary Sensor” chiamata sensor.shelly_motion_stato_sensore_movimento, il quale fornisce per l’appunto lo stato di attivazione/disattivazione del sensore. Anche qui non aggiungiamo volontariamente le voci relative agli availability topic per gli stessi motivi di cui sopra.

Vibrazione

Interessante poi la possibilità di integrare sull’HUB la rilevazione di vibrazione, utile in domotica per intercettare un tentativo di manomissione del sensore o altro.

mqtt:
  binary_sensor:
  - name: "Shelly Motion - Sensore Vibrazioni"
    state_topic: "shellies/NOME_SHELLY/status"
    value_template: "{{ 'ON' if value_json.active == true else 'OFF'}}"
    qos: 1
    device_class: vibration

L’entità sensore derivante dalla configurazione di cui sopra (binary_sensor.shelly_motion_sensore_vibrazioni) assume lo stato “on” quando rileva vibrazioni e “off” in condizione di quiete. La magnitudo della vibrazione non è disponibile, ma la sensibilità del sensore è regolabile tramite pannello impostazioni del sensore.

Luminosità

Shelly Motion dispone anche di un sensore di luminosità, integrabile a Home Assistant sia per la consultazione sia per l’uso nelle più disparate automazioni.

La configurazione per l’integrazione è la seguente:

mqtt:
  sensor:
  - name: "Shelly Motion - Lux"
    state_topic: "shellies/NOME_SHELLY/status"
    value_template: '{{ value_json.lux}}'
    unit_of_measurement: 'lux'
    qos: 0
    device_class: illuminance

L’entità sensore derivante dalla configurazione di cui sopra (“sensor.shelly_motion_lux“) riporta il dato di luminosità espresso in lux.

Batteria

Comodo, inoltre, avere un sensore che ci comunichi il livello della batteria:

mqtt:
  sensor:
  - name: "Shelly Motion Battery"
    state_topic: "shellies/NOME_SHELLY/sensor/battery"
    value_template: "{{ value.bat }}"
    unit_of_measurement: "%"
    icon: mdi:battery
    qos: 1

Questa configurazione genererà un’entità di tipo “Sensor” chiamata sensor.shelly_motion_battery.

Altro

Sicuramente è possibile dotarsi di vari sensori che forniscano le informazioni relative all’IP, al MAC address e altro, ma forse l’unico sensato è quello relativo alla disponibilità di un nuovo firmware da installare sull’unità.

mqtt:
  binary_sensor:
  - name: "Nuovo firmware"
    payload_on: true
    payload_off: false
    device_class: problem
    state_topic: "shellies/NOME_SHELLY/announce"
    value_template: "{{ value_json.new_fw }}"

Questa configurazione genererà un’entità di tipo “Binary Sensor” chiamata binary_sensor.nuovo_firmware la quale assumerà stato “On” quando lo Shelly comunicherà la disponibilità di un nuovo firmware. Ovviamente è a carico dell’utente utilizzare questa entità per scaturire, via automazione, una qualche tipo di notifica.

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 (1st gen), MQTT e HTTP: comandi utili


⚠️ 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. Se ti sei perso, a tua disposizione c'è la mappa.