TapHome

Sonoff SNZB-01

Packet Parser → MQTT
Přidal
Poslední aktualizace: 04. 2026
Sonoff SNZB-01

Sonoff SNZB-01 je kompaktní bezdrátové Zigbee 3.0 tlačítko napájené knoflíkovou baterií CR2450. S TapHome komunikuje nepřímo — tlačítko se spáruje se Zigbee2MQTT koordinátorem (např. Sonoff ZBDongle-P/E nebo CC2652-based stick), který přemosťuje Zigbee zprávy na MQTT topicy. TapHome se přihlašuje k těmto MQTT topicům přes PacketParser MQTT modul.

Šablona rozpoznává tři akce tlačítka (jednoduché stisknutí, dvojité stisknutí, dlouhé stisknutí) a monitoruje procentuální stav baterie, napětí baterie a kvalitu Zigbee signálu.

Konfigurace

Nastavení Zigbee2MQTT

Před importem TapHome šablony musí být SNZB-01 spárován se Zigbee2MQTT koordinátorem:

  1. Otevřete webové rozhraní Zigbee2MQTT a povolte párovací režim (Permit join)
  2. Na SNZB-01 odstraňte zadní kryt a dlouze stiskněte reset tlačítko na 5 sekund, dokud LED třikrát zabliká
  3. Zařízení se objeví v seznamu zařízení Zigbee2MQTT s IEEE adresou (např. 0x00124b001eab21e5) nebo friendly name
Proměnná modulu

Po importu šablony v TapHome nastavte vlastní proměnnou SonoffSNZB01 pro identifikaci zařízení na MQTT brokeru:

ProměnnáPopisJak získatPříklad
SonoffSNZB01Zigbee2MQTT friendly name nebo IEEE adresa SNZB-01Zigbee2MQTT web UI → Devices → najděte SNZB-01 → zkopírujte friendly name nebo IEEE adresu0x00124b001eab21e5

Proměnná se používá jako prefix MQTT topicu — listener skript se přihlašuje k zigbee2mqtt/{SonoffSNZB01} a zigbee2mqtt/{SonoffSNZB01}/action.

Použití friendly name (např. living_room_button) místo IEEE adresy činí konfiguraci čitelnější. Friendly name lze změnit ve webovém rozhraní Zigbee2MQTT v nastavení zařízení.

Funkce zařízení

Detekce stisknutí tlačítka

Šablona mapuje SNZB-01 jako Push Button zařízení v TapHome. Události stisknutí přicházejí na topic zigbee2mqtt/{id}/action a jsou mapovány na číselné hodnoty:

Fyzická akceMQTT payloadHodnota v TapHome
Jednoduché stisknutí (uvolnění + 0,6 s čekání)single1
Dvojité stisknutídouble3
Dlouhé stisknutí (podržení 2 sekundy)long2

Po přečtení stavu tlačítka se hodnota resetuje na 0 — akce tlačítka jsou založeny na událostech a nelze je zpětně číst.

Monitoring baterie a signálu

Každá instance tlačítka poskytuje tři servisní atributy:

  • Battery — zbývající procento baterie (0–100 %) ze stavového JSON topicu. SNZB-01 používá knoflíkovou baterii CR2450 s typickou životností 1–2 roky.
  • BatteryVoltage — napětí baterie v milivoltech ze stavového JSON topicu.
  • LinkQuality — indikátor kvality Zigbee signálu (0–255 lqi) ze stavového JSON topicu. Vyšší hodnoty znamenají lepší signál.

Všechny atributy zobrazují "-" dokud není přijata první zpráva ze zařízení.

Další funkce

Zigbee2MQTT bridge také poskytuje topic pro proaktivní vyžádání stavu (zigbee2mqtt/{id}/get), který umožňuje vyžádat hodnoty baterie a napětí na vyžádání, a topic dostupnosti pro detekci online/offline stavu. Tyto funkce mohou být přidány v budoucí aktualizaci šablony.

Řešení problémů

Stisknutí tlačítka nejsou detekována
  1. Ověřte, že SNZB-01 je spárován se Zigbee2MQTT koordinátorem — měl by se zobrazovat v seznamu zařízení se zeleným stavem
  2. Zkontrolujte, zda vlastní proměnná SonoffSNZB01 přesně odpovídá friendly name nebo IEEE adrese zařízení (rozlišují se velká a malá písmena)
  3. Použijte MQTT klienta (např. MQTT Explorer) pro přihlášení k zigbee2mqtt/# a stiskněte tlačítko — na topicu /action by se měla objevit zpráva
  4. Pokud se neobjevují žádné MQTT zprávy, zařízení mohlo ztratit Zigbee spojení — znovu spárujte dlouhým stisknutím reset tlačítka na 5 sekund
Neaktuální hodnoty baterie nebo kvality signálu
  1. Údaje o baterii a signálu se aktualizují pouze když se zařízení probudí (při stisknutí tlačítka nebo periodickém hlášení)
  2. Pokud hodnoty zobrazují "-", dosud nebyla přijata žádná zpráva — stiskněte tlačítko pro vyvolání aktualizace
  3. Zajistěte dobrý příjem Zigbee koordinátora — dosah SNZB-01 závisí na Zigbee mesh síti

Sonoff SNZB-01 byl ukončen a nahrazen modelem SNZB-01P. TapHome šablona zůstává funkční pro stávající zařízení SNZB-01, ale při novém nákupu zvažte SNZB-01P, který nabízí vylepšený dosah a dobíjecí baterii přes USB-C.

Dostupná zařízení

Sonoff SNZB-01 Modul
Vlastní proměnné
SonoffSNZB01 (string) = 0x00124b001eab21e5Zigbee2MQTT friendly name nebo IEEE adresa zařízení SNZB-01 — používá se jako 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čítko Tlačítko

Detekce stisknutí tlačítka — jednoduché (1), dvojité (3), dlouhé (2); po přečtení se resetuje na 0

enum
Servisní atributy
BaterieZbývající procento baterie (knoflíková baterie CR2450, 0–100 %)
LinkQualityIndikátor kvality Zigbee signálu — 0 (nejhorší) až 255 (nejlepší)
BatteryVoltageNapětí baterie v milivoltech

Bezdrátové tlačítko

Čtení stavu tlačítka
Bp := 0;
Zápis stavu tlačítka
# 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í atributy
Battery
IF(ISNAN(battery),"-",battery+"%");
LinkQuality
IF(ISNAN(link),"-",link+"lqi");
BatteryVoltage
IF(ISNAN(voltage),"-",voltage+"mV");
Připojení: Packet Parser → MQTT
Možná vylepšení (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