JSON Path MQTT

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
silasT89
Beiträge: 8
Registriert: 4. Aug 2019 21:55
Answers: 0

JSON Path MQTT

Beitrag 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.

Benutzeravatar
udo1toni
Beiträge: 15247
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: JSON Path MQTT

Beitrag 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.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten