Seite 1 von 1

QuantityTypes in RuleDSL aufaddieren

Verfasst: 8. Aug 2024 22:31
von McMaster05
Seit kurzem habe ich festgestellt, dass meine Addition von kWh-Werten in einer RuleDSL nicht mehr stimmt.
Beide Modulwerte bekomme ich in meinem Script mit quantityType kWh.
Aber sobald ich die beiden addiere, verliere ich die Einheit und erhalte eine ganz seltame Summe:

Code: Alles auswählen

var modulAHour = BalkonSolar_APSystems_Solarmodule_A_Lifetime.deltaSince(now.minusHours(10)) as Number
logInfo("Rules","modulAHour: " + (modulAHour)) //output: modulAHour: 1.53428 kWh
var modulBHour = BalkonSolar_APSystems_Solarmodule_B_Lifetime.deltaSince(now.minusHours(10)) as Number
logInfo("Rules","Summe: "+ (modulAHour + modulBHour)) //output: Summe: 10709352
Wie rechnet man mit zwei Variablen vom Typ QuantityType?

Re: QuantityTypes in RuleDSL aufaddieren

Verfasst: 9. Aug 2024 06:16
von udo1toni
Es gibt die Methode add :)

Code: Alles auswählen

var modulAHour = BalkonSolar_APSystems_Solarmodule_A_Lifetime.deltaSince(now.minusHours(10)) as QuantityType<Energy>
var modulBHour = BalkonSolar_APSystems_Solarmodule_B_Lifetime.deltaSince(now.minusHours(10)) as QuantityType<Energy>
logInfo("solar","Strang A: {} Strang B: {} Summe: {}",modulAHour, modulBHour, modulAHour.add(modulBHour))
Ungetestet...

Re: QuantityTypes in RuleDSL aufaddieren

Verfasst: 9. Aug 2024 14:28
von McMaster05
Klasse, mal wieder vielen lieben Dank für Deine Hilfe.
Ich hatte die Methode "add" schon gefunden, mir hat sich aber nicht erschlossen, welchen Typ ich haben musste. Erst mit "as QuantityType<Energy>" klappt das, mit "as Number" nicht.
Was mir jetzt noch gefehlt hatte, war, in welchem Format ich damit ein Update posten kann. Das habe ich aber selbst rausgefunden, hier muss man wieder "as Number" verwenden:

Code: Alles auswählen

var modulAHour = BalkonSolar_APSystems_Solarmodule_A_Lifetime.deltaSince(now.minusHours(1)) as QuantityType<Energy>
var modulBHour = BalkonSolar_APSystems_Solarmodule_B_Lifetime.deltaSince(now.minusHours(1)) as QuantityType<Energy>
PVProStunde.postUpdate(modulAHour.add(modulBHour) as Number)

Re: QuantityTypes in RuleDSL aufaddieren

Verfasst: 10. Aug 2024 12:40
von udo1toni
Ja, die DSL ist da leider nicht so intelligent :) wie modernere Sprachen in openHAB.

Ich habe mich aber noch nicht dazu durchringen können, mir da etwas anderes drauf zu schaffen.
Im Zusammenhang mit openHAB sieht Rust extrem sexy aus.
JavaScript ist dafür "näher" an Java dran und mit der Graal Engine geht es wohl auch mit weniger Overhead als mit Nashorn, aber...
Der Mensch ist nun mal ein Gewohnheitstier... um nicht zu sagen: faul ;)