Ich habe mich eben hier regisiriert, um danke zu sagen für diesen Hinweis. Als Neuling, der sich in openHAB einarbeitet, bin ich auch fast daran verzweifelt, wie man Werte aus MQTT ausliest. Im Prinzip war alles klar, nur das mit dem Service, das hat mich nochmal viel Zeit gekostet, bis ich die Lösung hier gefunden habe. Also vielen Dank.
Dann wurde ja noch die Konfiguration angesprochen und die musste ich auch kurz suchen. Das Chaos mit den zwei Methoden zur Konfiguration habe ich im ersten Anlauf auch entdeckt und dann alles eingerissen und nochmal neu angefangen. Dieses Mal ausschließlich mit Konfiguration über die Textdateien. Im vorliegenden Fall besteht die Lösung darin, in /etc/openhab2/services/addons.cfg eine Zeile einzufügen bzw. eine auskommentierte Zeile zu ändern:
Code: Alles auswählen
# A comma-separated list of transformation services to install (e.g. "transformation = map,jsonpath")
transformation = jsonpath
Und meine Konfiguration für den MQTT-Broker sieht so aus:
/etc/openhab2/things/mqtt.things
Code: Alles auswählen
Bridge mqtt:broker:Mosquitto "Mosquitto" [ host="localhost", port="1883", secure=false, username="xxx", password="xxx" ]
Thing mqtt:topic:Mosquitto:SonoffTest "SonoffTest Control" (mqtt:broker:Mosquitto) {
Channels:
Type switch : Power "SonoffTest Power" [ stateTopic="stat/SonoffTest/POWER", commandTopic="cmnd/SonoffTest/POWER" ]
Type string : Temp "SonoffTest Temp" [ stateTopic="tele/SonoffTest/SENSOR", transformationPattern="JSONPATH:$.DS18B20.Temperature" ]
}
Und weil ich es oft in solchen Anleitungen schwer finde zu unterscheiden, was Schlüsselwörter und was eigene Bezeichner sind: „Mosquitto“ und „SonoffTest“ sind eigene Bezeichner. Und der Dateiname „mqtt.things“ ist auch von mir. Der ist egal, nur muss „.things“ am Ende stehen.
Ach ja, um das transformationPattern zu verstehen: Was man vom Sonoff über den Broker bekommt, sieht so aus:
Code: Alles auswählen
tele/SonoffTest/SENSOR {"Time":"2019-03-26T20:53:43","DS18B20":{"Temperature":22.3},"TempUnit":"C"}