TapHome

Sonoff SNZB-01

Packet Parser → MQTT
Beküldő
Utoljára frissítve: 04. 2026
Sonoff SNZB-01

A Sonoff SNZB-01 egy kompakt, vezeték nélküli Zigbee 3.0 nyomógomb, amelyet CR2450 gombelem táplál. A TapHome-mal közvetetten kommunikál — a nyomógombot egy Zigbee2MQTT koordinátorral (pl. Sonoff ZBDongle-P/E vagy CC2652 alapú stick) kell párosítani, amely a Zigbee üzeneteket MQTT topicokra továbbítja. A TapHome ezekre az MQTT topicokra iratkozik fel PacketParser MQTT modulon keresztül.

A sablon három gombműveletet érzékel (egyszeres nyomás, dupla nyomás, hosszú nyomás), és monitorozza az akkumulátor százalékát, az akkumulátor feszültségét és a Zigbee jelminőséget.

Konfiguráció

Zigbee2MQTT beállítás

A TapHome sablon importálása előtt az SNZB-01-et párosítani kell egy Zigbee2MQTT koordinátorral:

  1. Nyissa meg a Zigbee2MQTT webes felületet és engedélyezze a párosítási módot (Permit join)
  2. Az SNZB-01-en távolítsa el a hátsó fedelet és nyomja meg hosszan a reset gombot 5 másodpercig, amíg a LED háromszor villog
  3. Az eszköz megjelenik a Zigbee2MQTT eszközlistájában IEEE címmel (pl. 0x00124b001eab21e5) vagy friendly name-mel
Modulváltozó

A sablon importálása után a TapHome-ban állítsa be a SonoffSNZB01 egyéni változót az eszköz azonosításához az MQTT brokeren:

VáltozóLeírásMegszerzésPélda
SonoffSNZB01Az SNZB-01 Zigbee2MQTT friendly name-je vagy IEEE címeZigbee2MQTT web UI → Devices → keresse meg az SNZB-01-et → másolja a friendly name-et vagy IEEE címet0x00124b001eab21e5

A változó MQTT topic prefixként szolgál — a listener szkript feliratkozik a zigbee2mqtt/{SonoffSNZB01} és zigbee2mqtt/{SonoffSNZB01}/action topicokra.

A friendly name használata (pl. living_room_button) az IEEE cím helyett áttekinthetőbbé teszi a konfigurációt. A friendly name a Zigbee2MQTT webes felületén az eszközbeállításoknál módosítható.

Eszközfunkciók

Gombnyomás érzékelése

A sablon az SNZB-01-et Push Button eszközként képezi le a TapHome-ban. A gombnyomás események a zigbee2mqtt/{id}/action topicon érkeznek és számértékekre vannak leképezve:

Fizikai műveletMQTT payloadTapHome érték
Egyszeres nyomás (elengedés + 0,6 s várakozás)single1
Dupla nyomásdouble3
Hosszú nyomás (2 másodperces nyomva tartás)long2

A gomb állapotának olvasása után az érték 0-ra áll vissza — a gombműveletek eseményalapúak és nem olvashatók vissza.

Akkumulátor- és jelmonitorozás

Minden gombpéldány három szervizattribútumot biztosít:

  • Battery — hátralévő akkumulátor százalék (0–100 %) a JSON állapot topicból. Az SNZB-01 CR2450 gombelemet használ, amelynek tipikus élettartama 1–2 év.
  • BatteryVoltage — akkumulátor feszültség millivoltban a JSON állapot topicból.
  • LinkQuality — Zigbee jelminőség jelző (0–255 lqi) a JSON állapot topicból. A magasabb értékek jobb jelet jeleznek.

Minden attribútum "-" értéket mutat, amíg az első üzenet meg nem érkezik az eszköztől.

További funkciók

A Zigbee2MQTT bridge proaktív állapotlekérő topicot is biztosít (zigbee2mqtt/{id}/get), amellyel igény szerint kérhetők le az akkumulátor- és feszültségértékek, valamint egy elérhetőségi topicot az online/offline állapot érzékeléséhez. Ezek a funkciók egy jövőbeli sablonfrissítésben adhatók hozzá.

Hibaelhárítás

A gombnyomások nem érzékelhetők
  1. Ellenőrizze, hogy az SNZB-01 párosítva van a Zigbee2MQTT koordinátorral — zöld állapottal kell megjelennie az eszközlistában
  2. Ellenőrizze, hogy a SonoffSNZB01 egyéni változó pontosan megegyezik az eszköz friendly name-jével vagy IEEE címével (kis- és nagybetű-érzékeny)
  3. Használjon MQTT klienst (pl. MQTT Explorer), iratkozzon fel a zigbee2mqtt/# topicra és nyomja meg a gombot — üzenetnek kell megjelennie az /action topicon
  4. Ha nem jelennek meg MQTT üzenetek, az eszköz elveszthette a Zigbee kapcsolatot — párosítsa újra a reset gomb 5 másodperces hosszú megnyomásával
Elavult akkumulátor- vagy jelminőség-értékek
  1. Az akkumulátor- és jeladatok csak az eszköz felébredésekor frissülnek (gombnyomáskor vagy időszakos jelentéskor)
  2. Ha az értékek "-" jelet mutatnak, még nem érkezett üzenet — nyomja meg a gombot a frissítés kiváltásához
  3. Biztosítson jó vételt a Zigbee koordinátornak — az SNZB-01 hatótávolsága a Zigbee mesh hálózattól függ

A Sonoff SNZB-01 gyártása megszűnt, helyettesítője az SNZB-01P. A TapHome sablon továbbra is működik a meglévő SNZB-01 eszközökkel, de új vásárlás esetén érdemes az SNZB-01P-t választani, amely jobb hatótávolságot és USB-C-vel tölthető akkumulátort kínál.

Elérhető eszközök

Sonoff SNZB-01 Modul
Egyéni változók
SonoffSNZB01 (string) = 0x00124b001eab21e5Az SNZB-01 eszköz Zigbee2MQTT friendly name-je vagy IEEE címe — MQTT topic prefixként használva
Open Zigbee2MQTT web UI → Devices → find SNZB-01 → copy the Friendly name (or use the IEEE address, e.g. 0x00124b001eab21e5)
Vezeték nélküli nyomógomb Nyomógomb

Gombnyomás érzékelése — egyszeres (1), dupla (3), hosszú (2); olvasás után 0-ra áll vissza

enum
Szerviz attribútumok
AkkumulátorHátralévő akkumulátor százalék (CR2450 gombelem, 0–100 %)
LinkQualityZigbee jelminőség jelző — 0 (legrosszabb) – 255 (legjobb)
BatteryVoltageAkkumulátor feszültség millivoltban

Vezeték nélküli nyomógomb

Gombállapot olvasása
Bp := 0;
Gombállapot írása
# 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
Figyelő
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
Szerviz attribútumok
Battery
IF(ISNAN(battery),"-",battery+"%");
LinkQuality
IF(ISNAN(link),"-",link+"lqi");
BatteryVoltage
IF(ISNAN(voltage),"-",voltage+"mV");
Kapcsolat: Packet Parser → MQTT
Lehetséges fejlesztések (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.

Források