Stromzähler auslesen JSONPATH Warnings

Die alternative Firmware für ESP8266 based devices

Moderatoren: seppy, udo1toni

Antworten
Taifun2300
Beiträge: 18
Registriert: 27. Dez 2022 09:19
Answers: 0

Stromzähler auslesen JSONPATH Warnings

Beitrag von Taifun2300 »

Hallo,

ich lese meinen Stromzähler via Tasmota und JSON Path aus.
Also z.B.
"JSONPATH:$.SM.16_7_0" für die aktuelle Leistung gesamt

Geliefert werden die Daten unter dem Topic
"tele/Stromzaehler/SENSOR"

Die Nachricht sieht so aus
{"Time":"2023-07-28T17:04:32","SM":{"16_7_0":153.49}}

Dazu gibt es auch noch Nachrichten für die 3 Phasen
{"Time":"2023-07-28T17:04:32","SM":{"36_7_0":35.56}}
{"Time":"2023-07-28T17:04:32","SM":{"56_7_0":147.45}}
{"Time":"2023-07-28T17:04:32","SM":{"76_7_0":-29.52}}

Das Auslesen klappt einwandfrei und funktioniert!

Aber das Log wird zugemüllt mit Warnings:
2023-07-28 18:04:32.202 [WARN ] [t.generic.ChannelStateTransformation] - Executing the JSONPATH-transformation failed: Invalid path '$.SM.76_7_0' in '{"Time":"2023-07-28T17:04:32","SM":{"36_7_0":35.56}}'
2023-07-28 18:04:32.205 [WARN ] [t.generic.ChannelStateTransformation] - Executing the JSONPATH-transformation failed: Invalid path '$.SM.56_7_0' in '{"Time":"2023-07-28T17:04:32","SM":{"36_7_0":35.56}}'
2023-07-28 18:04:32.206 [WARN ] [t.generic.ChannelStateTransformation] - Executing the JSONPATH-transformation failed: Invalid path '$.SM.16_7_0' in '{"Time":"2023-07-28T17:04:32","SM":{"36_7_0":35.56}}'
2023-07-28 18:04:32.235 [WARN ] [t.generic.ChannelStateTransformation] - Executing the JSONPATH-transformation failed: Invalid path '$.SM.36_7_0' in '{"Time":"2023-07-28T17:04:32","SM":{"56_7_0":147.45}}'
2023-07-28 18:04:32.236 [WARN ] [t.generic.ChannelStateTransformation] - Executing the JSONPATH-transformation failed: Invalid path '$.SM.76_7_0' in '{"Time":"2023-07-28T17:04:32","SM":{"56_7_0":147.45}}'
2023-07-28 18:04:32.238 [WARN ] [t.generic.ChannelStateTransformation] - Executing the JSONPATH-transformation failed: Invalid path '$.SM.16_7_0' in '{"Time":"2023-07-28T17:04:32","SM":{"56_7_0":147.45}}'
2023-07-28 18:04:32.261 [WARN ] [t.generic.ChannelStateTransformation] - Executing the JSONPATH-transformation failed: Invalid path '$.SM.36_7_0' in '{"Time":"2023-07-28T17:04:32","SM":{"76_7_0":-29.52}}'
2023-07-28 18:04:32.263 [WARN ] [t.generic.ChannelStateTransformation] - Executing the JSONPATH-transformation failed: Invalid path '$.SM.56_7_0' in '{"Time":"2023-07-28T17:04:32","SM":{"76_7_0":-29.52}}'

Diese Warning sind ein Rätsel für mich?! :shock:

Ich habe angenommen, bzw. es funktioniert ja auch, die Definition im Channel ist ein Filter um die Daten für diesen Channel zu ermitteln.
Mache ich einen Gedankenfehler, übersehe ich etwas ?

Für jeden Hinweis, inklusive wie bekomme ich die Warnings aus dem Log dankbar ..... :)

LG
Christoph
openHAB 4.0.3 im Docker auf Debian 11, Anbindung an Raspmatic, Hue, FHEM, Fritzbox, Buderus KM200, Worx, Bilnk, Alexa

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

Re: Stromzähler auslesen JSONPATH Warnings

Beitrag von udo1toni »

Das Problem sind hier die Unterstriche. Du musst deshalb den Pfad anders schreiben: $.SM["16_7_0"]
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Taifun2300
Beiträge: 18
Registriert: 27. Dez 2022 09:19
Answers: 0

Re: Stromzähler auslesen JSONPATH Warnings

Beitrag von Taifun2300 »

Vielen lieben Dank für die schnelle Hilfe und Grüße nach Darmstadt aus Egelsbach ;)

Aber ich bekomme die Warnung weiterhin.

Ausprobiert habe ich
JSONPATH:$.SM.["16_7_0"]
JSONPATH:$.SM["16_7_0"]

LG
Christoph
openHAB 4.0.3 im Docker auf Debian 11, Anbindung an Raspmatic, Hue, FHEM, Fritzbox, Buderus KM200, Worx, Bilnk, Alexa

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

Re: Stromzähler auslesen JSONPATH Warnings

Beitrag von udo1toni »

Eigentlich gibt es da nichts auszuprobieren :)

Einzig könntest Du die doppelten Anführungszeichen durch einfache ersetzen, je nach Kontext kann das notwendig sein.
Der Online Tester http://jsonpath.com/ erkennt jede der Schreibweisen als korrekt an (selbst die ursprüngliche), VS Code gibt die von mir genannte an, VS Code liegt gewöhnlich richtig :)

Wo hast Du die Transformation eingerichtet, im Channel? Dann zeige bitte mal die Codeansicht des Channels.

STOP, Kommando zurück...

Das Problem ist ein ganz anderes... Ich realisiere das jetzt erst, obwohl Du es oben eigentlich direkt hingeschrieben hast... Sorry, hab gerade die Leitung mal unter meinem Fuß weggeschnippt...

Das Problem ist, dass hier unterschiedliche JSON Objekte geliefert werden, in denen nicht immer der geforderte Wert geliefert wird.
In diesem Fall musst Du zwei Transformations verknüpfen:

Code: Alles auswählen

REGEX:(.*16_7_0.*)∩JSONPATH:$.SM.16_7_0
Probiere es ruhig zunächst mit der einfachen Schreibweise, die hier ja gar nicht die Ursache des Problems zu sein scheint.

Du musst auf jeden Fall zusätzlich zu JSONPATH noch REGEX als Transformation Service installiert haben.
Die Verknüpfung bewirkt, dass nur JSON Objekte weitergegeben werden, in denen die Zeichenfolge 16_7_0 enthalten ist. Nur diese kommen überhaupt in JSONPATH an... Das Verknüpfungssymbol erhältst Du am einfachsten über den Hilfstext zur Incomming Value Transformation in der UI, es ist das Symbol, was in Windows Zeichentabelle als "Durchschnitt" bezeichnet wird. Gemeint ist aber die Schnittmenge (Mengenlehre - lang, lang ist's her).
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Taifun2300
Beiträge: 18
Registriert: 27. Dez 2022 09:19
Answers: 0

[Gelöst] Stromzähler auslesen JSONPATH Warnings

Beitrag von Taifun2300 »

PERFEKT !!!

So funktioniert es (mit REGEX), keine Warnings mehr :D
Nochmals vielen Dank!
openHAB 4.0.3 im Docker auf Debian 11, Anbindung an Raspmatic, Hue, FHEM, Fritzbox, Buderus KM200, Worx, Bilnk, Alexa

Antworten