OH4 Transformation
-
- Beiträge: 2
- Registriert: 27. Sep 2022 14:16
OH4 Transformation
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.
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.
- udo1toni
- Beiträge: 14898
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: OH4 Transformation
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
ein. Wahlweise kann es auch notwendig sein, stattdessen
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.
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
Code: Alles auswählen
| input.to_f * 0.01
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
-
- Beiträge: 2
- Registriert: 27. Sep 2022 14:16
Re: OH4 Transformation
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.
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.
-
- Beiträge: 21
- Registriert: 15. Mär 2023 17:18
Re: OH4 Transformation
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
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
-
- Beiträge: 425
- Registriert: 30. Apr 2021 13:13
Re: OH4 Transformation
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
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
-
- Beiträge: 21
- Registriert: 15. Mär 2023 17:18
Re: OH4 Transformation
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
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
-
- Beiträge: 425
- Registriert: 30. Apr 2021 13:13
Re: OH4 Transformation
Moin,
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.und wenn Du JavaScript_Scripting installiert hast (Add-on/Automations)
-
- Beiträge: 21
- Registriert: 15. Mär 2023 17:18
Re: OH4 Transformation
OK Danke dann erstmal upgrade auf 4 und weiterschauen
- udo1toni
- Beiträge: 14898
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: OH4 Transformation
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.
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
-
- Beiträge: 21
- Registriert: 15. Mär 2023 17:18
Re: OH4 Transformation
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
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