Number Solar_Power_ac "Einspeiseleistung [ %.0f W]" <solarplant> (gSV,gSVp) { channel="mqtt:topic:home:solarview:solar_power_ac" }
Number Solar_Power_max "Einspeiseleistung Max Heute [ %.0f W]" <solarplant> (gSV,gSVp)
Number Solar_Power_max_max "Einspeiseleistung Max Max [ %.0f W]" <solarplant> (gSV,gSVp)
Number Solar_bkw_ac "Einspeiseleistung [ %.0f W]" <solarplant> (gSV,gSVp) { channel="mqtt:topic:home:solarview_bkw:solar_bkw_ac" }
Number Solar_bkw_max "Einspeiseleistung Max Heute [ %.0f W]" <solarplant> (gSV,gSVp)
Number Solar_bkw_max_max "Einspeiseleistung Max Max [ %.0f W]" <solarplant> (gSV,gSVp)
ule "save PV max"
when
Item Solar_Power_ac changed
then
if (Solar_Power_ac.state > Solar_Power_max.state)
Solar_Power_max.postUpdate(Solar_Power_ac.state as Number)
else if (Solar_Power_ac.state > Solar_Power_max_max.state)
Solar_Power_max_max.postUpdate(Solar_Power_ac.state as Number)
end
rule "save BKW max"
when
Item Solar_bkw_ac changed
then
if (Solar_bkw_ac.state > Solar_bkw_max.state)
Solar_bkw_max.postUpdate(Solar_bkw_ac.state as Number)
else if (Solar_bkw_ac.state > Solar_bkw_max_max.state)
Solar_bkw_max_max.postUpdate(Solar_bkw_ac.state as Number)
end
die erste Rule funktioniert bei der zweiten krieg ich ne Fehlermeldung
2023-04-21 13:30:16.856 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'solarview-6' failed: An error occurred during the script execution: Could not invoke method: org.openhab.core.model.script.lib.NumberExtensions.operator_greaterThan(org.openhab.core.types.Type,java.lang.Number) on instance: null in solarview
die max und max_max items werden sonst nirgends beschrieben oder sonst was...
Ich arbeite mittlerweile viel über Variablen. Hier mal mein Vorschlag für deine erste Regel, die kannst du analog auf die zweite Regel anwenden, du musst nur die Variablen bearbeiten und die Zielitems.
rule "save PV max"
when
Item Solar_Power_ac changed
then
if(!(Solar_Power_ac.state instanceof Number)){ //Prüfen ob Solar_Power_ac eine gültige Zahl ist, allenfals wird die Regel abgebrochen
logWarn("rule save PV max", "Item liefert keinen gültigen Zahlenwert (Rückgabewert: {}).", Solar_Power_ac.state)
return;
}
var Number PowerAktuell = Solar_Power_ac.state as Number //Aktuelle Leistung
var Number PowerMaxDay = if(Solar_Power_max.state instanceof Number) (Solar_Power_max.state as Number).floatValue else 0 //Tagesmax Leistung, Item wird auf 0 gesetzt falls uninitialisiert ist oder keinen gültigen Zahlenwert besitzt
var Number PowerMax = if(Solar_Power_max_max.state instanceof Number) (Solar_Power_max_max.state as Number).floatValue else 0 //Alltime Maxleistung, Item wird auf 0 gesetzt falls uninitialisiert ist oder keinen gültigen Zahlenwert besitzt
if (PowerAktuell > PowerMaxDay) Solar_Power_max.postUpdate(PowerAktuell)
if (PowerAktuell > PowerMax) Solar_Power_max_max.postUpdate(PowerAktuell)
end
Ich gehe davon aus, dass das Item Number Solar_Power_max täglich genullt wird?
rule "Update Gesamtleistung values"
when
Item OpenDTU1_inv1_pow
Time cron "0 0 0 * * ?"
//System started
then
postUpdate(OpenDTU1_inv1_pow_Max, OpenDTU1_inv1_pow.maximumSince(now.withTimeAtStartOfDay).state)
end
Funktioniert auch.
Bis auf den aktuellen Leistungswert.
Der schwankt ja sehr stark und dann bekomme ich nicht immer genau den passenden Wert aus der DB zurück.
Jetzt habt ihr mir eine andere Lösung aufgezeigt!