Skip to content
Closed
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
10 changes: 6 additions & 4 deletions packages/control/chargepoint/chargepoint.py
Original file line number Diff line number Diff line change
Expand Up @@ -390,13 +390,14 @@ def _is_phase_switch_required(self) -> bool:
self.data.control_parameter.failed_phase_switches += 1
else:
# Umschaltung vor Ladestart zulassen
if self.data.set.log.imported_since_plugged != 0:
if (self.data.set.log.imported_since_plugged != 0 and
self.data.control_parameter.failed_phase_switches > 0):
phase_switch_required = False
self.set_state_and_log(
"Keine Phasenumschaltung, da wiederholtes Anstoßen der Umschaltung in den übergreifenden "
"Ladeeinstellungen deaktiviert wurde. Die aktuelle "
"Phasenzahl wird bis zum Abstecken beibehalten.")
self.data.control_parameter.failed_phase_switches += 1
self.data.control_parameter.failed_phase_switches += 1
return phase_switch_required

STOP_CHARGING = ", dafür wird die Ladung unterbrochen."
Expand Down Expand Up @@ -825,8 +826,9 @@ def _get_charging_ev(self, vehicle: int, ev_list: Dict[str, Ev]) -> Ev:
if self.data.set.charging_ev_prev != vehicle:
Pub().pub(f"openWB/set/vehicle/{charging_ev.num}/get/force_soc_update", True)
log.debug("SoC nach EV-Wechsel")
self.update_charge_template(charging_ev.charge_template)
if self.data.set.charge_template.data.id != charging_ev.charge_template.data.id:
# wenn vorher kein anderes Fahrzeug zugeordnet war, Ladeprofil nicht zurücksetzen
if ((self.data.set.charging_ev_prev != vehicle and self.data.set.charging_ev_prev != -1) or
(self.data.set.charge_template.data.id != charging_ev.charge_template.data.id)):
self.update_charge_template(charging_ev.charge_template)
self.data.set.charging_ev_data = charging_ev
self.data.set.charging_ev = vehicle
Expand Down
2 changes: 0 additions & 2 deletions packages/control/phase_switch.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,6 @@ def _perform_phase_switch(chargepoint_module: AbstractChargepoint, phases: int,
time.sleep(5)
# Phasenumschaltung entsprechend Modul
chargepoint_module.switch_phases(phases, ev.ev_template.data.phase_switch_pause)
# Die Ladung wird in start_charging wieder gestartet, wenn phase_switch_timestamp wieder auf None gesetzt wird.
time.sleep(ev.ev_template.data.keep_charge_active_duration)
except Exception:
log.exception("Fehler im Phasenumschaltungs-Modul")

Expand Down
6 changes: 3 additions & 3 deletions packages/modules/common/store/_chargepoint_internal.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,19 +24,19 @@ def update(self):
pub_to_broker(f"{topic_prefix}/phases_in_use", self.state.phases_in_use, 2)
pub_to_broker(f"{topic_prefix}/charge_state", self.state.charge_state, 2)
pub_to_broker(f"{topic_prefix}/plug_state", self.state.plug_state, 2)
pub_to_broker(f"{topic_prefix}/rfid", self.state.rfid)
pub_to_broker(f"{topic_prefix}/vehicle_id", self.state.vehicle_id)
pub_to_broker(f"{topic_prefix}/serial_number", self.state.serial_number)
pub_to_broker(f"{topic_prefix}/evse_current", self.state.evse_current, 2)
pub_to_broker(f"{topic_prefix}/max_evse_current", self.state.max_evse_current, 2)
pub_to_broker(f"{topic_prefix}/version", self.state.version)
pub_to_broker(f"{topic_prefix}/current_branch", self.state.current_branch)
pub_to_broker(f"{topic_prefix}/current_commit", self.state.current_commit)
if self.state.soc is not None:
pub_to_broker(f"{topic_prefix}/get/soc", self.state.soc)
pub_to_broker(f"{topic_prefix}/soc", self.state.soc)
if self.state.soc_timestamp is not None:
pub_to_broker(f"{topic_prefix}/soc_timestamp", self.state.soc_timestamp)
if self.state.rfid_timestamp is not None:
pub_to_broker(f"{topic_prefix}/vehicle_id", self.state.vehicle_id)
pub_to_broker(f"{topic_prefix}/rfid", self.state.rfid)
pub_to_broker(f"{topic_prefix}/rfid_timestamp", self.state.rfid_timestamp)


Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
import logging

import time
from helpermodules.broker import BrokerClient
from helpermodules.logger import ModifyLoglevelContext

from helpermodules.utils.error_handling import CP_ERROR, ErrorTimerContext
from helpermodules.utils.topic_parser import decode_payload
from modules.common.abstract_chargepoint import AbstractChargepoint
from modules.common.component_context import SingleComponentUpdateContext
from modules.common.component_state import ChargepointState
Expand Down Expand Up @@ -42,7 +44,6 @@ def __init__(self, local_charge_point_num: int,
hide_exception=True)
self.client_error_context.error_timestamp = internal_cp.get.error_timestamp
self.old_plug_state = False
self.old_phases_in_use = 0
self.old_chargepoint_state = ChargepointState(plug_state=False,
charge_state=False,
imported=None,
Expand All @@ -65,6 +66,19 @@ def __init__(self, local_charge_point_num: int,
self.current_branch = SubData.system_data["system"].data["current_branch"]
self.current_commit = SubData.system_data["system"].data["current_commit"]

def on_connect(client, userdata, flags, rc):
client.subscribe(f"openWB/internal_chargepoint/{self.local_charge_point_num}/get/phases_in_use")

def on_message(client, userdata, message):
self.old_phases_in_use = decode_payload(message.payload)

self.old_phases_in_use = None
BrokerClient(f"subscribeInternalCp{self.local_charge_point_num}", on_connect, on_message).start_finite_loop()

if self.old_phases_in_use == 0 or self.old_phases_in_use is None:
self.perform_phase_switch(1, 4)
self.old_phases_in_use = 1

def set_current(self, current: float) -> None:
with SingleComponentUpdateContext(self.fault_state, update_always=False):
formatted_current = round(current*100) if self._precise_current else round(current)
Expand Down