OH 3 im Log "WARN " "Could not transform state '0.001' with function 'JSONPATH:$.ENERGY.Total' and format '%s' "

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: OH 3 im Log "WARN " "Could not transform state '0.001' with function 'JSONPATH:$.ENERGY.Total' and format '%s' "

Beitrag von udo1toni »

Gut, die Konfiguration sieht erst mal gut aus.
Kann es sein, dass das Topic tele/Tellerschleifer/SENSOR zwischendrin andere Nachrichten schickt? Dann müsstest Du ein verkettetes transformationPattern verwenden, so:

Code: Alles auswählen

transformationPattern: REGEX:(.*Yesterday.*)∩JSONPATH:$.ENERGY.Yesterday
Das Symbol ∩ verkettet beide Transformations miteinander. Am einfachsten kopiert man das Symbol aus dem Hilfstext, der zum transformationPattern gehört, denn das Symbol ist nicht auf der Tastatur vorhanden, in der Windows Zeichentabelle gibt es mindestens zwei Symbole, die sich zum verwechseln ähnlich sehen, aber nur das hier wiedergegebene wird auch korrekt erkannt :)
REGEX lässt in diesem Fall nur die Strings durch, welche das Schlüsselwort "Yesterday" enthalten. Falls nun Payloads im Topic landen, welche keinen passenden Inhalt haben, wird das nicht zu einem Update des Status führen, und damit auch nicht zu einer Warnmeldung.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Locke
Beiträge: 251
Registriert: 14. Apr 2020 11:35
Answers: 3
Wohnort: bei Hamburg

Re: OH 3 im Log "WARN " "Could not transform state '0.001' with function 'JSONPATH:$.ENERGY.Total' and format '%s' "

Beitrag von Locke »

Locke hat geschrieben: 5. Apr 2022 22:17 ich hoffe ic habe den Fehler gefunden, ich hatte unter Channel's bei dem gelinktem Item Profile auch als JSONPATH und die Werte eingetragen.
Nachdem ich jetzt im Profil auf Standard gesetzt habe kommt keine "WARN" Meldung mehr.
Wäre es dann doppelt ? Denn in der Channel Config unter "Show advanced" gibt man den JSONPATH ja auch ein.
@udo,
ich denke es läuft jetzt so, Funktionen sind alle da nach der Änderung vom Profil (im gelinktem Item) auf "Standard"
Die "WARN" Meldungen sind jetzt weg.

muss man bei beiden den JSONPATH einfügen oder nur bei der Channel Config ?
thnx
____Sven_________________________________________________________________________________________
System 1, Raspberry Pi 4, 4GB RAM, openHAB 2.5.10 / System 2, Raspberry Pi 4, 2GB RAM, openHAB 3.3.0 /
System 3, Raspberry Pi 4, 2GB RAM, openHAB 4.0.2 / System 4 (Testsystem), Raspberry Pi 4, 2GB RAM, openHAB 4.1.1 / System 5, (als NAS) Raspberry PI 4, 4 GB RAM, openmediavault 6.8.0-1 (Shaitan)

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

Re: OH 3 im Log "WARN " "Could not transform state '0.001' with function 'JSONPATH:$.ENERGY.Total' and format '%s' "

Beitrag von udo1toni »

Ah. Die Antwort habe ich wohl verpasst...

Das Profile ist zur Manipulation von Werten gedacht. JSONPATH ist nur sinnvoll, wenn der Wert ein JSON Objekt ist. Wenn aber schon im Channel aus dem JSON Objekt ein einzelner Wert gemacht wird, muss das schief gehen.

Hintergrund hierzu: Es kommt häufig vor, dass man sich für mehrere Werte aus dem selben JSON Objekt interessiert. Dann speichert man das JSON Objekt in einen String Channel und koppelt mehrere Items mit diesem Channel. Das JSONPATH Statement kann dann im Profile definiert werden.

Auf der anderen Seite kann man über das transformationPattern mehrere Transformation Services miteinander verbinden, so dass z.B. zuerst per REGEX aus einem korrupten JSON Objekt ein gültiges JSON Objekt erstellt und anschließend auseinander genommen wird. Dann wird vielleicht noch aus den ankommenden Werten per Scale ein Stufenwert gebildet. Schon aus diesem Grund haben beide Optionen ihre Daseinsberechtigung.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten