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:
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?
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:
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)
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
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet