diff --git a/packages/control/chargepoint/chargepoint.py b/packages/control/chargepoint/chargepoint.py index a26b402769..3d1f81e6ef 100644 --- a/packages/control/chargepoint/chargepoint.py +++ b/packages/control/chargepoint/chargepoint.py @@ -519,19 +519,20 @@ def set_phases(self, phases: int, template_phases: int) -> int: phases = min(phases, self.get_max_phase_hw()) if phases != self.data.get.phases_in_use: - # Wenn noch kein Eintrag im Protokoll erstellt wurde, wurde noch nicht geladen und die Phase kann noch - # umgeschaltet werden. - if self.data.set.log.imported_since_plugged != 0 and charging_ev.ev_template.data.prevent_phase_switch: - log.info(f"Phasenumschaltung an Ladepunkt {self.num} nicht möglich, da bei EV" - f"{charging_ev.num} nach Ladestart nicht mehr umgeschaltet werden darf.") - if self.data.get.phases_in_use != 0: + if self.data.set.log.imported_since_plugged != 0: + if self.hw_supports_phase_switch() is False: + # sonst passt die Phasenzahl nicht bei Autos, die eine Phase weg schalten. + log.info(f"Phasenumschaltung an Ladepunkt {self.num} wird durch die Hardware nicht unterstützt.") phases = self.data.get.phases_in_use - else: - phases = self.data.control_parameter.phases - elif self.hw_supports_phase_switch() is False: - # sonst passt die Phasenzahl nicht bei Autos, die eine Phase weg schalten. - log.info(f"Phasenumschaltung an Ladepunkt {self.num} wird durch die Hardware nicht unterstützt.") - phases = self.data.get.phases_in_use + if charging_ev.ev_template.data.prevent_phase_switch: + # Wenn noch kein Eintrag im Protokoll erstellt wurde, wurde noch nicht geladen und die Phase kann + # noch umgeschaltet werden. + log.info(f"Phasenumschaltung an Ladepunkt {self.num} nicht möglich, da bei EV" + f"{charging_ev.num} nach Ladestart nicht mehr umgeschaltet werden darf.") + if self.data.get.phases_in_use != 0: + phases = self.data.get.phases_in_use + else: + phases = self.data.control_parameter.phases if phases != self.data.control_parameter.phases: self.data.control_parameter.phases = phases self.data.control_parameter.template_phases = template_phases diff --git a/packages/control/chargepoint/get_phases_test.py b/packages/control/chargepoint/get_phases_test.py index e4bf1283f4..5750bea668 100644 --- a/packages/control/chargepoint/get_phases_test.py +++ b/packages/control/chargepoint/get_phases_test.py @@ -153,8 +153,15 @@ def __init__(self, imported_since_plugged=1, phase_switch_supported=True, expected_phases=3), SetPhasesParams(name="Switch phases", phases=1, phases_in_use=3, prevent_phase_switch=False, imported_since_plugged=1, phase_switch_supported=True, expected_phases=1), - SetPhasesParams(name="Phase switch not supported by cp", phases=1, phases_in_use=3, prevent_phase_switch=False, - imported_since_plugged=1, phase_switch_supported=False, expected_phases=3) + SetPhasesParams(name="Phase switch not supported by cp, use phases in use after charge start", + # aktuelle Phasenzahl verwenden, sonst passt die Phasenzahl nicht bei Autos, + # die eine Phase weg schalten. + phases=1, phases_in_use=3, prevent_phase_switch=False, + imported_since_plugged=1, phase_switch_supported=False, expected_phases=3), + SetPhasesParams(name="Phase switch not supported by cp, use passed phases before start", + # vor dem Ladestart die konfigurierte Phasenzahl verwenden + phases=1, phases_in_use=3, prevent_phase_switch=False, + imported_since_plugged=0, phase_switch_supported=False, expected_phases=1) ]