Seite 1 von 2

Probleme mit "Incoming Value Transformations" / "JSONPATH"

Verfasst: 8. Mär 2022 19:51
von laoli
Hallo zusammen,

ich habe ein Problem mit den Incoming Value Transformations.
Ich habe die bis jetzt vorerst umgangen und alles in Rules erleidgt, gerade könnte ich die Funktion aber eigentlich gut brauchen (und würde auch paar andere Sachen darauf umbauen).

Grundlage ist folgende mqtt Topic: tele/TasmotaBeiServer/RESULT
Welche bspw. folgendes ausgibt:

Code: Alles auswählen

{"Time":"1970-01-01T01:15:45","IrReceived":{"Protocol":"RC6","Bits":20,"Data":"0x1005B"}}
Wenn ich ein Item Generic MQTT Thing anlege und einen Channel auf die "MQTT State Topic" "tele/TasmotaBeiServer/RESULT" lege, erhält das dahinter liegende Item (testweise erstmal String) auch den kompletten JSON String:

Code: Alles auswählen

{"Time":"1970-01-01T01:15:45","IrReceived":{"Protocol":"RC6","Bits":20,"Data":"0x1005B"}}
Ich gehe davon aus, dass ich die "Incoming Value Transformations" auf "JSONPATH:$.IrReceived" stellen kann und dadurch nur der Inhalt von IrReceived in das Item übernommen werden sollte, dass ist allerdings nicht der Fall.
Das Item wird immer noch auf den kompletten JSON String aktualisiert.
Es ist nur ein einfaches Beispiel.
Egentlich würde ich gerne mehr Transformationen nutzen, aber wenn das schon nicht läuft sollte das Beispiel erstmal reichen.

Zur Sicherheit habe ich auch zwei Bilder angehangen, einmal von der eingetragenen Transformation und einmal von dem Ergebnis im Item.

Ich gehe davon aus, das in OpenHab keine Transormation installiert werden muss.
Ist das eventuell auch mein Fehler?
Grundsätzlich läuft OpenHab in einem Debian 11 LXC Container.

Hier noch der Code des Thing:

Code: Alles auswählen

UID: mqtt:topic:78ff7a734b:Zimmer_IrReceived
label: Zimmer_IrReceived
thingTypeUID: mqtt:topic
configuration: {}
bridgeUID: mqtt:broker:78ff7a734b
location: Zimmer
channels:
  - id: Zimmer_IrReceived_Data
    channelTypeUID: mqtt:string
    label: Zimmer_IrReceived_Data
    description: ""
    configuration:
      postCommand: false
      retained: false
      qos: 0
      stateTopic: tele/TasmotaBeiServer/RESULT
      transformationPattern: JSONPATH:$.IrReceived
Würde mich freuen wenn das läuft, es scheint mir eigentlich korrekt zu sein.
Hatte mehrmals rumprobiert, aber will jetzt nicht mehr den Umweg über Scripte gehen.

Vielen Dank!

Re: Probleme mit "Incoming Value Transformations" / "JSONPATH"

Verfasst: 8. Mär 2022 20:38
von peter-pan
Der JSON-String sieht für mich ok aus. Aber der State-Topic kommt mir irgendwie komisch vor (tele/TasmotaBeiServer/RESULT). Müsste da nicht "STATE" oder etwas ähnliches anstelle von "RESULT" stehen ?

Bei mir sieht das in der WEB-UI (abgekürzt) so aus:

Code: Alles auswählen

20:07:24.102 MQT: tele/basic_04/STATE = {"Time":"2022-03-08T20:07:24","Uptime":"5T23:25:25","UptimeSec":516325,"Heap":26..
20:12:24.078 MQT: tele/basic_04/STATE = {"Time":"2022-03-08T20:12:24","Uptime":"5T23:30:25","UptimeSec":516625,"Heap":26..
20:14:45.680 MQT: stat/basic_04/RESULT = {"POWER":"ON"}
20:14:45.683 MQT: stat/basic_04/POWER = ON
20:14:48.543 MQT: stat/basic_04/RESULT = {"POWER":"OFF"}
20:14:48.546 MQT: stat/basic_04/POWER = OFF
20:17:24.112 MQT: tele/basic_04/STATE = {"Time":"2022-03-08T20:17:24","Uptime":"5T23:35:25","UptimeSec":516925,"Heap":26.. 
Ein State-Topic hierzu ist z.B.:

Code: Alles auswählen

tele/basic_04/STATE
Das "RESULT" ist eigentlich nur das Ergebnis eines Kommandos.

Re: Probleme mit "Incoming Value Transformations" / "JSONPATH"

Verfasst: 8. Mär 2022 20:42
von udo1toni
Es ist eigentlich nicht vorgehen, Teiledes Objets zurückzuliefern, die über ein einzelnes Datum hinausgehen. Gewöhnlich wird man

Code: Alles auswählen

JSONPATH:$.IrReceived.Data
verwenden.
Aber zunächst eine andere Frage...: Hast Du JSONPATH auch installiert?
Wenn Du die anderen Bestandteile von IrReceived ebenfalls auswerten willst, könntest Du drei Items mit dem String(!) Channel verlinken und das JSONPATH als Profile eintragen, das geht dann für jedes Item getrennt.

Re: Probleme mit "Incoming Value Transformations" / "JSONPATH"

Verfasst: 8. Mär 2022 21:22
von laoli
@udo1toni
mal ne blöde Frage: wo installiere ich JSONPATH (dachte das wäre bei OpenHab 3 schon standard und muss nicht installiert werden).
In der Web GUI finde ich da direkt nichts zu und gehe eigentlich davon aus dass es bei OH3 standard ist.
Ich brauche auch nur den aktuellen Stand.
Eigentlich geht es mir auch um dein genanntes "JSONPATH:$.IrReceived.Data", habe vereinfacht "JSONPATH:$.IrReceived" geschrieben weil dass schon nicht funktioniert.
Die Zeit ist mir vollkommen egal, Tasmota postet sie halt mit.
Aber "JSONPATH:$.IrReceived.Data" funktioniert genau so wenig und eigentlich müsste das funktionieren.
Wenn das wirklich der Fehler ist, wie installiere ich die Extension?
BTW: Meine m.E. recht gut abgesicherte Möglichkeit VM's auf dem selben Proxmox Host zu starten werde ich demnächst mal dokumentieren.
Funktioniert wirklich super zum Start der VM über eine Fernbedienung und zum Shutdown mit Timer.

@peter-pan
Ich gehe davon aus dass die Topic korrekt ist, auch wenn ich für den IR Empfang gerne ein eigenes Topic haben würde (ist über einen Tasmota geflashten ESP8266 der aktuell auch meine eh vorhandenen bedrahteten Lichtschalter ausliest.
Gefälllt mir auch nicht ganz so an was man da gebunden ist. Hätte es selbst programmiert, aber versuche aktuell, bis auf Ausnahmen, auf standard Komponennten zu wechseln und Tasmota scheint ja an sich ok, aber man ist bei weitem nicht so flexibel und viele Dinge wären deutlich leichter wenn man selbst den Code schreibt).
Hänge dir ein Bild an von den aktuellen mqtt outputt

Re: Probleme mit "Incoming Value Transformations" / "JSONPATH"

Verfasst: 8. Mär 2022 21:33
von laoli
OK...
Mal etwas Kritik an OpenHab, auch wenn ich mich eventuell etwas dumm angestellt habe.
Ich arbeite mit einigen Software Produkten, privat und auch beruflich.
Und das bei weitem nicht mit standard Produkten.

Aber warum ist diese Erweiterung (ich dachte sie währe bei OpenHab3 eh drin) als Binding definiert?

Mein Binding ist doch MQTT.

Die Transformation müsste doch irgendein Addon sein, wofür es keinen eigenen bereich gibt.

Ja, ich habe jetzt die Transformation in den Bindings gefunden und installiert.
Alles funktioniert komplett wir erwartet :)

Logisch finde ich das nicht und irgendwie sollte dieses Binding/Addon eh schon standard sein und wenn seperat an einer anderen Stelle zu finden sein.

Naja...

Trotzdem danke an euch alle, damit komme ich ein ordentliches Stück weiter!

Re: Probleme mit "Incoming Value Transformations" / "JSONPATH"

Verfasst: 8. Mär 2022 21:33
von udo1toni
JSONPATH ist ein Addon wie jede andere Funktion auch, selbstverständlich musst Du das installieren.
Installation über die Main UI: Administration->Einstellungen->Add-Ons->Other Add-Ons->runterscrollen bis Transformation Add-Ons->JSONPath Transformation.
Alternativ kannst Du auch einfach nur bis Add-Ons->Binding gehen und dann unten rechts auf search, dann oben in die Suchleiste json eintippen und das Addon installieren lassen.

Re: Probleme mit "Incoming Value Transformations" / "JSONPATH"

Verfasst: 8. Mär 2022 21:39
von laoli
@udo1toni
Auch gerade gefunden, unser Post hat sich überschnitten :D

Etwas blöd dass es in dem Channel einfach so genannt wird als würde es standard sein (Ohne dass AddOn/Binding, sollte es da einfach nicht auftauchen), anderseits ist die Installtion über ein Binding auch irgendwo der falsche Punkt.
Ich nutze es ja nicht als Binding an sich.

Aber auf jeden Fall ein großer Dank, durch die Transformations wird vieles leichter bzw. sinnvoller.
Das hat mich etwas genervt seit der Umstellung.

Im Ganzem bin ich aber erstmal sehr zufrieden mit OpenHab, gerade wenn sich die Thematik jetzt erledigt hat...

Danke!

Re: Probleme mit "Incoming Value Transformations" / "JSONPATH"

Verfasst: 8. Mär 2022 21:41
von udo1toni
Ah, Du bist inzwischen schon selbst fündig geworden...

Es mag Dir logisch erscheinen, aber der Punkt ist, dass nicht jeder Transformations benötigt, und schon gar nicht alle, die zur Verfügung stehen. Ja, JSONPath ist schon weit verbreitet, aber trotzdem. Dazu kommt noch, dass Du JSONPATH sowohl für MQTT als auch z.B. für http brauchen kannst (und es sind noch andere Quellen denkbar, wo es ebenfalls Verwendung finden könnte). Der Nutzer muss letztlich entscheiden, welche Funktionen er braucht. Aber ich gebe gerne zu, dass man auf den jeweiligen Seiten zu den Bindings prominent darauf hinweisen könnte, dass JSONPath kein Bestandteil des Bindings ist und separat installiert werden muss.

Früher(tm) gab es eine Funktion, beim Einrichten der Umgebung eine Grundinstallation auszuführen, wenn man dort Expert auswählte, wurden die wichtigsten Transformations direkt eingerichtet... ;)

EDIT: Und hast auch das Überschneiden bemerkt...

Re: Probleme mit "Incoming Value Transformations" / "JSONPATH"

Verfasst: 8. Mär 2022 21:58
von laoli
js.PNG
Gerade an der Stelle im angehangenen Screenshot wird einem ja suggeriert, dass die Transformationen Out of the Box funktionieren.
Da wäre ein Hinweis in der Oberfläche schön gewesen :)

Bin froh die Lösung zu kennen, danach erschließt sich wieder meine normale Logik und ich kann wie gewohnt mir JSON Strings arbeiten.

Werde im nächsten Monat wahrscheinlich keine Zeit finden, aber denke der Wechsel zu OpenHab war grundsätzlich sinnvoll.
Meine Alt-Programmierung ist bereits vollkommen abgelöst, nur noch die LED Animationen steuer ich über das HTTP Binding in der alten, jetzt eingesperrten, Programmierung an (OpenHab ist natürlich auch gut eingesperrt :D).
Aber durch die jetzt funktionierenden Transformationen kann ich da noch ein paar Sachen aus Skripten entfernen und direkt umsetzen

Re: Probleme mit "Incoming Value Transformations" / "JSONPATH"

Verfasst: 8. Mär 2022 22:19
von udo1toni
laoli hat geschrieben: 8. Mär 2022 21:58 Gerade an der Stelle im angehangenen Screenshot wird einem ja suggeriert, dass die Transformationen Out of the Box funktionieren.
Da wäre ein Hinweis in der Oberfläche schön gewesen :)
Ja, ich bin vollkommen bei Dir :)