
Lo Shelly Motion 2 (SHMOS-02) è un sensore di movimento PIR Wi-Fi alimentato a batteria (Li-ion 6500 mAh, ricaricabile tramite USB-C). TapHome comunica con il dispositivo tramite MQTT — il protocollo consigliato per i dispositivi Shelly alimentati a batteria, poiché il sensore è in stato di sospensione per la maggior parte del tempo e pubblica dati solo in corrispondenza degli eventi di risveglio (rilevamento movimento o timer periodico).
A differenza dei dispositivi Gen1 Shelly di tipo relè che pubblicano topic di stato individuali, il Motion 2 pubblica il proprio stato completo tramite un singolo payload JSON /info al risveglio. Lo script listener di TapHome analizza questo JSON per estrarre lo stato del movimento, la luminosità, la temperatura, il livello della batteria e gli attributi diagnostici.
Il template supporta fino a 5 sensori Shelly Motion 2 per modulo. Ogni istanza del sensore è identificata da una variabile personalizzata sensorN_topic che punta all’MQTT Client ID del dispositivo.
Configurazione
Device ID
Ogni Shelly Motion 2 ha un MQTT Device ID univoco nel formato shellymotion2-<MAC>, dove <MAC> è l’indirizzo MAC completo a 12 caratteri in formato esadecimale maiuscolo (es. shellymotion2-AABBCCDDEEFF).
Il Device ID si trova:
- Sull’etichetta del dispositivo (indirizzo MAC)
- Nell’interfaccia web di Shelly: Settings → Device Info
- Tramite API:
GET http://<device-ip>/settings→ campodevice.hostname
Configurazione del template
Dopo aver importato il template in TapHome:
- Apri il modulo Shelly Motion 2 MQTT
- Imposta l’MQTT Broker IP e la Porta (predefinita
1883) - Per ogni istanza del sensore, imposta la variabile personalizzata
sensorN_topicsul Device ID dello Shelly Motion 2 corrispondente (es.shellymotion2-AABBCCDDEEFF)
Il modulo si sottoscrive a shellies/# e gli script listener filtrano i messaggi in base al prefisso del topic configurato.
Configura solo gli slot dei sensori che utilizzi effettivamente. Gli slot non configurati (con il valore predefinito
shellymotion2-deviceid) mostreranno un messaggio di errore che invita a impostare il topic corretto.
Impostazioni del sensore di movimento
Lo Shelly Motion 2 dispone di diversi parametri configurabili che influenzano il comportamento di rilevamento. Questi si configurano direttamente sul dispositivo tramite la sua interfaccia web (http://<device-ip>/), non tramite TapHome:
| Parametro | Intervallo | Descrizione |
|---|---|---|
| Sensibilità | 1–256 | Sensibilità del rilevamento movimento (inferiore = più sensibile) |
| Tempo cieco | 1–1440 min | Minuti di ignoramento del movimento dopo un rilevamento |
| Conteggio impulsi | 1–4 | Movimenti consecutivi necessari per confermare il movimento |
| Modalità operativa | ANY / DARK / TWILIGHT / BRIGHT | Quando il rilevamento è attivo in base alla luce ambientale |
| Tempo di sospensione | 0–86400 s | Intervallo di risveglio periodico in secondi |
Tempi di sospensione più brevi aumentano la freschezza dei dati ma riducono la durata della batteria. L’intervallo di risveglio predefinito è sufficiente per la maggior parte dei casi d’uso. Gli eventi di movimento attivano sempre un risveglio immediato indipendentemente dal timer di sospensione.
Funzionalità del dispositivo
Rilevamento movimento
Ogni istanza del sensore è mappata come dispositivo Reed Contact con capacità “security” in TapHome. Lo stato del movimento viene analizzato dal topic shellies/<id>/info — in particolare il campo $.sensor.motion nel payload JSON:
true→ Allarme (movimento rilevato)false→ OK (nessun movimento)
Il sensore si risveglia e pubblica il proprio stato quando viene rilevato un movimento (in base alle impostazioni di sensibilità, tempo cieco e conteggio impulsi), e anche durante gli intervalli di risveglio periodici.
Attributi di servizio
Ogni istanza del sensore espone 14 attributi di servizio a livello di dispositivo, tutti analizzati dal payload JSON /info:
| Attributo | Campo sorgente | Descrizione |
|---|---|---|
| Indirizzo IP | $.wifi_sta.ip | Indirizzo IP Wi-Fi del sensore |
| Indirizzo MAC | $.mac | Indirizzo MAC hardware |
| Batteria | $.bat.voltage, $.bat.value | Tensione e percentuale batteria (es. 3,83V (97%)) |
| Segnale | $.wifi_sta.rssi | Potenza del segnale Wi-Fi in dB |
| Cloud abilitato | $.cloud.enabled | Se Shelly Cloud è abilitato |
| Cloud connesso | $.cloud.connected | Se il dispositivo è connesso a Shelly Cloud |
| Ora dispositivo | $.time | Ora corrente sul dispositivo |
| Luminosità | $.lux.value | Livello di luce ambientale in lux |
| Temperatura | $.tmp.value, $.tmp.units | Lettura della temperatura interna |
| Tempo di attività | $.uptime | Tempo dall’ultimo riavvio |
| Versione FW | $.fw_info.fw | Versione firmware corrente |
| Aggiornamento FW | $.update.has_update | Se è disponibile un aggiornamento firmware |
| RAM libera | $.ram_total, $.ram_free | Memoria disponibile |
| Spazio FS libero | $.fs_size, $.fs_free | Spazio di archiviazione filesystem disponibile |
Un avviso di batteria scarica viene attivato automaticamente quando il livello della batteria scende sotto il 20%.
Funzionalità aggiuntive (non implementate)
Lo Shelly Motion 2 pubblica anche il rilevamento vibrazioni/manomissione ($.sensor.vibration, sensibilità configurabile 0–80), la categoria di illuminazione ($.lux.illumination — dark/twilight/bright) e lo stato del caricatore USB ($.charger) tramite il payload JSON /info. Lo stato online/offline è disponibile tramite il topic LWT (shellies/<id>/online). Queste funzionalità sono disponibili nell’output MQTT del dispositivo ma non sono mappate nel template TapHome attuale. Possono essere aggiunte in un futuro aggiornamento del template.
Risoluzione dei problemi
Il sensore non segnala dati
- Verifica che lo Shelly Motion 2 sia connesso al Wi-Fi e che l’MQTT sia abilitato nelle impostazioni del dispositivo
- Controlla che la variabile personalizzata
sensorN_topiccorrisponda esattamente al Device ID (es.shellymotion2-AABBCCDDEEFF) - Usa un client MQTT (es. MQTT Explorer) per sottoscriverti a
shellies/#e verificare che il sensore pubblichi messaggi al risveglio - Il Motion 2 è alimentato a batteria e pubblica dati solo al risveglio — attiva un evento di movimento per forzare un risveglio
Lo stato del movimento non si aggiorna
- Controlla che la lente del sensore PIR non sia ostruita e che il sensore sia montato all’altezza consigliata (1,8–2,5 m)
- Se il sensore è stato installato di recente, verifica le impostazioni di sensibilità e tempo cieco nell’interfaccia web del dispositivo — un tempo cieco elevato significa che il sensore ignora il movimento per periodi più lunghi dopo ogni rilevamento
- Regola il conteggio impulsi se il sensore si attiva troppo raramente (inferiore = meno movimenti consecutivi necessari)
- Controlla in TapHome lo stato del dispositivo Reed Contact — 1 = movimento rilevato (allarme), 0 = nessun movimento (OK)
La batteria si scarica rapidamente
- Lo Shelly Motion 2 utilizza una batteria Li-ion ricaricabile integrata (6500 mAh) caricata tramite USB-C, con una durata attiva tipica di 12–18 mesi
- Risvegli frequenti dovuti a elevata attività di movimento o brevi intervalli di sospensione scaricano la batteria più velocemente
- L’abilitazione di SSL su MQTT riduce significativamente la durata della batteria — usa MQTT semplice (porta 1883) su una rete locale affidabile
- Assicura un segnale Wi-Fi forte nella posizione del sensore — un segnale debole comporta tempi di connessione più lunghi ad ogni risveglio
I dispositivi Gen1 Shelly non supportano MQTT su TLS senza un impatto significativo sulla batteria. La comunicazione tra il sensore e il broker MQTT è tipicamente non crittografata (MQTT semplice, porta 1883). Assicurati che il broker MQTT si trovi su una rete locale affidabile.
L’abilitazione di MQTT sui dispositivi Gen1 Shelly disabilita la connettività Cloud. MQTT e Cloud non possono coesistere sullo stesso dispositivo.