
Lo Shelly Plus Smoke è un allarme fumo fotoelettrico Wi-Fi alimentato a batteria (CR123A), certificato DIN EN 14604. TapHome comunica con il dispositivo tramite MQTT utilizzando le notifiche RPC Gen2+ sul topic events/rpc. Il dispositivo trascorre la maggior parte del tempo in sonno profondo per risparmiare batteria e si sveglia periodicamente in base al wakeup_period configurato. Gli eventi di allarme fumo attivano un risveglio immediato e una notifica MQTT.
Il template crea un singolo dispositivo Allarme fumo (mappato su un Reed Contact) e due attributi di servizio Batteria a livello di modulo. Un watchdog di connettività monitora il conto alla rovescia del periodo di risveglio e genera avvisi o errori quando il dispositivo non ha comunicato per un periodo prolungato.
Configurazione
MQTT Client ID
Ogni Shelly Plus Smoke ha un MQTT Client ID univoco nel formato shellyplussmoke-<MAC12>, dove <MAC12> è l’indirizzo MAC completo a 12 caratteri in esadecimale maiuscolo (es. shellyplussmoke-AABBCCDDEEFF). Questo ID serve anche come prefisso predefinito dei topic MQTT.
Il Client ID si trova:
- Sull’etichetta del dispositivo (indirizzo MAC)
- Nell’interfaccia web Shelly: Settings → MQTT → Client ID
- Tramite API:
GET http://<device-ip>/rpc/Mqtt.GetConfig→ campoclient_id
Configurazione del template
Dopo l’importazione del template in TapHome:
- Apri il modulo Shelly Plus Smoke
- Imposta l’MQTT Broker IP sull’indirizzo del broker MQTT
- Imposta la Port (predefinita
1883) - Imposta il parametro di importazione MQTT ID sul Client ID del dispositivo (es.
shellyplussmoke-AABBCCDDEEFF)
Il modulo si iscrive a <device-id>/# e lo script listener analizza gli eventi JSON-RPC NotifyFullStatus e NotifyStatus dal topic events/rpc.
MQTT è disabilitato per impostazione predefinita sullo Shelly Plus Smoke. Abilitalo nelle impostazioni del dispositivo: Settings → MQTT → Enable. Assicurati che
rpc_ntf(notifiche RPC) sia impostato sutrue(predefinito). Il template si basa sulle notificheevents/rpc, non sui singoli topic di stato.
Comportamento di sonno e segnalazione
Lo Shelly Plus Smoke opera in modalità sonno profondo per massimizzare la durata della batteria:
- Risveglio periodico — il dispositivo si sveglia a intervalli definiti da
sys.wakeup_periode pubblica un eventoNotifyFullStatuscontenente lo stato della batteria, lo stato dell’allarme fumo e il periodo di risveglio corrente - Evento allarme — un evento di rilevamento fumo attiva un risveglio immediato e una notifica
NotifyStatuscon lo stato dell’allarme - Tra i cicli di risveglio — il dispositivo non è raggiungibile via HTTP e MQTT
Il dispositivo è alimentato da una singola batteria CR123A con una durata prevista fino a 5 anni. Non utilizzare batterie ricaricabili — il produttore avverte esplicitamente contro questo.
Il dispositivo è alimentato a batteria e non è permanentemente connesso al broker MQTT. Tra i cicli di risveglio, nessuna comunicazione è possibile. Se la posizione del sensore ha un segnale Wi-Fi debole, frequenti tentativi di riconnessione al risveglio possono ridurre significativamente la durata della batteria.
Capacità del dispositivo
Allarme fumo
Il template mappa lo stato dell’allarme fumo su un dispositivo Reed Contact (DeviceType 1030). Lo script listener analizza gli eventi NotifyStatus sul topic events/rpc e legge params['smoke:0'].alarm:
- ON (allarme attivo) — fumo rilevato, il cicalino integrato del dispositivo suona a >85 dB
- OFF (allarme cancellato) — nessun fumo, funzionamento normale
Lo stato dell’allarme è in sola lettura e si aggiorna immediatamente al rilevamento del fumo. Il dispositivo attiva una notifica MQTT immediata per gli eventi di allarme indipendentemente dalla programmazione del sonno.
Monitoraggio batteria
Il modulo espone due attributi di servizio Batteria che leggono dagli eventi NotifyFullStatus:
- Batteria [%] — percentuale di carica dalla
params['devicepower:0'].battery.percent. Avviso di batteria scarica sotto il 30% - Batteria [V] — tensione batteria in Volt da
params['devicepower:0'].battery.V. Tensione nominale 3V per batteria CR123A
Entrambi i valori restituiscono NaN prima della ricezione della prima misurazione (ovvero quando il valore memorizzato è ancora 0). I dati della batteria si aggiornano ad ogni risveglio periodico.
Watchdog di connettività
Il template monitora la connettività del dispositivo tramite un meccanismo basato su conto alla rovescia. Ad ogni evento NotifyFullStatus, lo script listener memorizza il valore sys.wakeup_period nella variabile personalizzata wakeup_period. Lo script di lettura decrementa questo contatore di 60 ad ogni ciclo di polling (intervallo di 60 secondi):
- Contatore raggiunge 0 — il dispositivo non si è svegliato come previsto. Il contatore viene impostato a -1 e viene generato un WARNING: “Update not received”
- Contatore raggiunge -86400 — il dispositivo è silenzioso da 48 ore. Viene generato un ERROR: “Update not received in last 48h”
Quando il dispositivo si sveglia e invia un nuovo NotifyFullStatus, il contatore viene ripristinato al valore wakeup_period aggiornato, cancellando tutti gli avvisi.
Capacità aggiuntive
Lo Shelly Plus Smoke supporta anche una funzione di silenziamento (Smoke.Mute metodo RPC) per sopprimere il suono dell’allarme, eventi di test dell’allarme fumo attivati dal pulsante fisico e diagnostica della potenza del segnale WiFi (RSSI). Il dispositivo pubblica topic di stato individuali dei componenti quando status_ntf è abilitato. Queste capacità possono essere aggiunte in un futuro aggiornamento del template.
Risoluzione dei problemi
L’allarme fumo non segnala eventi
- Verifica che lo Shelly Plus Smoke sia connesso al Wi-Fi e che MQTT sia abilitato nelle impostazioni del dispositivo (Settings → MQTT → Enable)
- Controlla che
rpc_ntfsia impostato sutrue(predefinito) — il template richiede notifiche RPC suevents/rpc - Conferma che il parametro di importazione MQTT ID corrisponda esattamente al Client ID del dispositivo (es.
shellyplussmoke-AABBCCDDEEFF) - Usa un client MQTT (es. MQTT Explorer) per iscriverti a
<device-id>/#e verifica che il dispositivo pubblichiNotifyFullStatusal risveglio - Controlla la batteria del dispositivo — una batteria CR123A scarica impedisce al dispositivo di connettersi al Wi-Fi
Il watchdog di connettività mostra falsi avvisi
- Il watchdog confronta il conto alla rovescia con il periodo di risveglio previsto. Se l’orologio del TapHome Core è significativamente sfasato, possono apparire falsi avvisi
- Con alimentazione a batteria, il dispositivo si sveglia solo all’intervallo
wakeup_periodconfigurato — intervalli tra le segnalazioni sono previsti - Se il sensore si trova in una posizione con Wi-Fi intermittente, potrebbe non riuscire a connettersi in alcuni cicli. Verifica la potenza del segnale Wi-Fi
- Dopo la sostituzione della batteria, il dispositivo potrebbe necessitare di un ciclo di risveglio completo prima che il contatore del watchdog si inizializzi correttamente
Il dispositivo appare come Reed Contact invece di allarme fumo
Il template TapHome utilizza il tipo dispositivo PacketParserReedContact (DeviceType 1030) per rappresentare l’allarme fumo. Questa è la mappatura corretta — lo stato ON significa “Allarme emergenza” (fumo rilevato) e lo stato OFF significa “OK” (nessun fumo). Il nome del dispositivo in TapHome è “Shelly Plus Smoke” per indicare chiaramente la sua funzione.