Seite 1 von 1

JSON path mit mqtt

Verfasst: 17. Mai 2023 10:17
von goerdi
Hi !

Irgendwie scheine ich zu doof zu sein den JSON path korrekt einzustellen

mqtt telegramm

Code: Alles auswählen

09:10:37.607 MQT: stat/bkw/STATUS10 = {"StatusSNS":{"Time":"2023-05-17T09:10:37","Switch1":"OFF","ENERGY":{"TotalStartTime":"1970-01-01T00:00:00","Total":4.405,"Yesterday":2.402,"Today":0.054,"Power":87,"ApparentPower":87,"ReactivePower":0,"Factor":1.00,"Voltage":216,"Current":0.405}}}0

Code: Alles auswählen

thing
       Type number : 1pm_today   "Today"   [ stateTopic="stat/bkw/STATUS10", transformationPattern="JSONPATH:$.ENERGY.Today"]
Gruss Gerd

Re: JSON path mit mqtt

Verfasst: 17. Mai 2023 13:34
von Harka
Hi,
wenn ich das hier am Handy richtig sehe fehlt vor Energy noch das StatusSNS. Also JSONPATH:$.StatusSNS.ENERGY.Today

Re: JSON path mit mqtt

Verfasst: 17. Mai 2023 21:23
von udo1toni
Mal etwas anders formatiert:

Code: Alles auswählen

09:10:37.607 MQT: stat/bkw/STATUS10 = <- NICHT Bestandteil des JSON Objekts!
{
    "StatusSNS": {
        "Time": "2023-05-17T09:10:37",
        "Switch1": "OFF",
        "ENERGY": {
            "TotalStartTime": "1970-01-01T00:00:00",
            "Total": 4.405,
            "Yesterday": 2.402,
            "Today": 0.054,
            "Power": 87,
            "ApparentPower": 87,
            "ReactivePower": 0,
            "Factor": 1.0,
            "Voltage": 216,
            "Current": 0.405
        }
    }
}
0 <- NICHT Bestandteil des JSON Objekts! (vermutlich Kopierfehler)
So ist vielleicht besser ersichtlich, warum der korrekte Pfad tatsächlich $.StatusSNS.ENERGY.Today heißt.

Tipp: MQTT Explorer oder MQTT.fx zeigen die "puren" JSON Objekte an, auf Wunsch auch formatiert.
Es gibt für VS Code Plugins, mit denen man sich jeweils den korrekten JSON Pfad für jeden Einzelwert anzeigen lassen kann.

Re: JSON path mit mqtt

Verfasst: 18. Mai 2023 12:58
von goerdi
Hi !

Ok ich hab mich mal etwas in tasmota und die update rates eingelesen und muss auf SENSOR "umschwenken"
wenn ich dich jetzt richtig verstanden hab... (hier mal nur als Auszug ein item)
Thing

Code: Alles auswählen

Thing mqtt:topic:home:bkw "Shelly Plus 1PM  BKW"
      (mqtt:broker:home) @ "Intel NUC5 i3"
{
    Channels:
        Type number : 1pm_total             "Total"                 [ stateTopic="tele/bkw/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Total"]
        }
Item

Code: Alles auswählen

Number 1pm_total           "Energy Total: [%.3f kWh]"           <my_kwh>             (g1PM)             { channel="mqtt:topic:home:bkw:1pm_total" }
hier das Telegramm

Code: Alles auswählen

11:53:42.135 MQT: tele/bkw/SENSOR = 
{
    "Time":"2023-05-18T11:53:42",
    "Switch1":"OFF",
    "ENERGY": {
        "TotalStartTime":"1970-01-01T00:00:00",
        "Total":8.154,
        "Yesterday":3.224,
        "Today":0.579,
        "Period":1,
        "Power":640,
        "ApparentPower":640,
        "ReactivePower":0,
        "Factor":1.00,
        "Voltage":245,
        "Current":2.614
    }
}
Aber irgendwas passt immer noch nicht..

Gruss Gerd

Re: JSON path mit mqtt

Verfasst: 18. Mai 2023 20:46
von peter-pan
Hast du das Thing "Bridge" für deinen Broker auch angelegt ?

Edit:

An deinem Telegramm stimmt auch was nicht. Wahrscheinlich fehlt das Hochkomma und der Doppelpunkt hinter ENERGY