From 44f5c5e22b0391cf405c7d28bd69b3391744ea90 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 2 Oct 2026 08:50:43 +0200 Subject: [PATCH 1/3] Ladepunkte: Statusmeldungen verbessert --- .../control/chargepoint/chargepoint_data.py | 2 +- packages/control/process.py | 23 +++++++------------ 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/packages/control/chargepoint/chargepoint_data.py b/packages/control/chargepoint/chargepoint_data.py index 429d20bdc3..45bf8840cf 100644 --- a/packages/control/chargepoint/chargepoint_data.py +++ b/packages/control/chargepoint/chargepoint_data.py @@ -137,7 +137,7 @@ class Get: serial_number: Optional[str] = None soc: Optional[float] = None soc_timestamp: Optional[int] = None - state_str: Optional[str] = None + state_str: Optional[str] = field(default=None, metadata={"topic": "get/state_str"}) vehicle_id: Optional[str] = None version: Optional[str] = None voltages: List[float] = field(default_factory=voltages_list_factory) diff --git a/packages/control/process.py b/packages/control/process.py index 81c472eb93..71bbd3efe8 100644 --- a/packages/control/process.py +++ b/packages/control/process.py @@ -55,16 +55,10 @@ def process_algorithm_results(self) -> None: control_parameter.state = ChargepointState.NO_CHARGING_ALLOWED cp.data.set.current = 0 - if cp.data.get.state_str is not None: - Pub().pub("openWB/set/chargepoint/"+str(cp.num)+"/get/state_str", - cp.data.get.state_str) - else: - if cp.data.get.charge_state: - Pub().pub( - f"openWB/set/chargepoint/{cp.num}/get/state_str", "Fahrzeug lädt.") - else: - Pub().pub( - f"openWB/set/chargepoint/{cp.num}/get/state_str", "Ladevorgang wird gestartet... ") + if cp.data.get.charge_state: + cp.data.get.state_str = f"Fahrzeug lädt. {cp.data.get.state_str if cp.data.get.state_str is not None else ''}" + elif cp.data.set.current != 0: + cp.data.get.state_str = f"Strom freigegeben, warten auf Fahrzeug. {cp.data.get.state_str if cp.data.get.state_str is not None else ''}" if cp.chargepoint_module.fault_state.fault_state != FaultStateLevel.NO_ERROR: cp.chargepoint_module.fault_state.store_error() modules_threads.append(self._start_charging(cp)) @@ -87,11 +81,10 @@ def process_algorithm_results(self) -> None: consumer.data.get.state_str = "Messwerte des Verbrauchers werden erfasst." elif consumer.data.usage.type == ConsumerUsage.SELF_CONTROLLED: consumer.data.get.state_str = "Messwerte werden an den Verbraucher übermittelt." - else: - if consumer.data.get.charge_state: - consumer.data.get.state_str = "Verbraucher läuft." - else: - consumer.data.get.state_str = "Verbraucher wird gestartet... " + if consumer.data.get.charge_state: + consumer.data.get.state_str = f"Verbraucher läuft. {consumer.data.get.state_str if consumer.data.get.state_str is not None else ''}" + elif consumer.data.set.current != 0: + consumer.data.get.state_str += f"Strom freigegeben, warten auf Verbraucher. {consumer.data.get.state_str if consumer.data.get.state_str is not None else ''}" consumer_thread = self._start_consumer(consumer) if consumer_thread is not None: From a7320c2a2c97c24c544db675689f823f10628407 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 2 Oct 2026 09:12:48 +0200 Subject: [PATCH 2/3] fix --- packages/control/process.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/packages/control/process.py b/packages/control/process.py index 71bbd3efe8..306e056a2b 100644 --- a/packages/control/process.py +++ b/packages/control/process.py @@ -34,6 +34,10 @@ class Process: def __init__(self) -> None: pass + def _prepend_state_message(self, prefix: str, state_str: Optional[str]) -> str: + suffix = state_str or "" + return f"{prefix} {suffix}".strip() + def process_algorithm_results(self) -> None: try: modules_threads: List[Thread] = [] @@ -56,9 +60,10 @@ def process_algorithm_results(self) -> None: cp.data.set.current = 0 if cp.data.get.charge_state: - cp.data.get.state_str = f"Fahrzeug lädt. {cp.data.get.state_str if cp.data.get.state_str is not None else ''}" + cp.data.get.state_str = self._prepend_state_message("Fahrzeug lädt.", cp.data.get.state_str) elif cp.data.set.current != 0: - cp.data.get.state_str = f"Strom freigegeben, warten auf Fahrzeug. {cp.data.get.state_str if cp.data.get.state_str is not None else ''}" + cp.data.get.state_str = self._prepend_state_message( + "Strom freigegeben, warten auf Fahrzeug.", cp.data.get.state_str) if cp.chargepoint_module.fault_state.fault_state != FaultStateLevel.NO_ERROR: cp.chargepoint_module.fault_state.store_error() modules_threads.append(self._start_charging(cp)) @@ -82,9 +87,11 @@ def process_algorithm_results(self) -> None: elif consumer.data.usage.type == ConsumerUsage.SELF_CONTROLLED: consumer.data.get.state_str = "Messwerte werden an den Verbraucher übermittelt." if consumer.data.get.charge_state: - consumer.data.get.state_str = f"Verbraucher läuft. {consumer.data.get.state_str if consumer.data.get.state_str is not None else ''}" + consumer.data.get.state_str = self._prepend_state_message( + "Verbraucher läuft.", consumer.data.get.state_str) elif consumer.data.set.current != 0: - consumer.data.get.state_str += f"Strom freigegeben, warten auf Verbraucher. {consumer.data.get.state_str if consumer.data.get.state_str is not None else ''}" + consumer.data.get.state_str = self._prepend_state_message( + "Strom freigegeben, warten auf Verbraucher.", consumer.data.get.state_str) consumer_thread = self._start_consumer(consumer) if consumer_thread is not None: From 27689d12787fafea953fe7492ded2296b2731d6e Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 2 Oct 2026 09:14:42 +0200 Subject: [PATCH 3/3] flake8 --- packages/control/process.py | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/control/process.py b/packages/control/process.py index 306e056a2b..edacc92f49 100644 --- a/packages/control/process.py +++ b/packages/control/process.py @@ -13,7 +13,6 @@ from control.consumer.usage import ConsumerUsage from helpermodules import timecheck from helpermodules.phase_handling import voltages_mean -from helpermodules.pub import Pub from helpermodules.utils._thread_handler import joined_thread_handler from modules.common.abstract_consumer import CurrentValues from modules.common.abstract_io import AbstractIoDevice