Hi,
ich steh auf dem Schlauch.. ich lese die Werte meines Tuya-Thermostats wie folgt aus:
mqtt="<[broker:tuya/lightbulb/xxxxxxxx/xxxxxx/192.168.2.142/dps
und sehe dann im MQTT-Explorer folgende Werte:
{"1":true,"2":125,"3":265,"4":"Manual","6":false,"12":0,"101":false,"102":false,"103":0,"104":1,"105":15,"106":true,"107":true,"108":true,"109":-10,"110":10,"111":2,"112":45,"113":5,"114":35,"115":5,"116":"in","117":"keep","118":"2days"}
jetzt habe ich versucht das ganze in einen String zu schreiben und den von Parameter 3 haben.
aber genau hier komm ich nicht weiter..wie schaffe ich es mit JSON mir den Wert "von 3" zu holen?
Habe es auch schon über die PaperUI probiert, aber da bekomme ich entweder "-" oder NaN angezeigt!
Kann mir jemand helfen und evtl. einen Beispielcode zeigen?
Bin über jede hilfe dankbar.
JSON Path MQTT
- udo1toni
- Beiträge: 15247
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: JSON Path MQTT
Es gibt verschiedene Optionen. Zuerst mal wüsste ich aber gerne, warum Du das mqtt1 Binding verwendest. 
Option 1: String Item. Es geht nur um die Anzeige des Wertes:
Der String enthält die komplette JSON Antwort, es wird aber der Wert vom Parameter 3 angezeigt.
Option 2: String Item. Der (oder die) Wert(e) soll(en) als Wert zur Verfügung stehen:
Der im Parameter 3 stehende Wert wird mittels Rule in einem eigenen Item gespeichert.
Option 3: direkt ins Number Item, weil nur einer der Werte aus dem JSON gebraucht wird:
Unter mqtt2 sieht die Konfiguration wesentlich anders aus. mqtt1 ist deprecated, falls es also keine zwingenden Gründe gibt (Du nutzt OH1.x oder OH2.y, wobei y<=2 gilt), solltest Du lieber auf mqtt2 umsteigen.
Auf jeden Fall brauchst Du aber JSONPATH, welches Du natürlich installieren musst.

Option 1: String Item. Es geht nur um die Anzeige des Wertes:
Code: Alles auswählen
String myString "3[JSONPATH($.3):%s]" {mqtt="<[broker:tuya/lightbulb/xxxxxxxx/xxxxxx/192.168.2.142/dps:state:default]"}
Option 2: String Item. Der (oder die) Wert(e) soll(en) als Wert zur Verfügung stehen:
Code: Alles auswählen
String myString "myString" {mqtt="<[broker:tuya/lightbulb/xxxxxxxx/xxxxxx/192.168.2.142/dps:state:default]"}
Number myString3 "3[%.0f]"
Code: Alles auswählen
rule "update Items for myString"
when
Item myString changed
then
myString3.postUpdate(transform("JSONPATH","$.3",myString.state.toString))
end
Option 3: direkt ins Number Item, weil nur einer der Werte aus dem JSON gebraucht wird:
Code: Alles auswählen
Number myString3 "3[%d]" {mqtt="<[broker:tuya/lightbulb/xxxxxxxx/xxxxxx/192.168.2.142/dps:state:JSONPATH($.3)]"}
Auf jeden Fall brauchst Du aber JSONPATH, welches Du natürlich installieren musst.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet