OH4 Transformation

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Satmaster
Beiträge: 2
Registriert: 27. Sep 2022 14:16
Answers: 0

OH4 Transformation

Beitrag von Satmaster »

Hallo zusammen,

Benutze OH4.1.2 auf dem raspi

Habe ein Temperatur Item der den Wert als Zahl zb. 1000 augibt ich aber Ihn duch 100 teilen will damit eine 10 ausgegebn wird.

Leider konnte ich für OH4 zum Thema Transformation und JSONPATH nicht viel auf deutsch finden.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

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

Re: OH4 Transformation

Beitrag von udo1toni »

Die Frage ist, aus welchem Thing/Channel der Wert kommt.
Wenn es sich um mqtt oder http handelt, öffne die Advanced Options des Channels und setze den Paramter unit auf c°C (Centigrad Celsius).

EDIT: aus dem Channellink, geht ja hervor, dass es sich um Modbus handelt (Guten Morgen, Udo!). Keine Ahnung, ob Modbus einen unit Parameter bietet. Falls nicht, kannst Du die Umrechnung aber auch im Link vornehmen, dort gibt es als Optionsfeld Profile, und dort die Option DSL. Wenn Du das auswählst, gibt es weiter unten zwei Felder, von denen das Thing to Item interessant ist. Dort trägst Du

Code: Alles auswählen

| input * 0.01
ein. Wahlweise kann es auch notwendig sein, stattdessen

Code: Alles auswählen

| input.to_f * 0.01
einzutragen (so steht es in der Doku, war bisher bei mir nicht notwendig, aber ich nutze das gerade auch nicht, also hat es da vielleicht eine Änderung gegeben...)

Im Item (Metadata) gibt es ebenfalls einen Parameter unit, den solltest Du auf °C einstellen, außerdem gibt es noch in den Metadatan die State Description. In der State Description gibt es den Parameter Pattern, dort trägst Du %.1f °C ein, für die Anzeige mit einer Nachkommastelle. Falls Du zwei Nachkommastellen willst, schreibst Du statt der 1 eine 2.

Da die vorherigen Werte schon mit dem falschen Faktor persistiert wurden, solltest Du die Persistence für das Item löschen. Im Ordner $OPENHAB_USERDATA gibt es einen Unterordner persistence, dort den Ordner rrd4j und in diesem Ordner gibt es eine Datei Modbus_Data_10200_Value_as_Number.rrd. Diese Datei löschst Du. openHAB wird sie beim eintreffen des nächsten Wertes automatisch wieder anlegen.
openHAB4.3.0 stable in einem Debian-Container (bookworm) (Proxmox 8.3.1, LXC), mit openHABian eingerichtet

Satmaster
Beiträge: 2
Registriert: 27. Sep 2022 14:16
Answers: 0

Re: OH4 Transformation

Beitrag von Satmaster »

Habe im Item (Metadata) IParameter Pattern, eingetragen %.1f °C State Description und Nachkommastellen sind da aber leider keine Umrechnung

Die Datei Datei Modbus_Data_10200_Value_as_Number.rrd gelöscht.

Optionsfeld Profile, und dort die Option DSL ausgewählt:
| input * 0.01 und auch | input.to_f * 0.01
hat aber leider nichts gebracht.
Habe ein Screenshot von dem Thing Cannel beigefügt,ist ein Value as Number.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

2mad4max
Beiträge: 21
Registriert: 15. Mär 2023 17:18
Answers: 0

Re: OH4 Transformation

Beitrag von 2mad4max »

Hallo zusammen,

habe glaube ich das gleiche Problem und keine Lösung im Forum gefunden.
Modbus Daten Temperatur als format in Modbus Data Thing 192
Dann stateDescription > MetaData > Pattern > %.1f °C > Ergebnis 192.0°C
Wie schaffe ich es den Wert nach 19.2°C oder 19.20°C zu bringen?

Grüße
Chris

Harka
Beiträge: 425
Registriert: 30. Apr 2021 13:13
Answers: 15

Re: OH4 Transformation

Beitrag von Harka »

Moin,
um bei Udos Lösungsansatz zu bleiben und wenn Du JavaScript_Scripting installiert hast (Add-on/Automations) kannst Du folgendes versuchen:
Im Profil "SCRIPT ECMAScript (ECMAScript 262 Edition 11)" wählen (in der Abbildung über deinem Beitrag 2 Positionen weiter oben) und in "Thing To Item Transformation" dies rein kopieren

Code: Alles auswählen

|parseFloat(input)*0.1

2mad4max
Beiträge: 21
Registriert: 15. Mär 2023 17:18
Answers: 0

Re: OH4 Transformation

Beitrag von 2mad4max »

Hi Harka,

besten Dank für deine schnelle Antwort!
ABER habe noch nicht mit Profilen gearbeitet...
Das Spript kann ich nicht auswählen (Hoffe der Fehler liegt bei mir) oder ich muss auf OH4?
Standard
JSONPATH
Folgen
Versatz
Gain-Offset Correction

Grüße
Chris

Harka
Beiträge: 425
Registriert: 30. Apr 2021 13:13
Answers: 15

Re: OH4 Transformation

Beitrag von Harka »

Moin,
und wenn Du JavaScript_Scripting installiert hast (Add-on/Automations)
Die Antwort bezieht sich openHAB 4.1.2 (aktuelle Version - damit getestet) aber sollte zumindest auch mit OH 4.0, welches vor 10 Monaten vorgestellt wurde, und ECMAScript 2022+ funktionieren.

2mad4max
Beiträge: 21
Registriert: 15. Mär 2023 17:18
Answers: 0

Re: OH4 Transformation

Beitrag von 2mad4max »

OK Danke dann erstmal upgrade auf 4 und weiterschauen ;-)

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

Re: OH4 Transformation

Beitrag von udo1toni »

Grundsätzlich: Die Profiles gibt es schon länger (seit OH2.x ... x >=...3? so ungefähr...) .
Allerdings kannst Du in älteren Versionen zum einen nur JavaScript verwenden, zum anderen muss das als Transformation Service installiert sein (unter OH4 steht alles, was als Scripting Engine installiert ist, automatisch auch für Transformations zur Verfügung) und das Script kann nicht inline übergeben werden, sondern muss zwingend in einer Datei vorliegen. Außerdem kann man erst seit v4 gezielt unterschiedliche Scripte für die beiden Richtungen angeben.
Es käme also darauf an, auf welcher Version genau Du gerade bist. Die Umrechnung sollte so oder so per Profile Script funktionieren und wird lediglich anders konfiguriert.
openHAB4.3.0 stable in einem Debian-Container (bookworm) (Proxmox 8.3.1, LXC), mit openHABian eingerichtet

2mad4max
Beiträge: 21
Registriert: 15. Mär 2023 17:18
Answers: 0

Re: OH4 Transformation

Beitrag von 2mad4max »

Hi Udo & Harka,

BESTEN DANK! Jetzt klappt es.
Upgrade auf OH4.1.2 / Pattern %.1f °C / DSL input * 0.01 und ta ta Temperatur wird korrekt ausgegeben XX.X°C :-) :-)
Und @Udo gleich noch eine (Blöde?) Frage hinterher. Falls ich jetzt statt XX.X nach X.XX transformieren will?

Grüße
Chris

Antworten