Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 19 additions & 3 deletions packages/control/chargepoint/chargepoint.py
Original file line number Diff line number Diff line change
Expand Up @@ -284,15 +284,31 @@ def initiate_control_pilot_interruption(self):
# Unterstützt der Ladepunkt die CP-Unterbrechung und benötigt das Auto eine CP-Unterbrechung?
if charging_ev.ev_template.data.control_pilot_interruption:
if self.data.config.control_pilot_interruption_hw:
cp = self.data.control_parameter
retry_interval = charging_ev.ev_template.data.control_pilot_interruption_retry_interval
# Wird die Ladung gestartet?
if self.data.set.current_prev == 0 and self.data.set.current != 0:
started_now = self.data.set.current_prev == 0 and self.data.set.current != 0
# Ladung angefordert, Auto lädt aber trotz gültigem Signal seit geraumer Zeit nicht.
stuck = (
retry_interval > 0 and
self.data.set.current != 0 and
self.data.get.charge_state is False and
cp.timestamp_charge_start is not None and
check_timestamp(cp.timestamp_last_cp_retry or cp.timestamp_charge_start,
retry_interval) is False
)
if started_now or stuck:
# Die CP-Unterbrechung erfolgt in Threads, da diese länger als ein Zyklus dauert.
if thread_handler(Thread(
target=self.chargepoint_module.interrupt_cp,
args=(charging_ev.ev_template.data.control_pilot_interruption_duration,),
name=f"cp{self.chargepoint_module.config.id}")):
message = "Control-Pilot-Unterbrechung für " + str(
charging_ev.ev_template.data.control_pilot_interruption_duration) + "s."
cp.timestamp_last_cp_retry = create_timestamp()
reason = "Ladestart" if started_now else "Auto lädt trotz Freigabe nicht"
message = (
"Control-Pilot-Unterbrechung (" + reason + ") für " +
str(charging_ev.ev_template.data.control_pilot_interruption_duration) + "s."
)
self.set_state_and_log(message)
else:
message = "CP-Unterbrechung nicht möglich, da der Ladepunkt keine CP-Unterbrechung unterstützt."
Expand Down
2 changes: 2 additions & 0 deletions packages/control/chargepoint/control_parameter.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ class ControlParameter:
template_phases: int = field(default=None, metadata={"topic": "control_parameter/template_phases"})
timestamp_charge_start: Optional[float] = field(
default=None, metadata={"topic": "control_parameter/timestamp_charge_start"})
timestamp_last_cp_retry: Optional[float] = field(
default=None, metadata={"topic": "control_parameter/timestamp_last_cp_retry"})
timestamp_chargemode_changed: Optional[float] = field(
default=None, metadata={"topic": "control_parameter/timestamp_chargemode_changed"})
timestamp_last_phase_switch: float = field(
Expand Down
1 change: 1 addition & 0 deletions packages/control/ev/ev_template.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ class EvTemplateData:
prevent_charge_stop: bool = False
control_pilot_interruption: bool = False
control_pilot_interruption_duration: int = 4
control_pilot_interruption_retry_interval: int = 0
average_consump: float = 17000
min_current: int = 6
max_current_single_phase: int = 16
Expand Down
14 changes: 13 additions & 1 deletion packages/helpermodules/update_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@

class UpdateConfig:

DATASTORE_VERSION = 136
DATASTORE_VERSION = 137

valid_topic = [
"^openWB/bat/config/bat_control_activated$",
Expand Down Expand Up @@ -125,6 +125,7 @@ class UpdateConfig:
"^openWB/chargepoint/[0-9]+/control_parameter/timestamp_chargemode_changed$",
"^openWB/chargepoint/[0-9]+/control_parameter/timestamp_last_phase_switch$",
"^openWB/chargepoint/[0-9]+/control_parameter/timestamp_switch_on_off$",
"^openWB/chargepoint/[0-9]+/control_parameter/timestamp_last_cp_retry$",
"^openWB/chargepoint/[0-9]+/get/charge_state$",
"^openWB/chargepoint/[0-9]+/get/currents$",
"^openWB/chargepoint/[0-9]+/get/current_branch$",
Expand Down Expand Up @@ -3469,3 +3470,14 @@ def upgrade(topic: str, payload) -> Optional[dict]:
return modified_topics
self._loop_all_received_topics(upgrade)
self._append_datastore_version(136)

def upgrade_datastore_137(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
if re.search("openWB/vehicle/template/ev_template/[0-9]+$", topic) is not None:
payload = decode_payload(payload)
if "control_pilot_interruption_retry_interval" not in payload:
payload["control_pilot_interruption_retry_interval"] = \
EvTemplateData().control_pilot_interruption_retry_interval
return {topic: payload}
self._loop_all_received_topics(upgrade)
self._append_datastore_version(137)