Neues zigbee2mqtt Gerät als openHAB item verwenden am Beispiel aqara-Klima-Sensor

Wenn ich über zigbee und mqtt meine Daten an openHAB liefere, dann ist zigbee2mqtt eine feine Lösung. Die Daten werden oft im JSON-Format geliefert. Hier einmal die Schritte, wie ich ein neues zigbee-Gerät in openHAB integriere.

Wenn ich ein neues Gerät an mein zigbee2mqtt angebunden habe, dann kann ich zunächst mir erst einmal die Nachrichten des Gerätes ausgeben:

mosquitto_sub -h localhost -v -t zigbee2mqtt/#

Das sieht dann z.b. so aus:

zigbee2mqtt/0x00158d00036cb132 {“temperature”:27.99,”linkquality”:149,”humidity”:31.65,”pressure”:1002,”battery”:100,”voltage”:3085}
zigbee2mqtt/0x00158d00036cb132 {“temperature”:27.99,”linkquality”:152,”humidity”:31.59,”pressure”:1002,”battery”:100,”voltage”:3085}
zigbee2mqtt/0x00158d00036cb132 {“temperature”:27.99,”linkquality”:149,”humidity”:31.59,”pressure”:1002,”battery”:100,”voltage”:3085}

In diesem Fall ist das ein Aqara-Klima-Sensor mit der ID 0x00158d00036cb132

Die Werte werden als JSON-String geliefert (erkennbar an der {“thema”:wert,”anderesthema”:andererwert} Darstellung.

Wenn ich das auswerten will, benötige ich in openHAB die JSON-Transformation. Diese kann über PaperUI installiert werden – erreichbar meistens unter http://pihost:8080/paperui/index.html. Dort auf Add-ons und dann Transformations -> JSONPath Transformation installieren.

Wenn ich die installiert habe, dann kann ich items via commandline anlegen, die diese JSON-Strings sehr einfach auswerten können.

Ich habe alle meine mqtt-Items in einer Datei.

pihost:/etc/openhab2/items $ sudo vi mqtt.items

Number aqara_0x00158d00036cb132_temperature “aqara_0x00158d00036cb132_temperature [%.0f %%]” {mqtt=”<[mosquitto:zigbee2mqtt/0x00158d00036cb132:state:JSONPATH($.temperature)]”}
Number aqara_0x00158d00036cb132_humidity “aqara_0x00158d00036cb132_humidity [%.0f %%]” {mqtt=”<[mosquitto:zigbee2mqtt/0x00158d00036cb132:state:JSONPATH($.humidity)]”}
Number aqara_0x00158d00036cb132_pressure “aqara_0x00158d00036cb132_pressure [%.0f %%]” {mqtt=”<[mosquitto:zigbee2mqtt/0x00158d00036cb132:state:JSONPATH($.pressure)]”}

Und die Werte hinterher im habpanel darzustellen, kann ich das dann so auf einer HTML-Kachel einbinden:

{{‘%.0f’ | sprintf:itemValue(‘aqara_0x00158d00036cb132_temperature’)}}

Das sieht dann z.B. so aus:

Weitere Links:

Running zigbee2mqtt: https://www.zigbee2mqtt.io/getting_started/running_zigbee2mqtt.html