TapHome

Shelly Plus Smoke

Packet Parser → MQTT
Beküldő
Utoljára frissítve: 03. 2026
Shelly Plus Smoke

A Shelly Plus Smoke egy elemes (CR123A) Wi-Fi fotoelektromos füstriasztó, DIN EN 14604 tanúsítvánnyal. A TapHome MQTT-n keresztül kommunikál az eszközzel, Gen2+ RPC értesítésekkel az events/rpc topicon. Az eszköz az idő nagy részét mély alvásban tölti az elem kímélése érdekében, és a konfigurált wakeup_period szerint ébred periodikusan. Füstriasztási események azonnali ébredést és MQTT értesítést váltanak ki.

A sablon egyetlen Füstriasztó eszközt (Reed Contact-ra leképezve) és két modul szintű Akkumulátor szervizattribútumot hoz létre. A csatlakozási watchdog az ébredési visszaszámlálót figyeli, és figyelmeztetéseket vagy hibákat jelez, ha az eszköz hosszabb ideje nem jelentett.

Konfiguráció

MQTT Client ID

Minden Shelly Plus Smoke egyedi MQTT Client ID-vel rendelkezik shellyplussmoke-<MAC12> formátumban, ahol a <MAC12> a teljes 12 karakteres MAC-cím nagybetűs hexadecimális formában (pl. shellyplussmoke-AABBCCDDEEFF). Ez az ID egyben az alapértelmezett MQTT topic előtag is.

A Client ID megtalálható:

  • Az eszköz címkéjén (MAC-cím)
  • A Shelly webes felületen: SettingsMQTTClient ID
  • API-n keresztül: GET http://<device-ip>/rpc/Mqtt.GetConfigclient_id mező
Sablon beállítása

A sablon TapHome-ba importálása után:

  1. Nyisd meg a Shelly Plus Smoke modult
  2. Állítsd be az MQTT Broker IP-t az MQTT broker címére
  3. Állítsd be a Port-ot (alapértelmezett 1883)
  4. Állítsd be az MQTT ID import paramétert az eszköz Client ID-jére (pl. shellyplussmoke-AABBCCDDEEFF)

A modul feliratkozik a <device-id>/# topicra, és a listener szkript feldolgozza a NotifyFullStatus és NotifyStatus JSON-RPC eseményeket az events/rpc topicról.

Az MQTT alapértelmezetten ki van kapcsolva a Shelly Plus Smoke-on. Engedélyezd az eszközbeállításokban: SettingsMQTTEnable. Győződj meg róla, hogy az rpc_ntf (RPC értesítések) true értékre van állítva (alapértelmezett). A sablon az events/rpc értesítésekre támaszkodik, nem az egyedi állapot topicokra.

Alvási és jelentési viselkedés

A Shelly Plus Smoke mély alvás módban működik az elem élettartamának maximalizálása érdekében:

  • Periodikus ébredés — az eszköz a sys.wakeup_period által meghatározott időközönként ébred, és NotifyFullStatus eseményt publikál az akkumulátor állapotával, füstriasztó állapotával és aktuális ébredési periódusával
  • Riasztási esemény — a füstérzékelés azonnali ébredést és NotifyStatus értesítést vált ki a riasztás állapotával
  • Ébredési ciklusok között — az eszköz HTTP-n és MQTT-n keresztül nem elérhető

Az eszközt egyetlen CR123A elem táplálja, amelynek várható élettartama akár 5 év. Ne használj újratölthető elemeket — a gyártó kifejezetten figyelmeztet ez ellen.

Az eszköz elemről működik és nem csatlakozik állandóan az MQTT brokerhez. Ébredési ciklusok között semmilyen kommunikáció nem lehetséges. Ha az érzékelő helyén gyenge a Wi-Fi jel, a gyakori újracsatlakozási kísérletek ébredéskor jelentősen csökkenthetik az elem élettartamát.

Eszközképességek

Füstriasztó

A sablon a füstriasztó állapotát Reed Contact eszközre képezi le (DeviceType 1030). A listener szkript feldolgozza a NotifyStatus eseményeket az events/rpc topicon és olvassa a params['smoke:0'].alarm értéket:

  • ON (riasztás aktív) — füst érzékelve, az eszköz beépített hangjelzője >85 dB-en szól
  • OFF (riasztás törölve) — nincs füst, normál működés

A riasztás állapota csak olvasható, és azonnal frissül füstérzékeléskor. Az eszköz az alvási ütemezéstől függetlenül azonnali MQTT értesítést küld riasztási eseményekre.

Akkumulátor monitorozás

A modul két Akkumulátor szervizattribútumot biztosít, amelyek a NotifyFullStatus eseményekből olvasnak:

  • Akkumulátor [%] — töltöttségi szint százalékban a params['devicepower:0'].battery.percent értékből. Alacsony akkumulátor figyelmeztetés aktiválódik 30% alatt
  • Akkumulátor [V] — elem feszültség Voltban a params['devicepower:0'].battery.V értékből. Névleges feszültség 3V a CR123A elemhez

Mindkét érték NaN-t ad vissza az első mérés fogadása előtt (azaz amikor a gyorsítótárazott érték még 0). Akkumulátor adatok minden periodikus ébredéskor frissülnek.

Csatlakozási watchdog

A sablon visszaszámlálás-alapú mechanizmussal figyeli az eszköz csatlakozottságát. Minden NotifyFullStatus eseménynél a listener szkript eltárolja a sys.wakeup_period értéket a wakeup_period egyéni változóba. Az olvasó szkript aztán 60-nal csökkenti ezt a számlálót minden lekérdezési ciklusban (60 másodperces intervallum):

  • Számláló eléri a 0-t — az eszköz nem ébredt fel az elvártnak megfelelően. A számláló -1-re áll és WARNING aktiválódik: “Update not received”
  • Számláló eléri a -86400-at — az eszköz 48 órája csendes. ERROR aktiválódik: “Update not received in last 48h”

Amikor az eszköz felébred és új NotifyFullStatus-t küld, a számláló visszaáll a friss wakeup_period értékre, törölve minden figyelmeztetést.

További képességek

A Shelly Plus Smoke támogatja a némítás funkciót (Smoke.Mute RPC módszer) a riasztás hangjának elnyomásához, a fizikai gombbal kiváltott füstriasztó teszt eseményeket és a Wi-Fi jelerősség diagnosztikát (RSSI). Az eszköz egyedi komponens állapot topicokat publikál, ha a status_ntf engedélyezve van. Ezek a képességek egy jövőbeli sablon frissítésben adhatók hozzá.

Hibaelhárítás

A füstriasztó nem jelent eseményeket
  1. Ellenőrizd, hogy a Shelly Plus Smoke csatlakozik a Wi-Fi-hez és az MQTT engedélyezve van az eszközbeállításokban (SettingsMQTTEnable)
  2. Ellenőrizd, hogy az rpc_ntf true értékre van állítva (alapértelmezett) — a sablon RPC értesítéseket igényel az events/rpc-n
  3. Győződj meg róla, hogy az MQTT ID import paraméter pontosan megegyezik az eszköz Client ID-jével (pl. shellyplussmoke-AABBCCDDEEFF)
  4. Használj MQTT klienst (pl. MQTT Explorer) a <device-id>/# topicra való feliratkozáshoz, és ellenőrizd, hogy az eszköz NotifyFullStatus-t publikál felébredéskor
  5. Ellenőrizd az eszköz elemét — lemerült CR123A elem megakadályozza, hogy az eszköz csatlakozzon a Wi-Fi-hez
A csatlakozási watchdog hamis figyelmeztetéseket mutat
  1. A watchdog az elvárt ébredési periódushoz viszonyítja a visszaszámlálást. Ha a TapHome Core órája jelentősen eltér, hamis figyelmeztetések jelenhetnek meg
  2. Elemről üzemelve az eszköz csak a konfigurált wakeup_period intervallumban ébred — szünetek a jelentések között elvártak
  3. Ha az érzékelő szakaszos Wi-Fi-vel rendelkező helyen van, néhány ébredési ciklusban nem tud csatlakozni. Ellenőrizd a Wi-Fi jelerősséget
  4. Elemcsere után az eszköznek szüksége lehet egy teljes ébredési ciklusra, mielőtt a watchdog számláló megfelelően inicializálódna
Az eszköz Reed Contactként jelenik meg füstriasztó helyett

A TapHome sablon a PacketParserReedContact eszköztípust (DeviceType 1030) használja a füstriasztó ábrázolásához. Ez a helyes leképezés — az ON állapot “Vészriasztás” (füst érzékelve), az OFF állapot “OK” (nincs füst). Az eszköz neve a TapHome-ban “Shelly Plus Smoke” a funkció egyértelmű jelzésére.

Telepítés a TapHome-ban

Előfeltételek

  • Shelly eszköz csatlakoztatva a Wi-Fi-hez (ha még nem, lásd a HTTP kapcsolódási útmutatót)
  • MQTT broker fut a helyi hálózaton (pl. Mosquitto, Home Assistant vagy a TapHome beépített brokere)
  • TapHome CCU ugyanazon a hálózaton, mint a broker

A Gen1 eszközökön az MQTT engedélyezése letiltja a Shelly Cloudot. A kettő nem futhat egyszerre. A Gen2/Plus eszközökön ez a korlátozás nem érvényes.

1. lépés — MQTT engedélyezése a Shelly eszközön

Gen1 eszközök (Shelly 1, 1PM, 2.5, EM, 3EM, Plug S, RGBW2, Dimmer, TRV…)

  1. Nyissa meg a Shelly webes felületet: http://<device-ip>/
  2. Navigáljon az Internet & SecurityAdvanced — MQTT menüpontra
  3. Engedélyezze az MQTT-t
  4. Állítsa be az MQTT Server-t: <broker-ip>:<port> (pl. 192.168.1.10:1883)
  5. Opcionálisan állítsa be az MQTT User és MQTT Password mezőket, ha a broker hitelesítést igényel
  6. Kattintson a Save gombra — az eszköz újraindul és csatlakozik a brokerhez

Gen2 / Plus eszközök (Shelly Plus 1, Plus 1PM, Plus 2PM, Plus Plug S, Plus H&T, Pro 3EM…)

  1. Nyissa meg a Shelly webes felületet: http://<device-ip>/
  2. Navigáljon a SettingsMQTT menüpontra
  3. Engedélyezze az MQTT-t
  4. Állítsa be a Server-t: <broker-ip>:<port> (pl. 192.168.1.10:1883)
  5. A Client ID előre ki van töltve az eszköz azonosítójával (pl. shellyplus1pm-AABBCCDDEE) — hagyja így, hacsak nincs konkrét oka a változtatásra
  6. Kattintson a Save gombra és indítsa újra az eszközt

Az MQTT működésének ellenőrzéséhez használjon egy MQTT klienst (pl. MQTT Explorer), és iratkozzon fel a shellies/# (Gen1) vagy <device-id>/# (Gen2) topikra. Látnia kell az eszköz állapotüzeneteit.

2. lépés — Device ID / MQTT Client ID megkeresése

Egyes sablonok Device ID vagy MQTT Client ID paramétert igényelnek. Ez az egyedi azonosító, amelyet az MQTT topikokban használnak.

  • Gen1: a címkén MAC-címként található (pl. AABBCCDDEE). Device ID = shelly<model>-<mac>, pl. shelly1pm-AABBCCDDEE
  • Gen2/Plus: a Shelly webes felületén a SettingsDevice InfoDevice ID alatt található, vagy az eszköz címkéjén

3. lépés — Konfigurálás a TapHome-ban

  1. A TapHome-ban adjon hozzá egy új Packet Parser (MQTT) modult
  2. IP Address: adja meg az MQTT broker IP-címét (pl. 192.168.1.10)
  3. Port: 1883 (alapértelmezett; TLS esetén használjon 8883-at)
  4. Device ID / MQTT Client ID: adja meg a 2. lépésben kapott értéket (ha a sablon megköveteli)
  5. Importálja a sablont — a TapHome automatikusan feliratkozik az eszköz topikjaira

Elérhető eszközök

Shelly Plus Smoke Modul
Egyéni változók
deviceid (string)MQTT eszközazonosító topic előtagként — formátum: shellyplussmoke-{MACADDRESS} (Shelly webes felület → Settings → MQTT → Client ID)
Füstriasztó Reed kontaktus Csak olvasható

Fotoelektromos füstriasztó állapot — ON = Vészriasztás (füst érzékelve), OFF = OK (nincs füst). Riasztás azonnali MQTT értesítést vált ki >85 dB hangjelzéssel.

boolean JSON-RPC (NotifyStatus → params.smoke:0.alarm)
Szerviz attribútumok
Akkumulátor [%]Akkumulátor töltöttségi szint — alacsony akkumulátor figyelmeztetés 30% alatt. CR123A elem, akár 5 év élettartam.
Akkumulátor [V]Akkumulátor feszültség Voltban — névleges 3V CR123A elemhez

Füstriasztó

Olvasás (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
Figyelő
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
Szerviz attribútumok
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
Kapcsolat: Packet Parser → MQTT
Lehetséges fejlesztések (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.

Források