TapHome

Sonoff SNZB-01

Packet Parser → MQTT
Eingereicht von
Zuletzt aktualisiert: 06. 2026
Sonoff SNZB-01

Der Sonoff SNZB-01 ist ein kompakter kabelloser Zigbee 3.0 Taster, der mit einer CR2450 Knopfzellenbatterie betrieben wird. Er kommuniziert indirekt mit TapHome — der Taster wird mit einem Zigbee2MQTT-Koordinator (z. B. Sonoff ZBDongle-P/E oder CC2652-basierter Stick) gekoppelt, der Zigbee-Nachrichten zu MQTT-Topics weiterleitet. TapHome abonniert diese MQTT-Topics über ein PacketParser MQTT-Modul.

Die Vorlage erkennt drei Tastenaktionen (einfaches Drücken, doppeltes Drücken, langes Drücken) und überwacht den Batterieprozentsatz, die Batteriespannung und die Zigbee-Signalqualität.

Konfiguration

Zigbee2MQTT-Einrichtung

Vor dem Import der TapHome-Vorlage muss der SNZB-01 mit einem Zigbee2MQTT-Koordinator gekoppelt werden:

  1. Öffnen Sie die Zigbee2MQTT-Weboberfläche und aktivieren Sie den Kopplungsmodus (Permit join)
  2. Entfernen Sie am SNZB-01 die Rückabdeckung und drücken Sie die Reset-Taste 5 Sekunden lang, bis die LED dreimal blinkt
  3. Das Gerät erscheint in der Zigbee2MQTT-Geräteliste mit einer IEEE-Adresse (z. B. 0x00124b001eab21e5) oder einem Friendly Name
Modulvariable

Setzen Sie nach dem Import der Vorlage in TapHome die benutzerdefinierte Variable SonoffSNZB01 zur Identifikation des Geräts am MQTT-Broker:

VariableBeschreibungErmittlungBeispiel
SonoffSNZB01Zigbee2MQTT Friendly Name oder IEEE-Adresse des SNZB-01Zigbee2MQTT Web UI → Devices → SNZB-01 suchen → Friendly Name oder IEEE-Adresse kopieren0x00124b001eab21e5

Die Variable wird als MQTT-Topic-Präfix verwendet — das Listener-Skript abonniert zigbee2mqtt/{SonoffSNZB01} und zigbee2mqtt/{SonoffSNZB01}/action.

Die Verwendung des Friendly Name (z. B. living_room_button) anstelle der IEEE-Adresse macht die Konfiguration übersichtlicher. Der Friendly Name kann in der Zigbee2MQTT-Weboberfläche unter den Geräteeinstellungen geändert werden.

Gerätefunktionen

Tastendruck-Erkennung

Die Vorlage bildet den SNZB-01 als Push-Button-Gerät in TapHome ab. Tastendruck-Ereignisse kommen auf dem Topic zigbee2mqtt/{id}/action an und werden auf numerische Werte abgebildet:

Physische AktionMQTT PayloadTapHome-Wert
Einfaches Drücken (Loslassen + 0,6 s Wartezeit)single1
Doppeltes Drückendouble3
Langes Drücken (2 Sekunden halten)long2

Nach dem Lesen des Tastenstatus wird der Wert auf 0 zurückgesetzt — Tastenaktionen sind ereignisbasiert und können nicht rückwirkend gelesen werden.

Batterie- und Signalüberwachung

Jede Taster-Instanz stellt drei Serviceattribute bereit:

  • Battery — verbleibender Batterieprozentsatz (0–100 %) aus dem JSON-Status-Topic. Der SNZB-01 verwendet eine CR2450-Knopfzelle mit einer typischen Lebensdauer von 1–2 Jahren.
  • BatteryVoltage — Batteriespannung in Millivolt aus dem JSON-Status-Topic.
  • LinkQuality — Zigbee-Signalqualitätsindikator (0–255 lqi) aus dem JSON-Status-Topic. Höhere Werte zeigen ein besseres Signal an.

Alle Attribute zeigen "-" an, bis die erste Nachricht vom Gerät empfangen wird.

Weitere Funktionen

Die Zigbee2MQTT Bridge bietet auch ein Topic für proaktive Statusabfragen (zigbee2mqtt/{id}/get), mit dem Batterie- und Spannungswerte bei Bedarf angefordert werden können, sowie ein Verfügbarkeits-Topic zur Online/Offline-Erkennung. Diese Funktionen können in einem zukünftigen Vorlagenupdate hinzugefügt werden.

Fehlerbehebung

Tastendrücke werden nicht erkannt
  1. Überprüfen Sie, ob der SNZB-01 mit dem Zigbee2MQTT-Koordinator gekoppelt ist — er sollte in der Geräteliste mit grünem Status erscheinen
  2. Prüfen Sie, ob die benutzerdefinierte Variable SonoffSNZB01 exakt dem Friendly Name oder der IEEE-Adresse des Geräts entspricht (Groß-/Kleinschreibung beachten)
  3. Verwenden Sie einen MQTT-Client (z. B. MQTT Explorer), abonnieren Sie zigbee2mqtt/# und drücken Sie die Taste — auf dem /action-Topic sollte eine Nachricht erscheinen
  4. Wenn keine MQTT-Nachrichten erscheinen, hat das Gerät möglicherweise die Zigbee-Verbindung verloren — koppeln Sie es erneut durch langes Drücken der Reset-Taste für 5 Sekunden
Veraltete Batterie- oder Signalwerte
  1. Batterie- und Signaldaten werden nur aktualisiert, wenn das Gerät aufwacht (bei Tastendruck oder periodischer Meldung)
  2. Wenn die Werte "-" anzeigen, wurde noch keine Nachricht empfangen — drücken Sie die Taste, um eine Aktualisierung auszulösen
  3. Stellen Sie einen guten Empfang des Zigbee-Koordinators sicher — die Reichweite des SNZB-01 hängt vom Zigbee-Mesh-Netzwerk ab

Der Sonoff SNZB-01 wurde eingestellt und durch den SNZB-01P ersetzt. Die TapHome-Vorlage bleibt für bestehende SNZB-01-Geräte funktionsfähig, aber bei Neuanschaffungen sollte der SNZB-01P in Betracht gezogen werden, der eine verbesserte Reichweite und einen USB-C-Akku bietet.

Verfügbare Geräte

Sonoff SNZB-01 Modul
Benutzerdefinierte Variablen
SonoffSNZB01 (string) = 0x00124b001eab21e5Zigbee2MQTT Friendly Name oder IEEE-Adresse des SNZB-01-Geräts — wird als MQTT-Topic-Präfix verwendet
Open Zigbee2MQTT web UI → Devices → find SNZB-01 → copy the Friendly name (or use the IEEE address, e.g. 0x00124b001eab21e5)
Funktaster Taster

Tastendruck-Erkennung — einfach (1), doppelt (3), lang (2); nach dem Lesen wird auf 0 zurückgesetzt

enum
Serviceattribute
BatterieVerbleibender Batterieprozentsatz (CR2450-Knopfzelle, 0–100 %)
LinkQualityZigbee-Signalqualitätsindikator — 0 (schlechteste) bis 255 (beste)
BatteryVoltageBatteriespannung in Millivolt

Funktaster

Tastenstatus lesen
Bp := 0;
Tastenstatus schreiben
# 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
Serviceattribute
Battery
IF(ISNAN(battery),"-",battery+"%");
LinkQuality
IF(ISNAN(link),"-",link+"lqi");
BatteryVoltage
IF(ISNAN(voltage),"-",voltage+"mV");
Verbindung: Packet Parser → MQTT
Mögliche Verbesserungen (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.

Quellen

Haben Sie ein Problem mit dieser Gerätevorlage gefunden?

Sagen Sie uns, was nicht funktioniert, was fehlt oder wie sich die Vorlage verhalten sollte. Ihr Feedback hilft uns, den Katalog genau zu halten.

Von TapHome verifiziert

Möchtest du das in deinem TapHome Core verwenden?

Öffne diese Vorlage im Kundenportal, um sie auf eine deiner Wohnungen anzuwenden, oder entwirf eine Anpassung und reiche sie an den Katalog ein.

Im Portal öffnen