Skip to content

Commit 268876a

Browse files
authored
fix phase switch after charge start (#2423)
1 parent 9741b06 commit 268876a

1 file changed

Lines changed: 27 additions & 20 deletions

File tree

packages/control/chargepoint/chargepoint.py

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,8 @@ def check_phase_switch_completed(self):
423423
if self.data.control_parameter.state == ChargepointState.WAIT_FOR_USING_PHASES:
424424
if check_timestamp(self.data.control_parameter.timestamp_charge_start,
425425
charging_ev.ev_template.data.keep_charge_active_duration) is False:
426-
if self.cp_ev_chargemode_support_phase_switch():
426+
if (self.cp_ev_support_phase_switch() and self.chargemode_support_phase_switch() and
427+
self.failed_phase_switches_reached()):
427428
if phase_switch.phase_switch_thread_alive(self.num) is False:
428429
self.data.control_parameter.state = ChargepointState.PHASE_SWITCH_AWAITED
429430
if self._is_phase_switch_required() is False:
@@ -881,6 +882,20 @@ def _pub_connected_vehicle(self, vehicle: Ev):
881882
log.exception("Fehler im Prepare-Modul")
882883

883884
def cp_ev_chargemode_support_phase_switch(self) -> bool:
885+
if (self.cp_ev_support_phase_switch() and
886+
self.data.get.charge_state and
887+
self.chargemode_support_phase_switch() and
888+
(self.data.control_parameter.state == ChargepointState.CHARGING_ALLOWED or
889+
self.data.control_parameter.state == ChargepointState.PHASE_SWITCH_DELAY)):
890+
return self.failed_phase_switches_reached()
891+
else:
892+
return False
893+
894+
def cp_ev_support_phase_switch(self) -> bool:
895+
return (self.data.config.auto_phase_switch_hw and
896+
self.data.set.charging_ev_data.ev_template.data.prevent_phase_switch is False)
897+
898+
def chargemode_support_phase_switch(self) -> bool:
884899
control_parameter = self.data.control_parameter
885900
pv_auto_switch = ((control_parameter.chargemode == Chargemode.PV_CHARGING or
886901
control_parameter.chargemode == Chargemode.ECO_CHARGING) and
@@ -891,23 +906,15 @@ def cp_ev_chargemode_support_phase_switch(self) -> bool:
891906
control_parameter.submode == Chargemode.PV_CHARGING and
892907
self.data.set.charge_template.data.chargemode.scheduled_charging.plans[
893908
str(self.data.control_parameter.current_plan)].phases_to_use_pv == 0)
894-
if (self.cp_ev_support_phase_switch() and
895-
self.data.get.charge_state and
896-
(pv_auto_switch or scheduled_auto_switch) and
897-
(control_parameter.state == ChargepointState.CHARGING_ALLOWED or
898-
control_parameter.state == ChargepointState.PHASE_SWITCH_DELAY)):
899-
if ((data.data.general_data.data.chargemode_config.retry_failed_phase_switches and
900-
self.data.control_parameter.failed_phase_switches > self.MAX_FAILED_PHASE_SWITCHES) or
901-
(data.data.general_data.data.chargemode_config.retry_failed_phase_switches is False and
902-
self.data.control_parameter.failed_phase_switches == 1)):
903-
self.set_state_and_log(
904-
"Keine automatische Umschaltung, da die maximale Anzahl an Fehlversuchen erreicht wurde. ")
905-
return False
906-
else:
907-
return True
908-
else:
909+
return (pv_auto_switch or scheduled_auto_switch)
910+
911+
def failed_phase_switches_reached(self) -> bool:
912+
if ((data.data.general_data.data.chargemode_config.retry_failed_phase_switches and
913+
self.data.control_parameter.failed_phase_switches > self.MAX_FAILED_PHASE_SWITCHES) or
914+
(data.data.general_data.data.chargemode_config.retry_failed_phase_switches is False and
915+
self.data.control_parameter.failed_phase_switches == 1)):
916+
self.set_state_and_log(
917+
"Keine automatische Umschaltung, da die maximale Anzahl an Fehlversuchen erreicht wurde. ")
909918
return False
910-
911-
def cp_ev_support_phase_switch(self) -> bool:
912-
return (self.data.config.auto_phase_switch_hw and
913-
self.data.set.charging_ev_data.ev_template.data.prevent_phase_switch is False)
919+
else:
920+
return True

0 commit comments

Comments
 (0)