Probleme mit "Incoming Value Transformations" / "JSONPATH"

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

laoli
Beiträge: 15
Registriert: 7. Feb 2022 19:58
Answers: 0

Probleme mit "Incoming Value Transformations" / "JSONPATH"

Beitrag 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!
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

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

Beitrag 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.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

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

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

Beitrag 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.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

laoli
Beiträge: 15
Registriert: 7. Feb 2022 19:58
Answers: 0

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

Beitrag 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
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

laoli
Beiträge: 15
Registriert: 7. Feb 2022 19:58
Answers: 0

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

Beitrag 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!

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

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

Beitrag 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.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

laoli
Beiträge: 15
Registriert: 7. Feb 2022 19:58
Answers: 0

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

Beitrag 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!

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

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

Beitrag 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...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

laoli
Beiträge: 15
Registriert: 7. Feb 2022 19:58
Answers: 0

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

Beitrag 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
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

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

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

Beitrag 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 :)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten