Werte umrechnen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

TurboMOD
Beiträge: 20
Registriert: 10. Okt 2021 08:55
Answers: 0

Werte umrechnen

Beitrag von TurboMOD »

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

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

Re: Werte umrechnen

Beitrag von peter-pan »

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:

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
Das Ergebnis sieht dann so aus:
divi.jpg
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.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

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

Re: Werte umrechnen

Beitrag von peter-pan »

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

TurboMOD
Beiträge: 20
Registriert: 10. Okt 2021 08:55
Answers: 0

Re: Werte umrechnen

Beitrag von TurboMOD »

Danke für deine Hilfe, ich hätte vielleicht noch schreiben sollen, dass ich Anfänger bin :shock:
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)
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 :D
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Gruß
Ronny

TurboMOD
Beiträge: 20
Registriert: 10. Okt 2021 08:55
Answers: 0

Re: Werte umrechnen

Beitrag von TurboMOD »

Hier nochmal langsam, ich hab in die Datei (/etc/openhab/transform/divide10.js) folgendes eingetragen:

Code: Alles auswählen

(function(i) {
  return parseFloat(i) / 10
})(input)
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.
Gruß
Ronny

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

Re: Werte umrechnen

Beitrag von peter-pan »

TurboMOD hat geschrieben: 7. Nov 2021 15:58 =(Number.parseFloat(items.ModbusDataVictronBatteryVoltage_ValueasNumber)/10).toFixed(2) + " A"
...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"
Wenn du nur eine Nachkommstelle haben willst, dann natürlich .toFixed(1)

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

violine21
Beiträge: 600
Registriert: 20. Sep 2019 05:49
Answers: 7

Re: Werte umrechnen

Beitrag von violine21 »

TurboMOD hat geschrieben: 7. Nov 2021 16:21 ...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.
Probier mal das hier. So nutze ich das in der js-Datei:

Code: Alles auswählen

(function(i) {
    return (parseFloat(i) / 10) + " A";
})(input)
Allerdings noch OH2.5, sollte aber keinen Unterschied machen.
StateDescription dann so, wie Du bereits geschrieben hast.

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

Re: Werte umrechnen

Beitrag von peter-pan »

violine21 hat geschrieben: 7. Nov 2021 19:22 Allerdings noch OH2.5, sollte aber keinen Unterschied machen.
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

violine21
Beiträge: 600
Registriert: 20. Sep 2019 05:49
Answers: 7

Re: Werte umrechnen

Beitrag von violine21 »

peter-pan hat geschrieben: 7. Nov 2021 19:58
violine21 hat geschrieben: 7. Nov 2021 19:22 Allerdings noch OH2.5, sollte aber keinen Unterschied machen.
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.
Hallo Peter,
das Item ist von meinem Mähroboter.

Code: Alles auswählen

Number     SeppiDatStTotalDistance                    "TotalDistance [JS(convert_m_km.js):%s]"
Der Channel:

Code: Alles auswählen

{channel="worxlandroid:mower:ddfa6cb4:30173502170118020375:datSt#totalDistance"}
Die Werte kamen in Meter, ich wollte aber km.
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)
VG André

Auf meinem OH3-Test-System hatte ich das auch schon in Verwendung. Derzeit hat der Raspi aber andere Aufgaben.

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

Re: Werte umrechnen

Beitrag von peter-pan »

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

Antworten