Wie in JS-Rule aus .getitem die UoM (Einheit) entfernen?

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Jensemann_P
Beiträge: 162
Registriert: 26. Jul 2021 20:14
Answers: 0

Wie in JS-Rule aus .getitem die UoM (Einheit) entfernen?

Beitrag von Jensemann_P »

Bezug nehmend auf mein Thema "Wie globale Variable Speichern", dass ja mittlerweile schon in viel konkreteren code abdriftet, habe ich folgende Frage:

Wie kann ich in einem JS-Script einen Wert, den ich mir mit so etwas hole:

Code: Alles auswählen

tempstr = itemRegistry.getItem('HTHeizraum_Temperature').getState()
und der dann eben nicht nur "24.3" sondern "24.3 °C" enthält numerisch weiterverarbeiten? Ein .toString scheint der Interpreter nicht zu mögen.
Ich stehe hier Syntax/Methodentechnisch gerade total auf dem Schlauch und probiere seit 2h mehr oder weniger blind herum. Viele ähnliche Beispiele beziehen sich auf DSL.

Weiss vl jemand wie das hier geht?

LG
Jens

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

Re: Wie in JS-Rule aus .getitem die UoM (Einheit) entfernen?

Beitrag von peter-pan »

Hast du schon mal:

Code: Alles auswählen

tempfloat = itemRegistry.getItem('HTHeizraum_Temperature').getState().floatValue()
probiert ? (ungetestet)

Edit:

Evtl. auch:

Code: Alles auswählen

tempfloat = parseFloat(itemRegistry.getItem('HTHeizraum_Temperature').getState())
(auch ungetestet)
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Jensemann_P
Beiträge: 162
Registriert: 26. Jul 2021 20:14
Answers: 0

Re: Wie in JS-Rule aus .getitem die UoM (Einheit) entfernen?

Beitrag von Jensemann_P »

Werde ich heute Abend checken, danke schön Mal für den Tip!

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

Re: Wie in JS-Rule aus .getitem die UoM (Einheit) entfernen?

Beitrag von peter-pan »

Kein Problem. Hab ich gerne gemacht. Ich hatte vorher auch noch nichts mit JS gemacht.
Hab's aber jetzt noch in einem kleinen Script selbst mal ausprobiert. Das war jetzt eine gute Übung. ;)

Script:

Code: Alles auswählen

var logger = Java.type("org.slf4j.LoggerFactory").getLogger("EcmaTest");
tempfloat = parseFloat(itemRegistry.getItem('OC_WaF_Current_Temperature').getState());
logger.warn("parseFloat: " + tempfloat);
tempfloat = itemRegistry.getItem('OC_WaF_Current_Temperature').getState().floatValue();
logger.warn("floatValue: " + tempfloat);
Logger:

Code: Alles auswählen

2021-08-10 15:28:23.367 [WARN ] [EcmaTest                            ] - parseFloat: 23.07
2021-08-10 15:28:23.370 [WARN ] [EcmaTest                            ] - floatValue: 23.06999969482422
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Jensemann_P
Beiträge: 162
Registriert: 26. Jul 2021 20:14
Answers: 0

Re: Wie in JS-Rule aus .getitem die UoM (Einheit) entfernen?

Beitrag von Jensemann_P »

Danke dir, mit parseFloat() funktioniert es jetzt blendend!

LG
Jens

Antworten