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..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 @@ -34,6 +33,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] = [] @@ -55,16 +58,11 @@ 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 = self._prepend_state_message("Fahrzeug lädt.", cp.data.get.state_str) + elif cp.data.set.current != 0: + 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)) @@ -87,11 +85,12 @@ 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 = self._prepend_state_message( + "Verbraucher läuft.", consumer.data.get.state_str) + elif consumer.data.set.current != 0: + 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: