TapHome

Shelly Plus Smoke

Packet Parser → MQTT
Pridal
Posledná aktualizácia: 03. 2026
Shelly Plus Smoke

Shelly Plus Smoke je batériový (CR123A) Wi-Fi fotoelektrický dymový alarm certifikovaný podľa DIN EN 14604. TapHome komunikuje so zariadením cez MQTT pomocou Gen2+ RPC notifikácií na topicu events/rpc. Zariadenie väčšinu času strávi v hlbokom spánku pre úsporu batérie a periodicky sa prebúdza podľa nakonfigurovaného wakeup_period. Udalosti dymového alarmu vyvolajú okamžité prebudenie a MQTT notifikáciu.

Šablóna vytvorí jedno zariadenie Dymový alarm (mapované na Reed Contact) a dva servisné atribúty Batéria na úrovni modulu. Watchdog konektivity sleduje odpočet periódyprebúdzania a hlási varovania alebo chyby, keď zariadenie dlhšie neodpovedalo.

Konfigurácia

MQTT Client ID

Každý Shelly Plus Smoke má unikátne MQTT Client ID vo formáte shellyplussmoke-<MAC12>, kde <MAC12> je plná 12-znaková MAC adresa v hexadecimálnom tvare veľkými písmenami (napr. shellyplussmoke-AABBCCDDEEFF). Toto ID slúži aj ako predvolený prefix MQTT topicov.

Client ID nájdete:

  • Na štítku zariadenia (MAC adresa)
  • Vo webovom rozhraní Shelly: SettingsMQTTClient ID
  • Cez API: GET http://<device-ip>/rpc/Mqtt.GetConfig → pole client_id
Nastavenie šablóny

Po importe šablóny v TapHome:

  1. Otvorte modul Shelly Plus Smoke
  2. Nastavte MQTT Broker IP na adresu MQTT brokera
  3. Nastavte Port (predvolene 1883)
  4. Nastavte import parameter MQTT ID na Client ID zariadenia (napr. shellyplussmoke-AABBCCDDEEFF)

Modul sa prihlási na odber <device-id>/# a listenerový skript parsuje NotifyFullStatus a NotifyStatus JSON-RPC udalosti z topicu events/rpc.

MQTT je na Shelly Plus Smoke predvolene vypnuté. Povoľte ho v nastaveniach zariadenia: SettingsMQTTEnable. Uistite sa, že rpc_ntf (RPC notifikácie) je nastavené na true (predvolené). Šablóna sa spolieha na events/rpc notifikácie, nie na individuálne stavové topicy.

Správanie spánku a hlásení

Shelly Plus Smoke pracuje v režime hlbokého spánku pre maximalizáciu výdrže batérie:

  • Periodické prebudenie — zariadenie sa prebúdza v intervaloch definovaných sys.wakeup_period a publikuje udalosť NotifyFullStatus obsahujúcu stav batérie, stav dymového alarmu a aktuálnu periódu prebúdzania
  • Udalosť alarmu — detekcia dymu vyvolá okamžité prebudenie a NotifyStatus notifikáciu so stavom alarmu
  • Medzi cyklami prebúdzania — zariadenie je nedostupné cez HTTP a MQTT

Zariadenie je napájané jednou batériou CR123A s očakávanou výdržou až 5 rokov. Nepoužívajte nabíjateľné batérie — výrobca pred tým výslovne varuje.

Zariadenie je napájané z batérie a nie je trvalo pripojené k MQTT brokeru. Medzi cyklami prebúdzania nie je možná žiadna komunikácia. Ak má miesto senzora slabý Wi-Fi signál, časté opätovné pripájanie pri prebudení môže výrazne skrátiť výdrž batérie.

Schopnosti zariadenia

Dymový alarm

Šablóna mapuje stav dymového alarmu na zariadenie Reed Contact (DeviceType 1030). Listenerový skript parsuje NotifyStatus udalosti na topicu events/rpc a číta params['smoke:0'].alarm:

  • ON (alarm aktívny) — detekovaný dym, zabudovaný bzučiak zariadenia znie na >85 dB
  • OFF (alarm zrušený) — žiadny dym, normálna prevádzka

Stav alarmu je len na čítanie a aktualizuje sa okamžite pri detekcii dymu. Zariadenie spustí okamžitú MQTT notifikáciu pri udalostiach alarmu bez ohľadu na rozvrh spánku.

Monitorovanie batérie

Modul poskytuje dva servisné atribúty Batéria, ktoré čítajú z udalostí NotifyFullStatus:

  • Batéria [%] — percentuálna úroveň nabitia batérie z params['devicepower:0'].battery.percent. Varovanie o nízkej batérii sa spustí, keď úroveň klesne pod 30 %
  • Batéria [V] — napätie batérie vo Voltoch z params['devicepower:0'].battery.V. Nominálne napätie je 3V pre batériu CR123A

Obe hodnoty vracajú NaN pred prijatím prvého merania (t.j. keď je uložená hodnota stále 0). Dáta batérie sa aktualizujú pri každom periodickom prebudení.

Watchdog konektivity

Šablóna monitoruje konektivitu zariadenia pomocou mechanizmu založeného na odpočte. Pri každej NotifyFullStatus udalosti listenerový skript uloží hodnotu sys.wakeup_period do custom premennej wakeup_period. Čítací skript potom znižuje tento počítadlo o 60 v každom cykle dotazovania (60-sekundový interval):

  • Počítadlo dosiahne 0 — zariadenie sa neprebudilo podľa očakávania. Počítadlo sa nastaví na -1 a vyvolá sa WARNING: “Update not received”
  • Počítadlo dosiahne -86400 — zariadenie mlčí 48 hodín. Vyvolá sa ERROR: “Update not received in last 48h”

Keď sa zariadenie prebudí a odošle nový NotifyFullStatus, počítadlo sa resetuje na čerstvú hodnotu wakeup_period, čím sa vymažú všetky varovania.

Ďalšie schopnosti

Shelly Plus Smoke tiež podporuje funkciu stlmenia (Smoke.Mute RPC metóda) na potlačenie zvuku alarmu, testovacie udalosti dymového alarmu spustené fyzickým tlačidlom a diagnostiku sily Wi-Fi signálu (RSSI). Zariadenie publikuje individuálne stavové topicy komponentov keď je povolené status_ntf. Tieto schopnosti môžu byť pridané v budúcej aktualizácii šablóny.

Riešenie problémov

Dymový alarm nehlási udalosti
  1. Overte, že Shelly Plus Smoke je pripojený k Wi-Fi a MQTT je povolené v nastaveniach zariadenia (SettingsMQTTEnable)
  2. Skontrolujte, že rpc_ntf je nastavené na true (predvolené) — šablóna vyžaduje RPC notifikácie na events/rpc
  3. Potvrďte, že import parameter MQTT ID presne zodpovedá Client ID zariadenia (napr. shellyplussmoke-AABBCCDDEEFF)
  4. Použite MQTT klienta (napr. MQTT Explorer) na prihlásenie odberu <device-id>/# a overte, že zariadenie publikuje NotifyFullStatus pri prebudení
  5. Skontrolujte batériu zariadenia — vybitá batéria CR123A bráni zariadeniu pripojiť sa k Wi-Fi
Watchdog konektivity zobrazuje falošné varovania
  1. Watchdog porovnáva odpočet s očakávanou periódou prebúdzania. Ak sú hodiny TapHome Core výrazne posunuté, môžu sa objaviť falošné varovania
  2. Na batériové napájanie sa zariadenie prebúdza len v nakonfigurovanom wakeup_period intervale — medzery medzi hláseniami sú očakávané
  3. Ak je senzor na mieste s nestabilným Wi-Fi, môže sa pri niektorých cykloch prebúdzania nepodarí pripojiť. Overte silu Wi-Fi signálu na mieste senzora
  4. Po výmene batérie môže zariadeniu trvať jeden kompletný cyklus prebúdzania, kým sa počítadlo watchdogu správne inicializuje
Zariadenie sa zobrazuje ako Reed Contact namiesto dymového alarmu

TapHome šablóna používa typ zariadenia PacketParserReedContact (DeviceType 1030) na reprezentáciu dymového alarmu. Toto je správne mapovanie — stav ON znamená “Núdzový alarm” (detekovaný dym) a stav OFF znamená “OK” (žiadny dym). Názov zariadenia v TapHome je “Shelly Plus Smoke” pre jasné označenie jeho funkcie.

Ako nainštalovať v TapHome

Predpoklady

  • Zariadenie Shelly pripojené k Wi-Fi (ak ešte nie, pozrite návod na HTTP pripojenie)
  • MQTT broker bežiaci vo vašej lokálnej sieti (napr. Mosquitto, Home Assistant alebo vstavaný broker TapHome)
  • TapHome CCU v rovnakej sieti ako broker

Na zariadeniach Gen1 povolenie MQTT vypne Shelly Cloud. Oboje nemôže bežať súčasne. Na zariadeniach Gen2/Plus toto obmedzenie neplatí.

Krok 1 — Povoľte MQTT na zariadení Shelly

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

  1. Otvorte webové rozhranie Shelly: http://<device-ip>/
  2. Prejdite na Internet & SecurityAdvanced — MQTT
  3. Povoľte MQTT
  4. Nastavte MQTT Server: <broker-ip>:<port> (napr. 192.168.1.10:1883)
  5. Voliteľne nastavte MQTT User a MQTT Password, ak váš broker vyžaduje autentifikáciu
  6. Kliknite na Save — zariadenie sa reštartuje a pripojí k brokeru

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

  1. Otvorte webové rozhranie Shelly: http://<device-ip>/
  2. Prejdite na SettingsMQTT
  3. Povoľte MQTT
  4. Nastavte Server: <broker-ip>:<port> (napr. 192.168.1.10:1883)
  5. Client ID je predvyplnené ID zariadenia (napr. shellyplus1pm-AABBCCDDEE) — ponechajte tak, pokiaľ nemáte konkrétny dôvod na zmenu
  6. Kliknite na Save a reštartujte zariadenie

Na overenie funkčnosti MQTT použite MQTT klienta (napr. MQTT Explorer) a prihláste sa na odber shellies/# (Gen1) alebo <device-id>/# (Gen2). Mali by ste vidieť stavové správy zo zariadenia.

Krok 2 — Zistite Device ID / MQTT Client ID

Niektoré šablóny vyžadujú parameter Device ID alebo MQTT Client ID. Ide o jedinečný identifikátor používaný v MQTT topicoch.

  • Gen1: nachádza sa na štítku ako MAC adresa (napr. AABBCCDDEE). Device ID = shelly<model>-<mac>, napr. shelly1pm-AABBCCDDEE
  • Gen2/Plus: nachádza sa vo webovom rozhraní Shelly v časti SettingsDevice InfoDevice ID, alebo na štítku zariadenia

Krok 3 — Konfigurácia v TapHome

  1. V TapHome pridajte nový modul Packet Parser (MQTT)
  2. IP Address: zadajte IP adresu MQTT brokera (napr. 192.168.1.10)
  3. Port: 1883 (predvolený; pre TLS použite 8883)
  4. Device ID / MQTT Client ID: zadajte hodnotu z kroku 2 (ak to šablóna vyžaduje)
  5. Importujte šablónu — TapHome sa automaticky prihlási na odber topicov zariadenia

Dostupné zariadenia

Shelly Plus Smoke Modul
Vlastné premenné
deviceid (string)MQTT identifikátor zariadenia používaný ako prefix topicov — formát: shellyplussmoke-{MACADDRESS} (nájdete vo webovom rozhraní Shelly → Settings → MQTT → Client ID)
Dymový alarm Jazýčkový kontakt Len na čítanie

Stav fotoelektrického dymového alarmu — ON = Núdzový alarm (detekovaný dym), OFF = OK (žiadny dym). Alarm okamžite spustí MQTT notifikáciu s >85 dB bzučiakom.

boolean JSON-RPC (NotifyStatus → params.smoke:0.alarm)
Servisné atribúty
Batéria [%]Percentuálna úroveň nabitia batérie — varovanie pri poklese pod 30 %. Batéria CR123A, výdrž až 5 rokov.
Batéria [V]Napätie batérie vo Voltoch — nominálne 3V pre batériu CR123A

Dymový alarm

Čítanie (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é atribúty
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
Pripojenie: Packet Parser → MQTT
Možné vylepšenia (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