TapHome

Sonoff SNZB-01

Packet Parser → MQTT
Pridal
Posledná aktualizácia: 04. 2026
Sonoff SNZB-01

Sonoff SNZB-01 je kompaktné bezdrôtové Zigbee 3.0 tlačidlo napájané gombíkovou batériou CR2450. S TapHome komunikuje nepriamo — tlačidlo sa spáruje so Zigbee2MQTT koordinátorom (napr. Sonoff ZBDongle-P/E alebo CC2652-based stick), ktorý premosťuje Zigbee správy na MQTT topicy. TapHome sa prihlasuje na tieto MQTT topicy cez PacketParser MQTT modul.

Šablóna rozpoznáva tri akcie tlačidla (jednoduché stlačenie, dvojité stlačenie, dlhé stlačenie) a monitoruje percentuálny stav batérie, napätie batérie a kvalitu Zigbee signálu.

Konfigurácia

Nastavenie Zigbee2MQTT

Pred importom TapHome šablóny musí byť SNZB-01 spárovaný so Zigbee2MQTT koordinátorom:

  1. Otvorte Zigbee2MQTT webové rozhranie a povoľte párovací režim (Permit join)
  2. Na SNZB-01 odstráňte zadný kryt a dlho stlačte reset tlačidlo na 5 sekúnd, kým LED trikrát zabliká
  3. Zariadenie sa objaví v zozname zariadení Zigbee2MQTT s IEEE adresou (napr. 0x00124b001eab21e5) alebo friendly name
Premenná modulu

Po importe šablóny v TapHome nastavte vlastnú premennú SonoffSNZB01 na identifikáciu zariadenia na MQTT brokeri:

PremennáPopisAko získaťPríklad
SonoffSNZB01Zigbee2MQTT friendly name alebo IEEE adresa SNZB-01Zigbee2MQTT web UI → Devices → nájdite SNZB-01 → skopírujte friendly name alebo IEEE adresu0x00124b001eab21e5

Premenná sa používa ako prefix MQTT topicu — listener skript sa prihlasuje na zigbee2mqtt/{SonoffSNZB01} a zigbee2mqtt/{SonoffSNZB01}/action.

Použitie friendly name (napr. living_room_button) namiesto IEEE adresy robí konfiguráciu čitateľnejšou. Friendly name je možné zmeniť v Zigbee2MQTT webovom rozhraní v nastaveniach zariadenia.

Funkcie zariadenia

Detekcia stlačenia tlačidla

Šablóna mapuje SNZB-01 ako Push Button zariadenie v TapHome. Udalosti stlačenia prichádzajú na topic zigbee2mqtt/{id}/action a sú mapované na číselné hodnoty:

Fyzická akciaMQTT payloadHodnota v TapHome
Jednoduché stlačenie (uvoľnenie + 0,6 s čakanie)single1
Dvojité stlačeniedouble3
Dlhé stlačenie (podržanie 2 sekundy)long2

Po prečítaní stavu tlačidla sa hodnota resetuje na 0 — akcie tlačidla sú založené na udalostiach a nie je možné ich spätne čítať.

Monitoring batérie a signálu

Každá inštancia tlačidla poskytuje tri servisné atribúty:

  • Battery — zostávajúce percento batérie (0–100 %) zo stavového JSON topicu. SNZB-01 používa gombíkovú batériu CR2450 s typickou životnosťou 1–2 roky.
  • BatteryVoltage — napätie batérie v milivoltoch zo stavového JSON topicu.
  • LinkQuality — indikátor kvality Zigbee signálu (0–255 lqi) zo stavového JSON topicu. Vyššie hodnoty znamenajú lepší signál.

Všetky atribúty zobrazujú "-" kým nie je prijaté prvé hlásenie zo zariadenia.

Ďalšie funkcie

Zigbee2MQTT bridge tiež poskytuje topic pre proaktívne vyžiadanie stavu (zigbee2mqtt/{id}/get), ktorý umožňuje vyžiadať hodnoty batérie a napätia na požiadanie, a topic dostupnosti pre detekciu online/offline stavu. Tieto funkcie môžu byť pridané v budúcej aktualizácii šablóny.

Riešenie problémov

Stlačenia tlačidla nie sú detekované
  1. Overte, že SNZB-01 je spárovaný so Zigbee2MQTT koordinátorom — mal by sa zobrazovať v zozname zariadení so zeleným stavom
  2. Skontrolujte, či vlastná premenná SonoffSNZB01 presne zodpovedá friendly name alebo IEEE adrese zariadenia (rozlišujú sa veľké a malé písmená)
  3. Použite MQTT klienta (napr. MQTT Explorer) na prihlásenie na zigbee2mqtt/# a stlačte tlačidlo — na topicu /action by sa mala objaviť správa
  4. Ak sa neobjavujú žiadne MQTT správy, zariadenie mohlo stratiť Zigbee spojenie — znovu spárujte dlhým stlačením reset tlačidla na 5 sekúnd
Neaktuálne hodnoty batérie alebo kvality signálu
  1. Údaje o batérii a signáli sa aktualizujú len keď sa zariadenie prebudí (pri stlačení tlačidla alebo periodickom hlásení)
  2. Ak hodnoty zobrazujú "-", ešte nebola prijatá žiadna správa — stlačte tlačidlo pre vyvolanie aktualizácie
  3. Zabezpečte dobrý príjem Zigbee koordinátora — dosah SNZB-01 závisí od Zigbee mesh siete

Sonoff SNZB-01 bol ukončený a nahradený modelom SNZB-01P. TapHome šablóna zostáva funkčná pre existujúce zariadenia SNZB-01, ale pri novom nákupe zvážte SNZB-01P, ktorý ponúka vylepšený dosah a nabíjateľnú batériu cez USB-C.

Dostupné zariadenia

Sonoff SNZB-01 Modul
Vlastné premenné
SonoffSNZB01 (string) = 0x00124b001eab21e5Zigbee2MQTT friendly name alebo IEEE adresa zariadenia SNZB-01 — používa sa ako prefix MQTT topicu
Open Zigbee2MQTT web UI → Devices → find SNZB-01 → copy the Friendly name (or use the IEEE address, e.g. 0x00124b001eab21e5)
Bezdrôtové tlačidlo Tlačidlo

Detekcia stlačenia tlačidla — jednoduché (1), dvojité (3), dlhé (2); po prečítaní sa resetuje na 0

enum
Servisné atribúty
BatériaZostávajúce percento batérie (gombíková batéria CR2450, 0–100 %)
LinkQualityIndikátor kvality Zigbee signálu — 0 (najhoršia) až 255 (najlepšia)
BatteryVoltageNapätie batérie v milivoltoch

Bezdrôtové tlačidlo

Čítanie stavu tlačidla
Bp := 0;
Zápis stavu tlačidla
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/set/value=" + Bp);
# IF response.IsSuccess = false
#  ADDERROR(response.StatusCode);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/setValue", "GET", "value=" + Bp, "header1:value1", "header2:value2", ...);\r
# Or VAR request := HTTPREQUEST("/example/setValue");
# request.Method := "PUT";
# VAR response := SENDHTTPREQUEST(request);
#r
#
# Send TCP, UDP data:
# VAR data1 := "{\"name\":\"John\", \"age\":" + Bp + "}";
# SENDDATA(data1);
# VAR data2 := TOBYTES("{\"name\":\"John\", \"age\":" + Bp + "}", "iso-8859-1");
# SENDDATA(data2);
# You can process received TCP or UDP data in the Listener script
#
#
# Upload data to FTP:
# FTPUPLOAD("filePath", "somedata=" + Bp, "write"); # use "append" mode to append data to existing file
Listener
Bp := 0;

IF (COMPARE(RECEIVEDMSG.TOPIC, "zigbee2mqtt/"+ SonoffSNZB01 +"/action", CompareOptions.IgnoreCase) = 0)
	var payloadString := TOSTRING(RECEIVEDMSG.PAYLOAD);
	
    IF (COMPARE(payloadString, "single", CompareOptions.IgnoreCase) = 0)
          Bp := 1;
        ELSEIF (COMPARE(payloadString, "long", CompareOptions.IgnoreCase) = 0)
          Bp := 2;
        ELSEIF (COMPARE(payloadString, "double", CompareOptions.IgnoreCase) = 0)
          Bp := 3;
        ELSE
          Bp := 0;
    END  
END;   

IF (COMPARE(RECEIVEDMSG.TOPIC, "zigbee2mqtt/"+ SonoffSNZB01, CompareOptions.IgnoreCase) = 0)
    battery := PARSEJSON(RECEIVEDMSG.PAYLOAD,"battery", true);
    voltage := PARSEJSON(RECEIVEDMSG.PAYLOAD,"voltage", true);
    link := PARSEJSON(RECEIVEDMSG.PAYLOAD,"linkquality", true);
    
END
Servisné atribúty
Battery
IF(ISNAN(battery),"-",battery+"%");
LinkQuality
IF(ISNAN(link),"-",link+"lqi");
BatteryVoltage
IF(ISNAN(voltage),"-",voltage+"mV");
Pripojenie: Packet Parser → MQTT
Možné vylepšenia (2)
  • Proactive State Request — Publish {"battery":""} or {"voltage":""} to request values on demand. Could wake sleeping device.
  • Availability Status — Online/offline availability topic. Could detect unreachable devices.

Zdroje