Seite 1 von 2

OH4 Transformation

Verfasst: 2. Apr 2024 01:35
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.

Re: OH4 Transformation

Verfasst: 2. Apr 2024 09:20
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.

Re: OH4 Transformation

Verfasst: 4. Apr 2024 18:43
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.

Re: OH4 Transformation

Verfasst: 31. Mai 2024 16:50
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

Re: OH4 Transformation

Verfasst: 31. Mai 2024 17:28
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

Re: OH4 Transformation

Verfasst: 1. Jun 2024 10:54
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

Re: OH4 Transformation

Verfasst: 1. Jun 2024 13:58
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.

Re: OH4 Transformation

Verfasst: 1. Jun 2024 15:39
von 2mad4max
OK Danke dann erstmal upgrade auf 4 und weiterschauen ;-)

Re: OH4 Transformation

Verfasst: 1. Jun 2024 16:33
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.

Re: OH4 Transformation

Verfasst: 1. Jun 2024 19:58
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