Seite 1 von 1

[gelöst] Probleme beim Auslesen mit jsonpath

Verfasst: 25. Apr 2023 22:08
von Flo0815
Hallo zusammen,

ich habe einen Tasmota geflashten Shelly EM in OpenHAB über das Mosqitto Binding und ein entsprechendes Thing eingebunden.
Ich kann etliche der Messwerte damit schon auslesen, d.h. ich denke Birdge und Thing funkionieren generell. Ein Problem habe ich allerdings mit allen Werten die im json als, meiner Meinung nach, Array angelegt sind. Hier der Code zweier Channels und das zugehörige komplette json "File"

Topic:

Code: Alles auswählen

tele/PV_Messung/SENSOR
json aus MqttExplorer:

Code: Alles auswählen

{"Time":"2023-04-25T20:59:53","ENERGY":{"TotalStartTime":"2023-04-20T22:46:37","Total":-9.965,"Yesterday":-1.468,"Today":-1.846,"TodaySumImport":0.000,"TodaySumExport":1.846,"ExportActive":[0.000,0.000],"Period":[0,0],"Power":[0,0],"ApparentPower":[0,0],"ReactivePower":[0,0],"Factor":[0.00,0.00],"Frequency":50,"Voltage":232,"Current":[0.000,0.000]}}
1 Funktioniert:

Code: Alles auswählen

 - id: PV_Energy_TodaySumExp
    channelTypeUID: mqtt:number
    label: PV_Energy_TodaySumExp
    description: null
    configuration:
      stateTopic: tele/PV_Messung/SENSOR
      transformationPattern: JSONPATH:$.ENERGY.TodaySumExport
      unit: kWh
2 Kostet mir seit 2 Abenden Nerven:

Code: Alles auswählen

- id: PV_Energy_Power1
    channelTypeUID: mqtt:number
    label: PV_Energy_Leistung1
    description: null
    configuration:
      stateTopic: tele/PV_Messung/SENSOR
      transformationPattern: JSONPATH:$.ENERGY.Power.0
      unit: W
Ebenfalls aus dem MqttExplorer der "Pfad" zu dem Wert: ENERGY.Power.0

Kann mir jemand sagen was für einen Fehler ich hier mache.

Re: Probleme beim Auslesen mit jsonpath

Verfasst: 25. Apr 2023 22:47
von peter-pan
Ich denke, dass der Pattern so aussieht:

Code: Alles auswählen

JSONPATH:$.ENERGY.Power
Der JSON-String etwas "gehübscht":

Code: Alles auswählen

{
    "Time": "2023-04-25T20:59:53",
    "ENERGY": {
        "TotalStartTime": "2023-04-20T22:46:37",
        "Total": -9.965,
        "Yesterday": -1.468,
        "Today": -1.846,
        "TodaySumImport": 0,
        "TodaySumExport": 1.846,
        "ExportActive": [
            0,
            0
        ],
        "Period": [
            0,
            0
        ],
        "Power": [
            0,
            0
        ],
        "ApparentPower": [
            0,
            0
        ],
        "ReactivePower": [
            0,
            0
        ],
        "Factor": [
            0,
            0
        ],
        "Frequency": 50,
        "Voltage": 232,
        "Current": [
            0,
            0
        ]
    }
}

Re: Probleme beim Auslesen mit jsonpath

Verfasst: 25. Apr 2023 23:08
von Flo0815
Ja mit dem Pattern, dass du hier angiebst habe ich es auch schon versucht, Werte bekomme da aber auch keine.

Und ja gehübscht sieht das JSON String genau so aus. Aber was mache ich dann Falsch bzw was muss ich anpassen das ich diese Messwerte die in dem Array bei z.B. Power stehen bekomme.

Re: Probleme beim Auslesen mit jsonpath

Verfasst: 25. Apr 2023 23:21
von peter-pan
Der Wert ist ja auch 0,0

Re: Probleme beim Auslesen mit jsonpath

Verfasst: 26. Apr 2023 02:16
von udo1toni
Ich hab das Posting oben mal etwas formatiert, der besseren Lesbarkeit wegen ;)
peter-pan hat geschrieben: 25. Apr 2023 23:21 Der Wert ist ja auch 0,0
Nope.
Der Wert ist nicht 0,0, der Wert ist [0,0]. Es handelt sich um einen Knoten mit zwei separaten Werten, weil es sich um eine Zweikanalgerät handelt.
Der korrekte Schlüssel für den ersten Channel heißt entsprechend $.ENERGY.Power[0], der für den zweiten Channel $.ENERGY.Power[1]

Wird vielleicht deutlicher mit einem Bild des JSON Plugins von Notepad++...
Screenshot 2023-04-26 020743.png

Re: Probleme beim Auslesen mit jsonpath

Verfasst: 26. Apr 2023 11:55
von peter-pan
Sorry, da war ich zu schnell.

Udo hat natürlich Recht. Aber da hätte ich auch selber drauf kommen können(müssen).

Einen Wert, so wie ich ihn dargestellt habe (0,0), gibt es nicht, wenn dann schon "0.0".

Ich habe aber in meinem VSC-Add-On, den falschen Parameter angeklickt.

Aber der Tipp von Udo mit dem JSON-Viewer in Notepad++ war toll. Ich hab mir den gleich installiert.
json.View.jpg

Re: Probleme beim Auslesen mit jsonpath

Verfasst: 26. Apr 2023 18:08
von Flo0815
Danke Udo funktioniert, lag wohl an meiner Ungeduld, ich hatte das schon mal mit der [] nur hatte ich da die Aktualisierung vom Tasmota noch auf 300 s und wohl nicht lange genug gewartet. Asche über mein Haupt.

Vielen Dank der Tipp mit dem Notepad ist super das hatte ich schon kannte nur diese funktion noch nicht.

Re: [gelöst] Probleme beim Auslesen mit jsonpath

Verfasst: 27. Apr 2023 21:20
von udo1toni
Tatsächlich ist VS Code mit einer Unmenge an passenden Plugins Notepad++ auch hier überlegen (man muss halt die richtigen finden...).
Z.B. JSON Path Status Bar blendet für den Wert, auf dem der Cursor steht den gültigen Path ein (und man kann ihn mit einem Mausklick direkt in die Zwischenablage übernehmen)
Screenshot 2023-04-27 211514.png
Ich hatte nur Notepad++ bereits geöffnet und war zu faul, VS Code aufzurufen - ich kannte die korrekte Antwort ja auch so...

EDIT: Ich stelle gerade fest, dass der Bildschirmausschnitt gar nicht den korrespondierenden wert anzeigt (der eingemalte Pfeil zeigt auf Period, nicht Power) - egal, ich lass das jetzt so, es sollte ja klar sein, wie es gemeint ist...

Re: [gelöst] Probleme beim Auslesen mit jsonpath

Verfasst: 28. Apr 2023 23:24
von Flo0815
Danke für den Tip Udo. Werde mir das mal ansehen.