@@ -351,7 +351,13 @@ def _get_charging_power_left(self):
351351 # ev wird nach Speicher geladen
352352 elif config .bat_mode == BatConsiderationMode .EV_MODE .value :
353353 # Speicher sollte weder ge- noch entladen werden.
354- charging_power_left = self .data .get .power
354+ # wenn aktive Speichersteuerung in Höhe PV-Leistung lädt
355+ # hat Speicher Priorität vor EV-Ladung
356+ if (self .data .config .bat_control_activated and
357+ self .data .config .power_limit_mode == BatPowerLimitMode .MODE_CHARGE_PV_PRODUCTION .value ):
358+ charging_power_left = 0
359+ else :
360+ charging_power_left = self .data .get .power
355361 else :
356362 # Speicher soll geladen werden um min SoC zu erreichen
357363 if self .data .get .soc < config .min_bat_soc :
@@ -385,14 +391,29 @@ def _get_charging_power_left(self):
385391 # Speicher darf wegen Hysterese bis min_bat_soc entladen werden.
386392 else :
387393 if self .data .set .power_limit is None :
388- if config .bat_power_discharge_active :
394+ # set allowed power
395+ if (self .data .config .bat_control_activated and
396+ self .data .config .power_limit_mode ==
397+ BatPowerLimitMode .MODE_CHARGE_PV_PRODUCTION .value ):
398+ base_power = 0
399+ else :
400+ base_power = self .data .get .power
401+
402+ # Aktive Steuerung nicht konfiguriert oder
403+ # Aktive Steuerung + Preisgrenze aktiv + Grenze nicht unterschritten
404+ # -> dann erlaubte Speicherentladeleistung addieren
405+ power_discharge_allowed = (self .data .config .bat_control_activated is False or
406+ (self .data .config .power_limit_condition ==
407+ BatPowerLimitCondition .PRICE_LIMIT .value and
408+ self .data .set .power_limit is None ))
409+ if config .bat_power_discharge_active and power_discharge_allowed :
389410 # Wenn der Speicher mit mehr als der erlaubten Entladeleistung entladen wird, muss das
390411 # vom Überschuss subtrahiert werden.
391- charging_power_left = config .bat_power_discharge + self . data . get . power
412+ charging_power_left = config .bat_power_discharge + base_power
392413 log .debug (f"Erlaubte Entlade-Leistung nutzen { charging_power_left } W" )
393414 else :
394415 # Speicher sollte weder ge- noch entladen werden.
395- charging_power_left = self . data . get . power
416+ charging_power_left = base_power
396417 else :
397418 log .debug ("Keine erlaubte Entladeleistung freigeben, da der Speicher mit einer vorgegeben "
398419 "Leistung entladen wird." )
@@ -401,14 +422,28 @@ def _get_charging_power_left(self):
401422 else :
402423 self .data .set .hysteresis_discharge = True
403424 if self .data .set .power_limit is None :
404- if config .bat_power_discharge_active :
425+ # set allowed power
426+ if (self .data .config .bat_control_activated and
427+ self .data .config .power_limit_mode == BatPowerLimitMode .MODE_CHARGE_PV_PRODUCTION .value ):
428+ base_power = 0
429+ else :
430+ base_power = self .data .get .power
431+
432+ # Aktive Steuerung nicht konfiguriert oder
433+ # Aktive Steuerung + Preisgrenze aktiv + Grenze nicht unterschritten
434+ # -> dann erlaubte Speicherentladeleistung addieren
435+ power_discharge_allowed = (self .data .config .bat_control_activated is False or
436+ (self .data .config .power_limit_condition ==
437+ BatPowerLimitCondition .PRICE_LIMIT .value and
438+ self .data .set .power_limit is None ))
439+ if config .bat_power_discharge_active and power_discharge_allowed :
405440 # Wenn der Speicher mit mehr als der erlaubten Entladeleistung entladen wird, muss das
406441 # vom Überschuss subtrahiert werden.
407- charging_power_left = config .bat_power_discharge + self . data . get . power
442+ charging_power_left = config .bat_power_discharge + base_power
408443 log .debug (f"Erlaubte Entlade-Leistung nutzen { charging_power_left } W" )
409444 else :
410445 # Speicher sollte weder ge- noch entladen werden.
411- charging_power_left = self . data . get . power
446+ charging_power_left = base_power
412447 else :
413448 log .debug ("Keine erlaubte Entladeleistung freigeben, da der Speicher mit einer vorgegeben "
414449 "Leistung entladen wird." )
0 commit comments