TapHome

Shelly Plus Smoke

Packet Parser → MQTT
Přidal
Poslední aktualizace: 03. 2026
Shelly Plus Smoke

Shelly Plus Smoke je bateriový (CR123A) Wi-Fi fotoelektrický kouřový alarm certifikovaný podle DIN EN 14604. TapHome komunikuje se zařízením přes MQTT pomocí Gen2+ RPC notifikací na topicu events/rpc. Zařízení většinu času tráví v hlubokém spánku pro úsporu baterie a periodicky se probouzí podle nakonfigurovaného wakeup_period. Události kouřového alarmu vyvolají okamžité probuzení a MQTT notifikaci.

Šablona vytvoří jedno zařízení Kouřový alarm (mapované na Reed Contact) a dva servisní atributy Baterie na úrovni modulu. Watchdog konektivity sleduje odpočet periódy probouzení a hlásí varování nebo chyby, pokud zařízení delší dobu neodpovídalo.

Konfigurace

MQTT Client ID

Každý Shelly Plus Smoke má unikátní MQTT Client ID ve formátu shellyplussmoke-<MAC12>, kde <MAC12> je plná 12znaková MAC adresa v hexadecimálním tvaru velkými písmeny (např. shellyplussmoke-AABBCCDDEEFF). Toto ID slouží i jako výchozí prefix MQTT topiců.

Client ID najdete:

  • Na štítku zařízení (MAC adresa)
  • Ve webovém rozhraní Shelly: SettingsMQTTClient ID
  • Přes API: GET http://<device-ip>/rpc/Mqtt.GetConfig → pole client_id
Nastavení šablony

Po importu šablony v TapHome:

  1. Otevřete modul Shelly Plus Smoke
  2. Nastavte MQTT Broker IP na adresu MQTT brokeru
  3. Nastavte Port (výchozí 1883)
  4. Nastavte import parametr MQTT ID na Client ID zařízení (např. shellyplussmoke-AABBCCDDEEFF)

Modul se přihlásí k odběru <device-id>/# a listenerový skript parsuje NotifyFullStatus a NotifyStatus JSON-RPC události z topicu events/rpc.

MQTT je na Shelly Plus Smoke ve výchozím stavu vypnuto. Povolte ho v nastavení zařízení: SettingsMQTTEnable. Ujistěte se, že rpc_ntf (RPC notifikace) je nastaveno na true (výchozí). Šablona se spoléhá na events/rpc notifikace, ne na individuální stavové topicy.

Chování spánku a hlášení

Shelly Plus Smoke pracuje v režimu hlubokého spánku pro maximalizaci výdrže baterie:

  • Periodické probuzení — zařízení se probouzí v intervalech definovaných sys.wakeup_period a publikuje událost NotifyFullStatus obsahující stav baterie, stav kouřového alarmu a aktuální periodu probouzení
  • Událost alarmu — detekce kouře vyvolá okamžité probuzení a NotifyStatus notifikaci se stavem alarmu
  • Mezi cykly probuzení — zařízení je nedostupné přes HTTP a MQTT

Zařízení je napájeno jednou baterií CR123A s očekávanou výdrží až 5 let. Nepoužívejte dobíjecí baterie — výrobce před tím výslovně varuje.

Zařízení je napájeno z baterie a není trvale připojeno k MQTT brokeru. Mezi cykly probuzení není možná žádná komunikace. Pokud má místo senzoru slabý Wi-Fi signál, časté opětovné připojování při probuzení může výrazně zkrátit výdrž baterie.

Schopnosti zařízení

Kouřový alarm

Šablona mapuje stav kouřového alarmu na zařízení Reed Contact (DeviceType 1030). Listenerový skript parsuje NotifyStatus události na topicu events/rpc a čte params['smoke:0'].alarm:

  • ON (alarm aktivní) — detekován kouř, vestavěný bzučák zařízení zní na >85 dB
  • OFF (alarm zrušen) — žádný kouř, normální provoz

Stav alarmu je pouze ke čtení a aktualizuje se okamžitě při detekci kouře. Zařízení spustí okamžitou MQTT notifikaci při událostech alarmu bez ohledu na rozvrh spánku.

Monitorování baterie

Modul poskytuje dva servisní atributy Baterie, které čtou z událostí NotifyFullStatus:

  • Baterie [%] — procentuální úroveň nabití baterie z params['devicepower:0'].battery.percent. Varování o nízké baterii se spustí, když úroveň klesne pod 30 %
  • Baterie [V] — napětí baterie ve Voltech z params['devicepower:0'].battery.V. Nominální napětí je 3V pro baterii CR123A

Obě hodnoty vrací NaN před přijetím prvního měření (tj. když je uložená hodnota stále 0). Data baterie se aktualizují při každém periodickém probuzení.

Watchdog konektivity

Šablona monitoruje konektivitu zařízení pomocí mechanismu založeného na odpočtu. Při každé NotifyFullStatus události listenerový skript uloží hodnotu sys.wakeup_period do custom proměnné wakeup_period. Čtecí skript pak snižuje toto počítadlo o 60 v každém cyklu dotazování (60sekundový interval):

  • Počítadlo dosáhne 0 — zařízení se neprobudilo podle očekávání. Počítadlo se nastaví na -1 a vyvolá se WARNING: “Update not received”
  • Počítadlo dosáhne -86400 — zařízení mlčí 48 hodin. Vyvolá se ERROR: “Update not received in last 48h”

Když se zařízení probudí a odešle nový NotifyFullStatus, počítadlo se resetuje na čerstvou hodnotu wakeup_period, čímž se vymažou všechna varování.

Další schopnosti

Shelly Plus Smoke také podporuje funkci ztlumení (Smoke.Mute RPC metoda) pro potlačení zvuku alarmu, testovací události kouřového alarmu spuštěné fyzickým tlačítkem a diagnostiku síly Wi-Fi signálu (RSSI). Zařízení publikuje individuální stavové topicy komponent při povoleném status_ntf. Tyto schopnosti mohou být přidány v budoucí aktualizaci šablony.

Řešení problémů

Kouřový alarm nehlásí události
  1. Ověřte, že Shelly Plus Smoke je připojen k Wi-Fi a MQTT je povoleno v nastavení zařízení (SettingsMQTTEnable)
  2. Zkontrolujte, že rpc_ntf je nastaveno na true (výchozí) — šablona vyžaduje RPC notifikace na events/rpc
  3. Potvrďte, že import parametr MQTT ID přesně odpovídá Client ID zařízení (např. shellyplussmoke-AABBCCDDEEFF)
  4. Použijte MQTT klienta (např. MQTT Explorer) pro přihlášení k odběru <device-id>/# a ověřte, že zařízení publikuje NotifyFullStatus při probuzení
  5. Zkontrolujte baterii zařízení — vybitá baterie CR123A brání zařízení připojit se k Wi-Fi
Watchdog konektivity zobrazuje falešná varování
  1. Watchdog porovnává odpočet s očekávanou periodou probouzení. Pokud jsou hodiny TapHome Core výrazně posunuty, mohou se objevit falešná varování
  2. Na bateriové napájení se zařízení probouzí pouze v nakonfigurovaném wakeup_period intervalu — mezery mezi hlášeními jsou očekávané
  3. Pokud je senzor na místě s nestabilním Wi-Fi, může se při některých cyklech probuzení nepodařit připojit. Ověřte sílu Wi-Fi signálu v místě senzoru
  4. Po výměně baterie může zařízení trvat jeden kompletní cyklus probuzení, než se počítadlo watchdogu správně inicializuje
Zařízení se zobrazuje jako Reed Contact místo kouřového alarmu

TapHome šablona používá typ zařízení PacketParserReedContact (DeviceType 1030) pro reprezentaci kouřového alarmu. Toto je správné mapování — stav ON znamená “Nouzový alarm” (detekován kouř) a stav OFF znamená “OK” (žádný kouř). Název zařízení v TapHome je “Shelly Plus Smoke” pro jasné označení jeho funkce.

Jak nainstalovat v TapHome

Předpoklady

  • Zařízení Shelly připojené k Wi-Fi (pokud ještě ne, podívejte se na návod na HTTP připojení)
  • MQTT broker běžící ve vaší lokální síti (např. Mosquitto, Home Assistant nebo vestavěný broker TapHome)
  • TapHome CCU ve stejné síti jako broker

Na zařízeních Gen1 povolení MQTT vypne Shelly Cloud. Obojí nemůže běžet současně. Na zařízeních Gen2/Plus toto omezení neplatí.

Krok 1 — Povolte MQTT na zařízení Shelly

Zařízení Gen1 (Shelly 1, 1PM, 2.5, EM, 3EM, Plug S, RGBW2, Dimmer, TRV…)

  1. Otevřete webové rozhraní Shelly: http://<device-ip>/
  2. Přejděte na Internet & SecurityAdvanced — MQTT
  3. Povolte MQTT
  4. Nastavte MQTT Server: <broker-ip>:<port> (např. 192.168.1.10:1883)
  5. Volitelně nastavte MQTT User a MQTT Password, pokud váš broker vyžaduje autentifikaci
  6. Klikněte na Save — zařízení se restartuje a připojí k brokeru

Zařízení Gen2 / Plus (Shelly Plus 1, Plus 1PM, Plus 2PM, Plus Plug S, Plus H&T, Pro 3EM…)

  1. Otevřete webové rozhraní Shelly: http://<device-ip>/
  2. Přejděte na SettingsMQTT
  3. Povolte MQTT
  4. Nastavte Server: <broker-ip>:<port> (např. 192.168.1.10:1883)
  5. Client ID je předvyplněné ID zařízení (např. shellyplus1pm-AABBCCDDEE) — ponechte tak, pokud nemáte konkrétní důvod ke změně
  6. Klikněte na Save a restartujte zařízení

Pro ověření funkčnosti MQTT použijte MQTT klienta (např. MQTT Explorer) a přihlaste se k odběru shellies/# (Gen1) nebo <device-id>/# (Gen2). Měli byste vidět stavové zprávy ze zařízení.

Krok 2 — Zjistěte Device ID / MQTT Client ID

Některé šablony vyžadují parametr Device ID nebo MQTT Client ID. Jde o jedinečný identifikátor používaný v MQTT topicích.

  • Gen1: nachází se na štítku jako MAC adresa (např. AABBCCDDEE). Device ID = shelly<model>-<mac>, např. shelly1pm-AABBCCDDEE
  • Gen2/Plus: nachází se ve webovém rozhraní Shelly v části SettingsDevice InfoDevice ID, nebo na štítku zařízení

Krok 3 — Konfigurace v TapHome

  1. V TapHome přidejte nový modul Packet Parser (MQTT)
  2. IP Address: zadejte IP adresu MQTT brokeru (např. 192.168.1.10)
  3. Port: 1883 (výchozí; pro TLS použijte 8883)
  4. Device ID / MQTT Client ID: zadejte hodnotu z kroku 2 (pokud to šablona vyžaduje)
  5. Importujte šablonu — TapHome se automaticky přihlásí k odběru topiců zařízení

Dostupná zařízení

Shelly Plus Smoke Modul
Vlastní proměnné
deviceid (string)MQTT identifikátor zařízení používaný jako prefix topiců — formát: shellyplussmoke-{MACADDRESS} (najdete ve webovém rozhraní Shelly → Settings → MQTT → Client ID)
Kouřový alarm Jazýčkový kontakt Pouze ke čtení

Stav fotoelektrického kouřového alarmu — ON = Nouzový alarm (detekován kouř), OFF = OK (žádný kouř). Alarm okamžitě spustí MQTT notifikaci s >85 dB bzučákem.

boolean JSON-RPC (NotifyStatus → params.smoke:0.alarm)
Servisní atributy
Baterie [%]Procentuální úroveň nabití baterie — varování při poklesu pod 30 %. Baterie CR123A, výdrž až 5 let.
Baterie [V]Napětí baterie ve Voltech — nominální 3V pro baterii CR123A

Kouřový alarm

Čtení (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
Listener
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
Servisní atributy
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
Připojení: Packet Parser → MQTT
Možná vylepšení (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.

Zdroje