Werte umrechnen
-
- Beiträge: 20
- Registriert: 10. Okt 2021 08:55
Werte umrechnen
Hallo,
gibt es eine einfache Möglichkeit die Werte umzurechnen? Die Werte kommen über modbus TCP aus einem Batteriewechselrichter mit dem Faktor 10. Bei der Anzeige 137A sind es also in Wirklichkeit 13,7A. Ich hab es schon mit pattern probiert (aktuell steht dort: %.1f A), finde aber keine Lösung. Im "Modbus_Data thing", wo der Strom eingelesen wird, gibt es noch einen Punkt: Read Transform: default. Konnte aber noch nichts darüber finden, ob und wie man da die Werte umrechnen könnte. Ich könnte mir jetzt ein neues Item erstellen und den Wert in einer Regel umrechnen, dann hätte ich aber jedesmal 2 fast gleiche Items und einige Regeln.
gibt es eine einfache Möglichkeit die Werte umzurechnen? Die Werte kommen über modbus TCP aus einem Batteriewechselrichter mit dem Faktor 10. Bei der Anzeige 137A sind es also in Wirklichkeit 13,7A. Ich hab es schon mit pattern probiert (aktuell steht dort: %.1f A), finde aber keine Lösung. Im "Modbus_Data thing", wo der Strom eingelesen wird, gibt es noch einen Punkt: Read Transform: default. Konnte aber noch nichts darüber finden, ob und wie man da die Werte umrechnen könnte. Ich könnte mir jetzt ein neues Item erstellen und den Wert in einer Regel umrechnen, dann hätte ich aber jedesmal 2 fast gleiche Items und einige Regeln.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Gruß
Ronny
Ronny
- peter-pan
- Beiträge: 2758
- Registriert: 28. Nov 2018 12:03
- Wohnort: Schwäbisch Gmünd
Re: Werte umrechnen
Es gibt sicherlich eine Möglichkeit mit einem zweiten Item und einer Rule den Wert zu berechnen.
Eine Möglichkeit das Ganze in einem Widget darzustellen wäre evtl. so:
Yaml-Code:
Das Ergebnis sieht dann so aus:
Den Parser habe ich benutzt, da mein Item einen Einheit hat (UoM). Das sollte aber bei einem "normalen" Item kein Problem sein.
Vielleicht hilft dir das weiter.
Eine Möglichkeit das Ganze in einem Widget darzustellen wäre evtl. so:
Yaml-Code:
Code: Alles auswählen
component: oh-label-cell
config:
title: Test Division
item: Socket_Fritz_04_Power
label: =(Number.parseFloat(items.Socket_Fritz_04_Power.state)/10).toFixed(2) + " kW"
slots: null
Vielleicht hilft dir das weiter.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian
- peter-pan
- Beiträge: 2758
- Registriert: 28. Nov 2018 12:03
- Wohnort: Schwäbisch Gmünd
Re: Werte umrechnen
Hab doch noch was gefunden. Du kannst ja in der Items-Verwaltung auch Meta-Daten ergänzen. Da suchst du dir "Default Standalone Widget" aus und trägst dann unter Label den Ausdruck =(Number.parseFloat(items.Socket_Fritz_04_Power.state)/10).toFixed(2) + " kW" ein. (natürlich mit deinen Daten). Dann sollte die Anzeige auch in den Items funktionieren.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian
-
- Beiträge: 20
- Registriert: 10. Okt 2021 08:55
Re: Werte umrechnen
Danke für deine Hilfe, ich hätte vielleicht noch schreiben sollen, dass ich Anfänger bin
Default Standalone Widget schien mir einfacher. Habe es direkt getestet, bei Label:
=(Number.parseFloat(items.ModbusDataVictronBatteryVoltage_ValueasNumber)/10).toFixed(2) + " A"
eingetragen und bekomme jetzt NaN A als Wert. Siehe Bilder.
Hatte mich zwischenzeitlich auch mit Read Transform beschäftigt. Also Javascript Transformation bei den Add-ons installiert, eine Datei erstellt in /etc/openhab/transform/divide10.js
Inhalt der Datei hatte ich irgendwo gefunden:
und bei Read Transform JS(divide10.js) eingetragen
Das gab im log nur eine lange Fehlermeldung. Ohne zu wissen, was man da tut ist es echt schwierig nach einer Lösung zu suchen...
EDIT: Hab es hiermit jetzt hinbekommen: viewtopic.php?f=15&t=4697&start=20 muss jetzt nur noch schauen, wie ich die kWh weg bekomme

Default Standalone Widget schien mir einfacher. Habe es direkt getestet, bei Label:
=(Number.parseFloat(items.ModbusDataVictronBatteryVoltage_ValueasNumber)/10).toFixed(2) + " A"
eingetragen und bekomme jetzt NaN A als Wert. Siehe Bilder.
Hatte mich zwischenzeitlich auch mit Read Transform beschäftigt. Also Javascript Transformation bei den Add-ons installiert, eine Datei erstellt in /etc/openhab/transform/divide10.js
Inhalt der Datei hatte ich irgendwo gefunden:
Code: Alles auswählen
// transform/divide10.js
(funktion (inputData) {
return parseFloat(inputData) / 10;
})(input)
Das gab im log nur eine lange Fehlermeldung. Ohne zu wissen, was man da tut ist es echt schwierig nach einer Lösung zu suchen...
EDIT: Hab es hiermit jetzt hinbekommen: viewtopic.php?f=15&t=4697&start=20 muss jetzt nur noch schauen, wie ich die kWh weg bekomme

Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Gruß
Ronny
Ronny
-
- Beiträge: 20
- Registriert: 10. Okt 2021 08:55
Re: Werte umrechnen
Hier nochmal langsam, ich hab in die Datei (/etc/openhab/transform/divide10.js) folgendes eingetragen:
dann bei State Description->Pattern-> JS(divide10.js):%s
Damit hab ich die Zahl jetzt ohne Einheit. Kann ich die Einheit bei Pattern irgendwie wieder hinzufügen? Wenn nicht, ändere ich das wieder in der js Datei und lege mir dann mehrere davon an für Strom und Spannung je eine.
Code: Alles auswählen
(function(i) {
return parseFloat(i) / 10
})(input)
Damit hab ich die Zahl jetzt ohne Einheit. Kann ich die Einheit bei Pattern irgendwie wieder hinzufügen? Wenn nicht, ändere ich das wieder in der js Datei und lege mir dann mehrere davon an für Strom und Spannung je eine.
Gruß
Ronny
Ronny
- peter-pan
- Beiträge: 2758
- Registriert: 28. Nov 2018 12:03
- Wohnort: Schwäbisch Gmünd
Re: Werte umrechnen
...zuerst mal dieses Problem: du hast da nur etwas vergessen ".state"
es sollte eigentlich so lauten:
Code: Alles auswählen
(Number.parseFloat(items.ModbusDataVictronBatteryVoltage_ValueasNumber.state)/10).toFixed(2) + " A"
Das sollte dann auch funktionieren.
Das mit dem Javascript geht natürlich auch, find' ich aber eher suboptimal,genau so wie mit einer Rule.
als Pattern müsstest du da evtl. JS(divide10.js):%s Ampere angeben.
Gruss Peter
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian
-
- Beiträge: 600
- Registriert: 20. Sep 2019 05:49
Re: Werte umrechnen
Probier mal das hier. So nutze ich das in der js-Datei:
Code: Alles auswählen
(function(i) {
return (parseFloat(i) / 10) + " A";
})(input)
StateDescription dann so, wie Du bereits geschrieben hast.
- peter-pan
- Beiträge: 2758
- Registriert: 28. Nov 2018 12:03
- Wohnort: Schwäbisch Gmünd
Re: Werte umrechnen
Hallo André,
wie sieht denn dein Item dazu aus und das Thing/Channel ? Ich hab's zwar in OH3 irgendwie auch hingekriegt, aber mit einem Profile.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian
-
- Beiträge: 600
- Registriert: 20. Sep 2019 05:49
Re: Werte umrechnen
Hallo Peter,
das Item ist von meinem Mähroboter.
Code: Alles auswählen
Number SeppiDatStTotalDistance "TotalDistance [JS(convert_m_km.js):%s]"
Code: Alles auswählen
{channel="worxlandroid:mower:ddfa6cb4:30173502170118020375:datSt#totalDistance"}
Leider hat mein Mähroboter schon seine wohlverdiente Winterruhe, darum liefert er z.Z. keine Werte mehr.
Hier noch die js-Datei:
Code: Alles auswählen
(function(i) {
return (i/1000) + " km";
})(input)
Auf meinem OH3-Test-System hatte ich das auch schon in Verwendung. Derzeit hat der Raspi aber andere Aufgaben.
- peter-pan
- Beiträge: 2758
- Registriert: 28. Nov 2018 12:03
- Wohnort: Schwäbisch Gmünd
Re: Werte umrechnen
Hallo André,
Danke für das SetUp. So hab ich das eigentlich noch nie ausprobiert. Ich hab das Java-Script immer in Verbindung mit dem Exec-Binding(Thing) benutzt. Und sowie mir noch in Erinnerung ist kommt(kam) da immer nur ein String zurück. Das werd ich dann auch mal ausprobieren.
Ich hab' zurzeit ein OH3-System auf meinem "alten" RPI3b+ laufen. Die SD-Karte hab' ich durch ein altes 3 1/2" USB-Laufwerk getauscht (1 TB). Da ist massig Platz drauf. Nur weiss ich nicht so Recht, was ich damit anfangen soll.Vor allem wie ich das sichern soll. Ich hab mir auch schon bei Udo ein paar Tipps geholt, muss sie nur noch umsetzen.
VG Peter
Danke für das SetUp. So hab ich das eigentlich noch nie ausprobiert. Ich hab das Java-Script immer in Verbindung mit dem Exec-Binding(Thing) benutzt. Und sowie mir noch in Erinnerung ist kommt(kam) da immer nur ein String zurück. Das werd ich dann auch mal ausprobieren.
Ich hab' zurzeit ein OH3-System auf meinem "alten" RPI3b+ laufen. Die SD-Karte hab' ich durch ein altes 3 1/2" USB-Laufwerk getauscht (1 TB). Da ist massig Platz drauf. Nur weiss ich nicht so Recht, was ich damit anfangen soll.Vor allem wie ich das sichern soll. Ich hab mir auch schon bei Udo ein paar Tipps geholt, muss sie nur noch umsetzen.
VG Peter
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian