@@ -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