QuantityTypes in RuleDSL aufaddieren

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
McMaster05
Beiträge: 17
Registriert: 9. Dez 2018 17:42
Answers: 0

QuantityTypes in RuleDSL aufaddieren

Beitrag 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?

Benutzeravatar
udo1toni
Beiträge: 15243
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: QuantityTypes in RuleDSL aufaddieren

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

McMaster05
Beiträge: 17
Registriert: 9. Dez 2018 17:42
Answers: 0

Re: QuantityTypes in RuleDSL aufaddieren

Beitrag 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)

Benutzeravatar
udo1toni
Beiträge: 15243
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: QuantityTypes in RuleDSL aufaddieren

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

Antworten