JSON path mit mqtt

Die alternative Firmware für ESP8266 based devices

Moderatoren: seppy, udo1toni

Antworten
goerdi
Beiträge: 110
Registriert: 21. Dez 2019 23:44
Answers: 0

JSON path mit mqtt

Beitrag 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

Harka
Beiträge: 308
Registriert: 30. Apr 2021 13:13
Answers: 15

Re: JSON path mit mqtt

Beitrag von Harka »

Hi,
wenn ich das hier am Handy richtig sehe fehlt vor Energy noch das StatusSNS. Also JSONPATH:$.StatusSNS.ENERGY.Today

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

Re: JSON path mit mqtt

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

goerdi
Beiträge: 110
Registriert: 21. Dez 2019 23:44
Answers: 0

Re: JSON path mit mqtt

Beitrag 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

Benutzeravatar
peter-pan
Beiträge: 2573
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: JSON path mit mqtt

Beitrag 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
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

Antworten