
Shelly Plus Smoke to bateryjny (CR123A) fotoelektryczny alarm dymu Wi-Fi certyfikowany według DIN EN 14604. TapHome komunikuje się z urządzeniem przez MQTT za pomocą powiadomień RPC Gen2+ na topicu events/rpc. Urządzenie większość czasu spędza w głębokim uśpieniu w celu oszczędzania baterii i okresowo budzi się zgodnie z skonfigurowanym wakeup_period. Zdarzenia alarmu dymu wyzwalają natychmiastowe wybudzenie i powiadomienie MQTT.
Szablon tworzy jedno urządzenie Alarm dymu (zmapowane na Reed Contact) i dwa atrybuty serwisowe Bateria na poziomie modułu. Watchdog łączności monitoruje odliczanie okresu wybudzania i generuje ostrzeżenia lub błędy, gdy urządzenie nie raportowało przez dłuższy okres.
Konfiguracja
MQTT Client ID
Każdy Shelly Plus Smoke ma unikalny MQTT Client ID w formacie shellyplussmoke-<MAC12>, gdzie <MAC12> to pełny 12-znakowy adres MAC w szesnastkowym zapisie wielkimi literami (np. shellyplussmoke-AABBCCDDEEFF). Ten identyfikator służy również jako domyślny prefiks topiców MQTT.
Client ID można znaleźć:
- Na etykiecie urządzenia (adres MAC)
- W interfejsie webowym Shelly: Settings → MQTT → Client ID
- Przez API:
GET http://<device-ip>/rpc/Mqtt.GetConfig→ poleclient_id
Konfiguracja szablonu
Po zaimportowaniu szablonu w TapHome:
- Otwórz moduł Shelly Plus Smoke
- Ustaw MQTT Broker IP na adres brokera MQTT
- Ustaw Port (domyślnie
1883) - Ustaw parametr importu MQTT ID na Client ID urządzenia (np.
shellyplussmoke-AABBCCDDEEFF)
Moduł subskrybuje <device-id>/#, a skrypt nasłuchujący parsuje zdarzenia JSON-RPC NotifyFullStatus i NotifyStatus z topicu events/rpc.
MQTT jest domyślnie wyłączone na Shelly Plus Smoke. Włącz go w ustawieniach urządzenia: Settings → MQTT → Enable. Upewnij się, że
rpc_ntf(powiadomienia RPC) jest ustawione natrue(domyślnie). Szablon opiera się na powiadomieniachevents/rpc, a nie na indywidualnych topicach statusu.
Zachowanie uśpienia i raportowania
Shelly Plus Smoke działa w trybie głębokiego uśpienia w celu maksymalizacji żywotności baterii:
- Okresowe wybudzenie — urządzenie budzi się w interwałach zdefiniowanych przez
sys.wakeup_periodi publikuje zdarzenieNotifyFullStatuszawierające status baterii, stan alarmu dymu i aktualny okres wybudzania - Zdarzenie alarmowe — wykrycie dymu wyzwala natychmiastowe wybudzenie i powiadomienie
NotifyStatusze stanem alarmu - Między cyklami wybudzania — urządzenie jest nieosiągalne przez HTTP i MQTT
Urządzenie jest zasilane pojedynczą baterią CR123A z oczekiwaną żywotnością do 5 lat. Nie używaj akumulatorów — producent wyraźnie przed tym ostrzega.
Urządzenie jest zasilane bateryjnie i nie jest stale podłączone do brokera MQTT. Między cyklami wybudzania żadna komunikacja nie jest możliwa. Jeśli lokalizacja czujnika ma słaby sygnał Wi-Fi, częste próby ponownego połączenia przy wybudzeniu mogą znacząco skrócić żywotność baterii.
Możliwości urządzenia
Alarm dymu
Szablon mapuje stan alarmu dymu na urządzenie Reed Contact (DeviceType 1030). Skrypt nasłuchujący parsuje zdarzenia NotifyStatus na topicu events/rpc i odczytuje params['smoke:0'].alarm:
- ON (alarm aktywny) — wykryto dym, wbudowany brzęczyk urządzenia brzmi na >85 dB
- OFF (alarm wyczyszczony) — brak dymu, normalna praca
Stan alarmu jest tylko do odczytu i aktualizuje się natychmiast po wykryciu dymu. Urządzenie wyzwala natychmiastowe powiadomienie MQTT przy zdarzeniach alarmowych niezależnie od harmonogramu uśpienia.
Monitorowanie baterii
Moduł udostępnia dwa atrybuty serwisowe Bateria, które odczytują ze zdarzeń NotifyFullStatus:
- Bateria [%] — procentowy poziom naładowania z
params['devicepower:0'].battery.percent. Ostrzeżenie o niskim poziomie baterii poniżej 30% - Bateria [V] — napięcie baterii w woltach z
params['devicepower:0'].battery.V. Napięcie nominalne 3V dla baterii CR123A
Obie wartości zwracają NaN przed odebraniem pierwszego pomiaru (tj. gdy zapisana wartość wynosi nadal 0). Dane baterii aktualizują się przy każdym okresowym wybudzeniu.
Watchdog łączności
Szablon monitoruje łączność urządzenia za pomocą mechanizmu opartego na odliczaniu. Przy każdym zdarzeniu NotifyFullStatus skrypt nasłuchujący zapisuje wartość sys.wakeup_period w zmiennej niestandardowej wakeup_period. Skrypt odczytu następnie zmniejsza ten licznik o 60 w każdym cyklu pollingu (interwał 60-sekundowy):
- Licznik osiąga 0 — urządzenie nie wybudziło się zgodnie z oczekiwaniami. Licznik ustawiany jest na -1 i generowane jest WARNING: “Update not received”
- Licznik osiąga -86400 — urządzenie milczy od 48 godzin. Generowane jest ERROR: “Update not received in last 48h”
Gdy urządzenie się wybudzi i wyśle nowy NotifyFullStatus, licznik resetuje się do świeżej wartości wakeup_period, kasując wszystkie ostrzeżenia.
Dodatkowe możliwości
Shelly Plus Smoke obsługuje również funkcję wyciszenia (Smoke.Mute metoda RPC) do tłumienia dźwięku alarmu, zdarzenia testowe alarmu dymu wyzwalane przyciskiem fizycznym i diagnostykę siły sygnału WiFi (RSSI). Urządzenie publikuje indywidualne topice statusu komponentów gdy status_ntf jest włączone. Możliwości te mogą zostać dodane w przyszłej aktualizacji szablonu.
Rozwiązywanie problemów
Alarm dymu nie raportuje zdarzeń
- Sprawdź, czy Shelly Plus Smoke jest podłączony do Wi-Fi i MQTT jest włączone w ustawieniach urządzenia (Settings → MQTT → Enable)
- Upewnij się, że
rpc_ntfjest ustawione natrue(domyślnie) — szablon wymaga powiadomień RPC naevents/rpc - Potwierdź, że parametr importu MQTT ID dokładnie odpowiada Client ID urządzenia (np.
shellyplussmoke-AABBCCDDEEFF) - Użyj klienta MQTT (np. MQTT Explorer) do subskrypcji
<device-id>/#i sprawdź, czy urządzenie publikujeNotifyFullStatuspo wybudzeniu - Sprawdź baterię urządzenia — wyczerpana bateria CR123A uniemożliwia urządzeniu połączenie z Wi-Fi
Watchdog łączności pokazuje fałszywe ostrzeżenia
- Watchdog porównuje odliczanie z oczekiwanym okresem wybudzania. Jeśli zegar TapHome Core jest znacząco przesunięty, mogą pojawiać się fałszywe ostrzeżenia
- Na zasilaniu bateryjnym urządzenie budzi się tylko w skonfigurowanym interwale
wakeup_period— przerwy między raportami są oczekiwane - Jeśli czujnik znajduje się w miejscu z niestabilnym Wi-Fi, może nie udać się połączyć w niektórych cyklach. Sprawdź siłę sygnału Wi-Fi
- Po wymianie baterii urządzenie może potrzebować jednego pełnego cyklu wybudzania, zanim licznik watchdoga prawidłowo się zainicjalizuje
Urządzenie wyświetla się jako Reed Contact zamiast alarmu dymu
Szablon TapHome używa typu urządzenia PacketParserReedContact (DeviceType 1030) do reprezentacji alarmu dymu. To prawidłowe mapowanie — stan ON oznacza “Alarm awaryjny” (wykryto dym), a stan OFF oznacza “OK” (brak dymu). Nazwa urządzenia w TapHome to “Shelly Plus Smoke” dla jasnego wskazania jego funkcji.