Scopi della guida:
Concetti affrontati:
|
Componenti software utilizzate:
Prerequisiti:
Dispositivi fisici utilizzati:
|
GUIDA INDICATA A UTENTI CON ISTALLAZIONE:![]() |
|
NOTE E DISCLAIMER
|
|
Revisione guida: 1.4 |
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 Door/Window 2 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 installati e poi configurati presso l’app Shelly Cloud (per Android e iOS) e quindi siano già parte della propria rete domestica.
Si parte
- Abilitare la modalità LAN e MQTT su Shelly
- Modalità d’uso dello Shelly
- Home Assistant
- 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 dal sensore. 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.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 del sensore:
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.
Lo Shelly Door / Windows 2 è un sensore alla fine piuttosto semplice sebbene apprezzabile in quanto wireless basato su Wi-Fi – quindi installabile nella propria domotica personale senza necessità alcuna di 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 Door/Window 2 sono quelle di rilevazione:
- dell’apertura e della chiusura del varco;
- della temperatura;
- della luminosità;
- dell’inclinazione (tilt);
- della vibrazione.
Inoltre il sensore comunica, ad ogni trasmissione, una telemetria MQTT di annuncio che fornisce:
- ID;
- indirizzo MAC;
- indirizzo IP;
- se sia disponibile un nuovo firmware;
- la versione del firmware a bordo.
Ricordiamo che il sensore ha la particolarità di connettersi solo temporaneamente alla rete Wi-Fi, giusto il tempo di pubblicare i dati sul broker, per poi disconnettersi. Il ciclo riparte ad ogni variazione di stato, quindi è più che normale rilevare questo comportamento.
Home Assistant
Vediamo ora come provvedere all’integrazione del sensore sia in termini di sensoristica che dei diversi parametri diversi. Si noti come in ogni configurazione il NOME_SHELLY presente nel codice di configurazione proposto sia personalizzato come spiegato sopra.
Sensori
Partiremo ovviamente dall’aspetto più peculiare del sensore, ovvero la rilevazione dello stato di apertura, per poi valutare gli elementi accessori.
APERTURA E CHIUSURA
Ovviamente il primo sensore andremo a definire sarà quello che fornirà alla domotica le letture fornite dallo Shelly Door/Window 2.
La configurazione è la seguente:
mqtt:
binary_sensor:
- name: "Shelly Door Window 2 Sensor"
state_topic: "shellies/NOME_SHELLY/sensor/state"
payload_on: 'open'
payload_off: 'close'
device_class: door
qos: 2
Questa configurazione genera una entità di tipo “Binary Sensor” chiamato sensor.shelly_door_window_2_sensor, il quale fornisce lo stato del sensore. Non aggiungiamo volontariamente le voci relative all'”availability topic” perché, trattandosi di un sensore che si collega/scollega alla rete, tale configurazione darebbe luogo a dei “buchi” nella rappresentazione delle rilevazioni.
N.b. 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. |
Vibrazione
Interessante poi la possibilità di integrare la rilevazione delle vibrazioni, utile in domotica per intercettare, ancora prima dell’avvenuta apertura, magari un tentativo di scasso.
mqtt: binary_sensor: - name: "Shelly Door Window 2 Vibration" state_topic: "shellies/NOME_SHELLY/sensor/vibration" payload_on: '1' payload_off: '0' device_class: vibration qos: 1
Tale entità sensore (binary_sensor.shelly_door_window_2_vibration) diventa “on” quando rileva vibrazioni e “off” quando non le rileva. La magnitudo della vibrazione non è rilevata, ma la sensibilità di rilevazione è regolabile tramite l’app Shelly o l’interfaccia web del sensore.
Temperatura
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.
mqtt: sensor: - name: "Shelly Door Window 2 Temperature" state_topic: "shellies/NOME_SHELLY/sensor/temperature" value_template: '{{ value|round(1) }}' unit_of_measurement: '°C' device_class: temperature qos: 0
Il sensore, di nome sensor.shelly_door_window_2_temperature riporta il dato in centigradi della temperatura rilevata.
Luminosità
Il sensore, come già detto, dispone anche di un comodo sensore di luminosità.
mqtt:
sensor:
- name: "Shelly Door Window 2 Lux"
state_topic: "shellies/NOME_SHELLY/sensor/lux"
value_template: '{{ value }}'
unit_of_measurement: 'lux'
device_class: illuminance
qos: 0
Il sensore, di nome sensor.shelly_door_window_2_lux riporta il dato in lux della luce rilevata.
Inclinazione
Tra i vari sensori, disponibile anche un inclinometro che indica il numero di gradi di inclinazione. Utilità relativa, ma comunque si integra così:
mqtt: sensor: - name: "Shelly Door Window 2 Tilt" state_topic: "shellies/NOME_SHELLY/sensor/tilt" value_template: '{{ value }}' unit_of_measurement: '°' icon: mdi:angle-acute qos: 0
Il sensore, di nome sensor.shelly_door_window_2_tilt riporta il dato in inclinazione dell’unità, in gradi.
BATTERIA
Comodo, inoltre, avere un sensore che ci comunichi il livello della batteria:
mqtt:
sensor:
- name: "Shelly Door Window 2 Battery"
state_topic: "shellies/NOME_SHELLY/sensor/battery"
value_template: "{{ value }}"
unit_of_measurement: "%"
icon: mdi:battery
qos: 1
Questa configurazione genererà un’entità di tipo “Sensor” chiamata sensor.shelly_door_window_2_battery.
ERRORE
Dotiamoci di un utile sensore per rilevare eventuali anomalie del nostro Shelly Door/Window 2.
La configurazione è la seguente:
mqtt:
binary_sensor:
- name: "Shelly Door Window 2 Error"
state_topic: "shellies/NOME_SHELLY/sensor/error"
payload_on: '1'
payload_off: '0'
device_class: problem
qos: 1
Il sensore generato (sensor.shelly_door_window_2_error) ci fornirà quindi un immediato riscontro di eventuali problematiche.
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.
Ricapitolo telemetrie MQTT
Di seguito la lista dei topic telemetrici MQTT pubblicati (ciclicamente o al cambio di determinati stati) dal componente:
shellies/NOME_SHELLY/sensor/state close
shellies/NOME_SHELLY/sensor/tilt 1
shellies/NOME_SHELLY/sensor/vibration -1
shellies/NOME_SHELLY/sensor/temperature 18.50
shellies/NOME_SHELLY/sensor/lux 0
shellies/NOME_SHELLY/sensor/illumination dark
shellies/NOME_SHELLY/sensor/battery 100
shellies/NOME_SHELLY/sensor/error 0
shellies/NOME_SHELLY/sensor/act_reasons ["sensor","light"]
shellies/NOME_SHELLY/info
{"wifi_sta":{"connected":true,"ssid":"WIFI","ip":"192.168.1.50","rssi":-55},"cloud":{"enabled":true,"connected":false},"mqtt":{"connected":true},"time":"","unixtime":0,"serial":1,"has_update":false,"mac":"E8DB84D4DDC3","cfg_changed_cnt":0,"actions_stats":{"skipped":0},"is_valid":true,"tmp":{"value":18.30,"units":"C","tC":18.30,"tF":64.94, "is_valid":true},"lux":{"value":76, "illumination": "bright", "is_valid":true},"accel":{"tilt":-1, "vibration":-1},"sensor":{"state":"close", "is_valid":true},"bat":{"value":100,"voltage":6.08},"act_reasons":["sensor","light"],"update":{"status":"unknown","has_update":false,"new_version":"","old_version":"20210413-154114/v1.10.2-gb89901a"},"ram_total":50864,"ram_free":38400,"fs_size":233681,"fs_free":153612,"uptime":2}
shellies/NOME_SHELLY/announce
{"id":"shelly_dw2","model":"SHDW-2","mac":"E8DB84D4DDC3","ip":"192.168.1.50","new_fw":false,"fw_ver":"20210413-154114/v1.10.2-gb89901a"}
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. |