
Shelly Plus Smoke este un detector de fum fotoelectric Wi-Fi alimentat cu baterie (CR123A), certificat conform DIN EN 14604. TapHome comunică cu dispozitivul prin MQTT, folosind notificările RPC Gen2+ din topicul events/rpc. Dispozitivul se află în repaus profund cea mai mare parte a timpului pentru a economisi bateria și se trezește periodic, în funcție de valoarea configurată wakeup_period. Evenimentele de alarmă de fum declanșează trezirea imediată și o notificare MQTT.
Șablonul creează un singur dispozitiv Alarmă de fum (mapat ca dispozitiv de tip contact reed) cu două atribute de service Baterie (procent și tensiune). Un mecanism de monitorizare a conectivității urmărește numărătoarea inversă a perioadei de trezire și generează avertizări sau erori atunci când dispozitivul nu a mai raportat de mult timp.
Configurare
ID-ul de client MQTT
Fiecare Shelly Plus Smoke are un ID de client MQTT unic în formatul shellyplussmoke-<MAC12>, unde <MAC12> reprezintă adresa MAC completă de 12 caractere, în hexazecimal cu litere mari (de ex. shellyplussmoke-AABBCCDDEEFF). Acest ID servește și ca prefix implicit al topicului MQTT.
ID-ul de client se găsește:
- Pe eticheta dispozitivului (adresa MAC)
- În interfața web Shelly: Settings → MQTT → Client ID
- Prin API:
GET http://<device-ip>/rpc/Mqtt.GetConfig→ câmpulclient_id
Configurarea șablonului
După importul șablonului în TapHome:
- Deschideți modulul Shelly Plus Smoke
- Setați MQTT Broker IP la adresa brokerului MQTT
- Setați Port (implicit
1883) - Setați parametrul de import MQTT ID la ID-ul de client al dispozitivului (de ex.
shellyplussmoke-AABBCCDDEEFF)
Modulul se abonează la <device-id>/#, iar scriptul de ascultare analizează evenimentele JSON-RPC NotifyFullStatus și NotifyStatus din topicul events/rpc.
Pe Shelly Plus Smoke, MQTT este dezactivat implicit. Activați-l în setările dispozitivului: Settings → MQTT → Enable. Asigurați-vă că
rpc_ntf(notificările RPC) este setat latrue(valoarea implicită). Șablonul se bazează pe notificările dinevents/rpc, nu pe topicurile de stare individuale.
Comportamentul în repaus și raportarea
Shelly Plus Smoke funcționează în modul de repaus profund pentru a prelungi la maximum durata de viață a bateriei:
- Trezire periodică — dispozitivul se trezește la intervalele definite de
sys.wakeup_periodși publică un evenimentNotifyFullStatuscare conține starea bateriei, starea alarmei de fum și perioada de trezire curentă - Eveniment de alarmă — detectarea fumului declanșează trezirea imediată și o notificare
NotifyStatuscu starea alarmei - Între ciclurile de trezire — dispozitivul nu este accesibil prin HTTP și MQTT
Dispozitivul este alimentat de o singură baterie CR123A, cu o durată de viață estimată de până la 5 ani. Nu folosiți acumulatori reîncărcabili — producătorul avertizează explicit împotriva acestui lucru.
Dispozitivul funcționează cu baterie și nu este conectat permanent la brokerul MQTT. Între ciclurile de trezire nu este posibilă nicio comunicație. Dacă în locul în care se află senzorul semnalul Wi-Fi este slab, încercările frecvente de reconectare la trezire pot reduce semnificativ durata de viață a bateriei.
Funcțiile dispozitivului
Alarma de fum
Șablonul mapează starea alarmei de fum pe un dispozitiv de tip contact reed (DeviceType 1030). Scriptul de ascultare analizează evenimentele NotifyStatus din topicul events/rpc și citește params['smoke:0'].alarm:
- ON (alarmă activă) — fum detectat, sirena încorporată a dispozitivului sună la >85 dB
- OFF (fără alarmă) — fum nedetectat, funcționare normală
Starea alarmei este doar pentru citire și se actualizează imediat la detectarea fumului. La evenimentele de alarmă, dispozitivul trimite imediat o notificare MQTT, indiferent de programul de repaus.
Monitorizarea bateriei
Modulul oferă două atribute de service Baterie, care citesc datele din evenimentele NotifyFullStatus:
- Baterie [%] — procentul de încărcare a bateriei din
params['devicepower:0'].battery.percent. Avertizarea de baterie descărcată se declanșează când nivelul scade sub 30 % - Baterie [V] — tensiunea bateriei în volți din
params['devicepower:0'].battery.V. Tensiunea nominală a bateriei CR123A este de 3 V
Ambele valori returnează NaN până la primirea primei măsurători (adică atât timp cât valoarea memorată este încă 0). Datele bateriei se actualizează la fiecare trezire periodică.
Monitorizarea conectivității
Șablonul monitorizează conectivitatea dispozitivului printr-un mecanism bazat pe numărătoare inversă. La fiecare eveniment NotifyFullStatus, scriptul de ascultare stochează valoarea sys.wakeup_period în variabila personalizată wakeup_period. Scriptul de citire scade apoi acest contor cu 60 la fiecare ciclu de interogare (interval de 60 de secunde):
- Contorul ajunge la 0 — dispozitivul nu s-a trezit conform așteptărilor. Contorul se setează la -1 și se generează avertizarea WARNING: „Update not received”
- Contorul ajunge la -86400 — dispozitivul nu a comunicat de 48 de ore. Se generează eroarea ERROR: „Update not received in last 48h”
Când dispozitivul se trezește și trimite un nou NotifyFullStatus, contorul se resetează la valoarea actuală wakeup_period, iar avertizările dispar.
Funcții suplimentare
Shelly Plus Smoke acceptă și funcția de oprire a sunetului alarmei (metoda RPC Smoke.Mute), evenimentele de test al alarmei de fum declanșate de butonul fizic și diagnosticarea puterii semnalului Wi-Fi (RSSI). Dispozitivul publică topicuri de stare ale componentelor individuale când este activat status_ntf. Aceste funcții pot fi adăugate într-o actualizare viitoare a șablonului.
Rezolvarea problemelor
Alarma de fum nu raportează evenimente
- Verificați dacă Shelly Plus Smoke este conectat la Wi-Fi și dacă MQTT este activat în setările dispozitivului (Settings → MQTT → Enable)
- Verificați dacă
rpc_ntfeste setat latrue(implicit) — șablonul necesită notificările RPC dinevents/rpc - Verificați dacă parametrul de import MQTT ID corespunde exact ID-ului de client al dispozitivului (de ex.
shellyplussmoke-AABBCCDDEEFF) - Folosiți un client MQTT (de ex. MQTT Explorer) pentru a vă abona la
<device-id>/#și verificați dacă dispozitivul publicăNotifyFullStatusla trezire - Verificați bateria dispozitivului — o baterie CR123A descărcată împiedică conectarea dispozitivului la Wi-Fi
Monitorizarea conectivității afișează avertizări false
- Mecanismul compară numărătoarea inversă cu perioada de trezire așteptată. Dacă ceasul unității TapHome Core este semnificativ decalat, pot apărea avertizări false
- La alimentarea cu baterie, dispozitivul se trezește doar la intervalul configurat
wakeup_period— pauzele dintre rapoarte sunt normale - Dacă senzorul se află într-un loc cu Wi-Fi intermitent, este posibil să nu se conecteze la unele cicluri de trezire. Verificați puterea semnalului Wi-Fi în locul în care se află senzorul
- După înlocuirea bateriei, poate dura un ciclu complet de trezire până când contorul de monitorizare este inițializat corect
Dispozitivul apare ca contact reed în loc de alarmă de fum
Șablonul TapHome folosește tipul de dispozitiv PacketParserReedContact (DeviceType 1030) pentru a reprezenta alarma de fum. Aceasta este maparea corectă — starea ON înseamnă „Alarmă de urgență” (fum detectat), iar starea OFF înseamnă „OK” (fără fum). Numele dispozitivului în TapHome este „Shelly Plus Smoke”, pentru a indica clar funcția acestuia.