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