TapHome

Shelly Plus Smoke

Packet Parser → MQTT
Trimis de
Ultima actualizare: 10. 2026

Acest dispozitiv acceptă mDNS

În loc să folosiți o adresă IP, puteți accesa dispozitivul la:

shellyplussmoke-{MAC}.local

Înlocuiți {MAC} cu adresa MAC a dispozitivului dvs. (majuscule, fără două puncte).

TapHome acceptă mDNS — folosirea unui nume de gazdă este mai fiabilă decât un IP static.

Shelly Plus Smoke

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âmpul client_id
Configurarea șablonului

După importul șablonului în TapHome:

  1. Deschideți modulul Shelly Plus Smoke
  2. Setați MQTT Broker IP la adresa brokerului MQTT
  3. Setați Port (implicit 1883)
  4. 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 la true (valoarea implicită). Șablonul se bazează pe notificările din events/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 eveniment NotifyFullStatus care 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 NotifyStatus cu 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
  1. Verificați dacă Shelly Plus Smoke este conectat la Wi-Fi și dacă MQTT este activat în setările dispozitivului (Settings → MQTT → Enable)
  2. Verificați dacă rpc_ntf este setat la true (implicit) — șablonul necesită notificările RPC din events/rpc
  3. Verificați dacă parametrul de import MQTT ID corespunde exact ID-ului de client al dispozitivului (de ex. shellyplussmoke-AABBCCDDEEFF)
  4. Folosiți un client MQTT (de ex. MQTT Explorer) pentru a vă abona la <device-id>/# și verificați dacă dispozitivul publică NotifyFullStatus la trezire
  5. Verificați bateria dispozitivului — o baterie CR123A descărcată împiedică conectarea dispozitivului la Wi-Fi
Monitorizarea conectivității afișează avertizări false
  1. 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
  2. La alimentarea cu baterie, dispozitivul se trezește doar la intervalul configurat wakeup_period — pauzele dintre rapoarte sunt normale
  3. 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
  4. 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.

Cum se instalează în TapHome

Cerințe preliminare

  • Dispozitiv Shelly conectat la Wi-Fi (2,4 GHz), de ex. prin aplicația Shelly sau prin punctul de acces propriu al dispozitivului
  • Broker MQTT care rulează în rețeaua dvs. locală (de ex. Mosquitto, Home Assistant sau brokerul integrat TapHome)
  • TapHome CCU în aceeași rețea cu brokerul

La dispozitivele Gen1, activarea MQTT dezactivează Shelly Cloud. Cele două nu pot funcționa simultan. La dispozitivele Gen2/Plus această limitare nu se aplică.

Pasul 1 — Activați MQTT pe dispozitivul Shelly

Dispozitive Gen1 (Shelly 1, 1PM, 2.5, EM, 3EM, Plug S, RGBW2, Dimmer, TRV…)

  1. Deschideți interfața web Shelly: http://<device-ip>/
  2. Accesați Internet & Security → Advanced — MQTT
  3. Activați MQTT
  4. Setați MQTT Server: <broker-ip>:<port> (de ex. 192.168.1.10:1883)
  5. Opțional, setați MQTT User și MQTT Password, dacă brokerul dvs. necesită autentificare
  6. Faceți clic pe Save — dispozitivul repornește și se conectează la broker

Dispozitive Gen2 / Plus (Shelly Plus 1, Plus 1PM, Plus 2PM, Plus Plug S, Plus H&T, Pro 3EM…)

  1. Deschideți interfața web Shelly: http://<device-ip>/
  2. Accesați Settings → MQTT
  3. Activați MQTT
  4. Setați Server: <broker-ip>:<port> (de ex. 192.168.1.10:1883)
  5. Câmpul Client ID este precompletat cu ID-ul dispozitivului (de ex. shellyplus1pm-AABBCCDDEE) — lăsați-l neschimbat, dacă nu aveți un motiv anume să îl modificați
  6. Faceți clic pe Save și reporniți dispozitivul

Pentru a verifica funcționarea MQTT, folosiți un client MQTT (de ex. MQTT Explorer) și abonați-vă la shellies/# (Gen1) sau <device-id>/# (Gen2). Ar trebui să vedeți mesajele de stare trimise de dispozitiv.

Pasul 2 — Aflați Device ID / MQTT Client ID

Unele șabloane necesită parametrul Device ID sau MQTT Client ID. Acesta este identificatorul unic folosit în topicurile MQTT.

  • Gen1: se găsește pe etichetă, ca adresă MAC (de ex. AABBCCDDEE). Device ID = shelly<model>-<mac>, de ex. shelly1pm-AABBCCDDEE
  • Gen2/Plus: se găsește în interfața web Shelly, la Settings → Device Info → Device ID, sau pe eticheta dispozitivului

Pasul 3 — Configurați dispozitivul în TapHome

  1. În TapHome adăugați un nou modul Packet Parser (MQTT)
  2. IP Address: introduceți adresa IP a brokerului MQTT (de ex. 192.168.1.10)
  3. Port: 1883 (implicit; pentru TLS folosiți 8883)
  4. Device ID / MQTT Client ID: introduceți valoarea de la pasul 2 (dacă șablonul o necesită)
  5. Importați șablonul — TapHome se abonează automat la topicurile dispozitivului

Dispozitive disponibile

Shelly Plus Smoke Modul
Variabile personalizate
deviceid (string)ID-ul de dispozitiv MQTT folosit ca prefix al topicului — format: shellyplussmoke-{MACADDRESS} (îl găsiți în interfața web Shelly → Settings → MQTT → Client ID)
Alarmă de fum Contact reed Doar citire

Starea detectorului de fum fotoelectric — ON = Alarmă de urgență (fum detectat), OFF = OK (fără fum). Alarma declanșează imediat o notificare MQTT și sirena de >85 dB.

boolean JSON-RPC (NotifyStatus → params.smoke:0.alarm)
Atribute de service
Baterie [%]Procentul de încărcare a bateriei — avertizare de baterie descărcată la <30 %. Baterie CR123A, durată de viață de până la 5 ani.
Baterie [V]Tensiunea bateriei în volți — tensiune nominală de 3 V pentru bateria CR123A

Alarmă de fum

Citire (modul)
if wakeup_period = 0
	# after init
else
	wakeup_period := wakeup_period - 60;
	if wakeup_period = 0
		wakeup_period := -1;
	end
end

if wakeup_period < 0
	ADDWARNING("Update not received");
end

if wakeup_period < -86400
	ADDERROR("Update not received in last 48h");
end
Ascultător
if RECEIVEDMSG.TOPIC = deviceid + "/events/rpc"
	var method := parsejson(RECEIVEDMSG.PAYLOAD, "method", true); 
	var params := parsejson(RECEIVEDMSG.PAYLOAD, "params", true);
	if method = "NotifyFullStatus"
		wakeup_period := parsejson(params, "sys.wakeup_period");
		battery_V := parsejson(params, "devicepower:0.battery.V");
		battery_percent := parsejson(params, "devicepower:0.battery.percent");
	end
	if method = "NotifyStatus" and !ISNULL(parsejson(params, "smoke:0", true))
		var alarm := parsejson(params, "smoke:0.alarm", true);
		if !ISNULL(alarm)
			Rc := alarm;
		end
	end
end

if battery_percent < 30
	ADDWARNING("Low battery");
end
Atribute de service
Battery [%]
if battery_percent != 0
	return(battery_percent);
else
	return(NaN);
end
Battery [V]
if battery_V != 0
	return(battery_V);
else
	return(NaN);
end
Conexiune: Packet Parser → MQTT • Nume gazdă: shellyplussmoke-{MAC}.local
Îmbunătățiri posibile (4)
  • Smoke Mute State — smoke:0.mute — true when alarm sound is suppressed via Smoke.Mute RPC. Could show muted status in TapHome.
  • External Power Status — devicepower:0.external.present — always false for Plus Smoke (battery-only device), but available in API.
  • WiFi RSSI — sys.wifi.rssi — signal strength in dBm. Could be used for placement diagnostics.
  • Smoke Alarm Test Event — smoke.alarm_test webhook event — triggered when user presses test button. Not captured by current template.

Surse

Ați găsit o problemă la acest șablon de dispozitiv?

Spuneți-ne ce nu funcționează, ce lipsește sau cum ar trebui să se comporte șablonul. Feedbackul dvs. ne ajută să păstrăm catalogul corect.

Verificat de TapHome

Doriți să folosiți acest șablon în TapHome Core?

Deschideți acest șablon în Customer Portal pentru a-l aplica într-una dintre locuințele dvs. sau pentru a propune o îmbunătățire și a o trimite înapoi în catalog.

Deschideți în portal