Seite 2 von 2

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

Verfasst: 5. Apr 2022 22:21
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.

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

Verfasst: 7. Apr 2022 12:06
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 ?

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

Verfasst: 7. Apr 2022 17:42
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.