Skip to content

Commit

Permalink
fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
LKuemmel committed Jan 15, 2025
1 parent cf14b95 commit fab8936
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 7 deletions.
27 changes: 23 additions & 4 deletions packages/control/chargepoint/chargepoint.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
from control.ev.ev import Ev
from control import phase_switch
from control.chargepoint.chargepoint_state import ChargepointState
from helpermodules.broker import InternalBrokerClient
from helpermodules.phase_mapping import convert_single_evu_phase_to_cp_phase
from helpermodules.pub import Pub
from helpermodules import timecheck
Expand Down Expand Up @@ -247,7 +248,7 @@ def _process_charge_stop(self) -> None:
log.debug("/set/manual_lock True")
# Ev wurde noch nicht aktualisiert.
# Ladeprofil aus den Einstellungen laden.
self.data.set.charge_template = copy.deepcopy(self.data.set.charging_ev_data.charge_template)
self._update_charge_template(self.data.set.charging_ev_data)
chargelog.save_and_reset_data(self, data.data.ev_data["ev"+str(self.data.set.charging_ev_prev)])
self.data.set.charging_ev_prev = -1
Pub().pub("openWB/set/chargepoint/"+str(self.num)+"/set/charging_ev_prev",
Expand Down Expand Up @@ -668,6 +669,7 @@ def update(self, ev_list: Dict[str, Ev]) -> None:
self.data.control_parameter.phases = min(
self.get_phases_by_selected_chargemode(), max_phase_hw)
state, message_ev, submode, required_current, phases = charging_ev.get_required_current(
self.data.set.charge_template,
self.data.control_parameter,
self.data.get.imported,
max_phase_hw,
Expand All @@ -680,8 +682,8 @@ def update(self, ev_list: Dict[str, Ev]) -> None:
required_current = self.check_min_max_current(
required_current, self.data.control_parameter.phases)
required_current = self.chargepoint_module.add_conversion_loss_to_current(required_current)
self.set_chargemode_changed(self.data.control_parameter, submode)
self.set_submode_changed(self.data.control_parameter, submode)
self.set_chargemode_changed(submode)
self.set_submode_changed(submode)
self.set_control_parameter(submode, required_current)
self.set_required_currents(required_current)
self.check_phase_switch_completed()
Expand Down Expand Up @@ -775,14 +777,31 @@ def _get_charging_ev(self, vehicle: int, ev_list: Dict[str, Ev]) -> Ev:
if self.data.set.charging_ev != vehicle and 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.data.set.charge_template = copy.deepcopy(charging_ev.charge_template)
self._update_charge_template(charging_ev)
self.data.set.charging_ev_data = charging_ev
self.data.set.charging_ev = vehicle
Pub().pub("openWB/set/chargepoint/"+str(self.num)+"/set/charging_ev", vehicle)
self.data.set.charging_ev_prev = vehicle
Pub().pub("openWB/set/chargepoint/"+str(self.num)+"/set/charging_ev_prev", vehicle)
return charging_ev

def _update_charge_template(self, charging_ev_data: Ev) -> None:
def on_connect(client, userdata, flags, rc):
client.subscribe(f'openWB/chargepoint/{self.num}/set/charge_temlate/#', 2)

def __get_payload(client, userdata, msg):
Pub().pub(msg.topic, "")
InternalBrokerClient("processBrokerBranch", on_connect, __get_payload).start_finite_loop()
self.data.set.charge_template = copy.deepcopy(charging_ev_data.charge_template)
Pub().pub(f"openWB/set/chargepoint/{self.num}/set/charge_template",
dataclasses.asdict(self.data.set.charge_template))
for id, plan in self.data.set.charge_template.data.time_charging.plans.items():
Pub().pub(f"openWB/set/chargepoint/{self.num}/set/charge_template/time_charging/plans/{id}",
dataclasses.asdict(plan))
for id, plan in self.data.set.charge_template.data.chargemode.scheduled_charging.plans.items():
Pub().pub(f"openWB/set/chargepoint/{self.num}/set/charge_template/scheduled_charging/plans/{id}",
dataclasses.asdict(plan))

def _pub_connected_vehicle(self, vehicle: Ev):
""" published die Daten, die zur Anzeige auf der Hauptseite benötigt werden.
Expand Down
2 changes: 1 addition & 1 deletion packages/control/chargepoint/chargepoint_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@ def log_factory() -> Log:
class Set:
charging_ev: int = -1
charging_ev_prev: int = -1
charge_template: ChargeTemplate = field(default_factory=charge_template_factory)
current: float = 0
energy_to_charge: float = 0
loadmanagement_available: bool = True
Expand All @@ -149,7 +150,6 @@ class Set:
current_prev: float = 0.0
target_current: float = 0 # Soll-Strom aus fest vorgegebener Stromstärke
charging_ev_data: Ev = field(default_factory=ev_factory)
charge_template: ChargeTemplate = field(default_factory=charge_template_factory)
ocpp_transaction_id: Optional[int] = None


Expand Down
2 changes: 1 addition & 1 deletion packages/helpermodules/setdata.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ def on_message(self, client: mqtt.Client, userdata, msg: mqtt.MQTTMessage):
if "openWB/set/chargepoint/set/charge_template" in msg.topic:
self.process_vehicle_charge_template_topic(msg)
else:
self.process_vehicle_topic(msg)
self.process_chargepoint_topic(msg)
elif "openWB/set/pv/" in msg.topic:
self.process_pv_topic(msg)
elif "openWB/set/bat/" in msg.topic:
Expand Down
2 changes: 1 addition & 1 deletion packages/helpermodules/subdata.py
Original file line number Diff line number Diff line change
Expand Up @@ -323,7 +323,7 @@ def process_vehicle_charge_template_topic(self, var: Dict[str, ChargeTemplate],
else:
if "ct"+index not in var:
var["ct"+index] = ev.ChargeTemplate(int(index))
self.process_charge_template_topic(var["ct"+index])
self.process_charge_template_topic(var["ct"+index], msg)
if re.search("/chargemode/scheduled_charging/plans/[0-9]+$", msg.topic) is not None:
self.event_scheduled_charging_plan.set()
elif re.search("/time_charging/plans/[0-9]+$", msg.topic) is not None:
Expand Down

0 comments on commit fab8936

Please sign in to comment.