Sonoff: Zigbee Bridge

Sonoff: Zigbee Bridge

letzte Aktualisierung: 19. Februar 2023
#
Ungefähre Lesezeit: 1 min

Einbindung eines Temperatur / Feuchtesensors in openHAB 3

Anbei eine kurze Beschreibung wie man einen Zigbee Sensor in openHAB 3 einbinden kann. Die Zigbee Bridge wurde mit Tasmota geflasht. Bei den Sensoren handelt es sich um Sonoff Zigbee Temperatur / Feuchtigkeitssensoren (SNZB-02).

Geräte mit Zigbee Bridge koppeln

  • (1) Kopplungsmodus in Tasmota der Zigbee Bridge starten (für 60 s)
  • anschließend die Taste am Gerät / Sensor für ca. 5 s drücken
  • (2) Gerät wird in Tasmota Übersicht angezeigt
  • in älteren Versionen von Tasmota kann der Kopplungsmodus nur über die Konsole ausgelöst werden
    ZbPermitJoin 1 – startet Kopplungsmodus für 60 s
    ZbPermitJoin 99 – Kopplungsmodus dauerhaft an
Bild 1 – Kopplungsmodus Zigbee Bridge

Gerätenamen umbenennen

  • der Device / Gerätename kann in der Konsole mit folgendem Befehl geändert werden (mit eigenem Gerätenamen ersetzen)
    ZbName 0x0A6D,<friendlyname>

Ausgangslage

Bild 2: Sonoff Zigbee-Bridge unter Tasmota

Channel anlegen

Der Sonoff SNZB-02 liefert Werte für die Temperatur und die relative Luftfeuchtigkeit. Im folgenden Beispiel binde ich den Temperaturwert in OpenHAB ein.

  • openHAB Übersicht –> Einstellungen –> Things –> Zigbee Bridge (je nachdem welcher Name vergeben wurde)
  • Channels –> Add Channel
    Channel Identifier: SZ_Temp
    Label: Temperatur Schlafzimmer
    Channel Type: Number Value
    Configuration –> Show advanced
    MQTT State Topic: dach/zigbee-bridge/tele/SENSOR
    Transform Values –> Incoming Value Transformations: JSONPATH:$.ZbReceived.0xF589.Temperature
REGEX kann hier bei mehreren Sensoren die gleichzeitig pushen, u.U. Fehlermeldungen verhindern.

Bsp.:
In der Zigbee-Bridge werden eine Lichtsensor und ein Temperatursensor eingebunden. Jeder Sensor hat seine eigene Device ID. Beide sind in openHAB als Item eigerichtet und extrahieren mittels JSONPATH die Daten aus dem Topic MQTT dach/zigbee-bridge/tele/SENSOR.

Kommt über MQTT eine Mitteilung vom Lichtsensor, versucht das Item Temperatur in dieser Mitteilung den Wert Temperatur zu finden. Das scheitert und führt zur Fehlermeldung im Log:


dach/zigbee-bridge/tele/SENSOR
{„ZbReceived“:{„0xE3F2“:{„Device“:“0xE3F2″,“Name“:“Lichtsensor Aquara“,“Illuminance“:28222,“BatteryPercentage“:100,“Endpoint“:1,“LinkQuality“:100}}}

Ausgabe Logfile openHAB
2023-02-03 14:44:39.020 [WARN ] [t.generic.ChannelStateTransformation] – Executing the JSONPATH-transformation failed: Invalid path ‚$.ZbReceived.0xD189.Temperature‘ in ‚{„ZbReceived“:{„0xE3F2“:{„Device“:“0xE3F2″,“Name“:“Lichtsensor Aquara“,“Illuminance“:32408,“BatteryPercentage“:100,“Endpoint“:1,“LinkQuality“:105}}}‘

Um das zu verhindern wird mittels RegEX der Wert für die Temperatur vorgefiltert und dann erst mittel JSONPATH behandelt.

REGEX:(.0xD189.)∩JSONPATH:$.ZbReceived.0xD189.Temperature
Die Device Bezeichnung, hier 0xD189, sowie die Bezeichnung des Wertes den man ausgeben will, hier Temperature, erhält man in der Konsole von Tasmota. Jetzt werden nur Mitteilungen ausgewählt, die dem gewünschten Temperatursensor entsprechen und das Logfile bleibt sauber. :-)
Beispiel –>
19:51:58.859 MQT: dach/zigbee-bridge/tele/SENSOR = {"ZbReceived":{"0xD189":{"Device":"0xD189","Name":"Umwelt_SZ_Sonoff","Temperature":4.67,"Endpoint":1,"LinkQuality":81}}})
Bild 4: Channel anlegen

Channel mit Item verlinken

Um den Messwert später ausgeben zu können, legen wir zuerst ein Item an, welches wir dann mit dem Channel des Zigbee Bridge Thing zuweisen können.

  • openHAB Übersicht –> Einstellungen –> Things –> Zigbee Bridge (ja nachdem welcher Name vergeben wurde)
  • Channles –> Temperatur Schlafzimmer –> + Add Link to Item
  • Item –> Create a new Item (falls nicht schon eines vorhanden ist)
    Name –> SZ_Temp_ZB (unterliegt der eigenen Namenskonvention um alles ein wenig zu ordnen)
    Label –> Temperatur Schlafzimmer
    Type –> Number (da in diesem Fall eine Zahl)
    Category –> temperature (bestimmt das angezeigte Icon)
  • Link Item

Anzeige der richtigen Einheit

  • um die richtige Einheit anzeigen zu lassen, in diesem Falle für die Temperatur, müssen wir diese noch konfigurieren
  • Items –> Temperatur Schlafzimmer –> Add Metadata –> State Description –> Pattern –> %.1f °C (die 1 gibt die Anzahl der Nachkommastellen aus)

Der erste Wert wird in openHAB erst angezeigt, wenn der Sensor seine Daten über MQTT pusht, was eine Weile dauern kann. Beschleunigen kann man dies, indem man den Sensor kurz von der Batterie trennt.

Tags:
Artikelaufrufe: 2265
Nach oben