diff --git a/packages/helpermodules/broker.py b/packages/helpermodules/broker.py index c9b6940c6f..ecd5d2d30c 100644 --- a/packages/helpermodules/broker.py +++ b/packages/helpermodules/broker.py @@ -35,9 +35,9 @@ def __init__(self, def start_infinite_loop(self) -> None: self.client.loop_forever() - def start_finite_loop(self) -> None: + def start_finite_loop(self, timeout: float = 1) -> None: self.client.loop_start() - time.sleep(1) + time.sleep(timeout) self.client.loop_stop() def disconnect(self) -> None: diff --git a/packages/modules/chargepoints/external_openwb/chargepoint_module.py b/packages/modules/chargepoints/external_openwb/chargepoint_module.py index 6c4ab63a42..db60fb8d5b 100644 --- a/packages/modules/chargepoints/external_openwb/chargepoint_module.py +++ b/packages/modules/chargepoints/external_openwb/chargepoint_module.py @@ -66,12 +66,15 @@ def on_message(client, userdata, message): received_topics.update({message.topic: decode_payload(message.payload)}) received_topics = {} + # Höheres Timeout als der Default: muss zuverlässig alle ~20 retained Topics über eine + # echte Netzwerkverbindung zu einer ggf. gerade stark ausgelasteten Gegenstelle einsammeln + # (zB während einer laufenden Ladung), nicht nur ein oder zwei lokale Werte. BrokerClient(f"subscribeSeriesChargepoint{self.config.id}", on_connect, on_message, host=self.config.configuration.ip_address, port=1886 if self.config.configuration.ip_address == "localhost" else 1883 - ).start_finite_loop() + ).start_finite_loop(timeout=2) if received_topics: log.debug(f"Empfange MQTT Daten für Ladepunkt {self.config.id}: {received_topics}")