Seite 1 von 1

JSON Path MQTT

Verfasst: 8. Aug 2019 17:19
von silasT89
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.

Re: JSON Path MQTT

Verfasst: 11. Aug 2019 22:15
von udo1toni
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:

Code: Alles auswählen

String myString "3[JSONPATH($.3):%s]" {mqtt="<[broker:tuya/lightbulb/xxxxxxxx/xxxxxx/192.168.2.142/dps:state:default]"}
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:

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
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:

Code: Alles auswählen

Number myString3 "3[%d]" {mqtt="<[broker:tuya/lightbulb/xxxxxxxx/xxxxxx/192.168.2.142/dps:state:JSONPATH($.3)]"}
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.