diff --git a/packages/control/bat_all.py b/packages/control/bat_all.py index fcc060908a..30c47591d4 100644 --- a/packages/control/bat_all.py +++ b/packages/control/bat_all.py @@ -471,32 +471,26 @@ def get_charge_mode_vehicle_charge(self): def get_charge_mode_manual_charge(self): # EVU Bezug vorhanden oder gewollte PV-Ladung aktiv - evu_power_valid = (data.data.counter_all_data.get_evu_counter().data.get.power >= -100 or - self.data.config.power_limit_mode == BatPowerLimitMode.MODE_CHARGE_PV_PRODUCTION.value) - bat_power_valid = (self.data.get.power <= 0 or - (self.data.get.power > 0 and - self.data.config.power_limit_mode == BatPowerLimitMode.MODE_CHARGE_PV_PRODUCTION.value)) - if (evu_power_valid and bat_power_valid): - if self.data.config.manual_mode == ManualMode.MANUAL_LIMIT.value: + evu_power_valid = data.data.counter_all_data.get_evu_counter().data.get.power >= -100 + bat_power_valid = self.data.get.power <= 0 + if self.data.config.manual_mode == ManualMode.MANUAL_CHARGE.value: + log.debug("Aktive Speichersteuerung: Manueller Modus - Speicher laden.") + return BatChargeMode.BAT_FORCE_CHARGE + elif self.data.config.manual_mode == ManualMode.MANUAL_LIMIT.value: + if (self.data.config.power_limit_mode == BatPowerLimitMode.MODE_CHARGE_PV_PRODUCTION.value or + (evu_power_valid and bat_power_valid)): + # Limit anwenden wenn kein Überschuss vorhanden oder der Speicher nicht lädt log.debug("Aktive Speichersteuerung: Manueller Modus - Regellimit anwenden.") return BatChargeMode.BAT_USE_LIMIT - elif self.data.config.manual_mode == ManualMode.MANUAL_CHARGE.value: - log.debug("Aktive Speichersteuerung: Manueller Modus - Speicher laden.") - return BatChargeMode.BAT_FORCE_CHARGE - elif self.data.config.manual_mode == ManualMode.MANUAL_DISCHARGE.value: - log.debug("Aktive Speichersteuerung: Manueller Modus - Speicher entladen.") - return BatChargeMode.BAT_FORCE_DISCHARGE else: - log.debug("Aktive Speichersteuerung: Manueller Modus - Steuerung Aus.") + log.debug("Aktive Speichersteuerung: Manueller Modus - Kein Limit da Speicher lädt") return BatChargeMode.BAT_SELF_REGULATION - # manual_disable and fallback + elif self.data.config.manual_mode == ManualMode.MANUAL_DISCHARGE.value: + log.debug("Aktive Speichersteuerung: Manueller Modus - " + "Eigenregelung da aktive Speicherentladung nicht erlaubt ist.") + return BatChargeMode.BAT_SELF_REGULATION else: - if evu_power_valid: - log.debug("Aktive Speichersteuerung: Manueller Modus - EVU-Einspeisung vorhanden oder " - "Ladung in Höhe des PV-Ertrags konfiguriert.") - if bat_power_valid: - log.debug("Aktive Speichersteuerung: Manueller Modus - Speicher entlädt oder " - "Ladung in Höhe des PV-Ertrags konfiguriert.") + log.debug("Aktive Speichersteuerung: Manueller Modus - Steuerung Aus.") return BatChargeMode.BAT_SELF_REGULATION def get_charge_mode_electricity_tariff(self): @@ -519,7 +513,8 @@ def get_charge_mode_electricity_tariff(self): return BatChargeMode.BAT_SELF_REGULATION def get_charge_mode_scheduled(self): - pass + log.debug(("Aktive Speichersteuerung: Eigenregelung - Zielladen noch nicht implementiert.")) + return BatChargeMode.BAT_SELF_REGULATION def get_power_limit(self): # Falls kein steuerbarer Speicher installiert ist, der Disclaimer nicht akzeptiert wurde @@ -532,7 +527,7 @@ def get_power_limit(self): log.debug("Speicher-Leistung nicht begrenzen, da keine regelbaren Speicher vorhanden sind.") elif self.data.config.bat_control_permitted is False: log.debug("Speicher-Leistung nicht begrenzen, da der aktiven Speichersteuerung nicht zugestimmt wurde.") - elif self.data.get.power_limit_controllable is False: + elif self.data.config.bat_control_activated is False: log.debug("Speicher-Leistung nicht begrenzen, da aktive Speichersteuerung deaktiviert wurde.") else: charge_mode = BatChargeMode.BAT_SELF_REGULATION @@ -547,7 +542,7 @@ def get_power_limit(self): charge_mode = self.get_charge_mode_electricity_tariff() elif self.data.config.power_limit_condition == BatPowerLimitCondition.SCHEDULED.value: log.debug("Aktive Speichersteuerung: Vorhersagebasiertes Zielladen.") - pass + charge_mode = self.get_charge_mode_scheduled() # calculate power_limit controllable_bat_components = get_controllable_bat_components() @@ -572,8 +567,8 @@ def get_power_limit(self): max_charge_power_total += bat_component_data.get.max_charge_power self.data.set.power_limit = max_charge_power_total elif charge_mode == BatChargeMode.BAT_FORCE_DISCHARGE: - # das ist in Deutschland (noch) nicht erlaubt - pass + self.data.set.power_limit = None + log.debug("Speicher-Leistung nicht begrenzen") def get_controllable_bat_components() -> List: