From f7035fc527be5137baba3ce2f8d1702d1fe4a652 Mon Sep 17 00:00:00 2001 From: Andreas Lemke Date: Sun, 24 May 2026 13:01:53 +0200 Subject: [PATCH 1/3] Add retries for Venus C modbus communication --- packages/modules/devices/marstek/venus_c_e/device.py | 3 ++- requirements.txt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/modules/devices/marstek/venus_c_e/device.py b/packages/modules/devices/marstek/venus_c_e/device.py index 6b402bad0e..149579ae71 100644 --- a/packages/modules/devices/marstek/venus_c_e/device.py +++ b/packages/modules/devices/marstek/venus_c_e/device.py @@ -27,7 +27,8 @@ def update_components(components: Iterable[VenusCEBat]): def initializer(): nonlocal client - client = ModbusTcpClient_(device_config.configuration.ip_address, device_config.configuration.port) + client = ModbusTcpClient_(device_config.configuration.ip_address, device_config.configuration.port, + retry_on_empty=True, retry_on_invalid=True, retries=2, timeout=2) return ConfigurableDevice( device_config=device_config, diff --git a/requirements.txt b/requirements.txt index d3f1163050..4f2e33f044 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,7 @@ typing-extensions==4.13.2 jq==1.1.3 paho_mqtt==1.6.1 -pymodbus==2.5.2 +pymodbus==2.5.3 pytest==6.2.5 requests_mock==1.9.3 lxml==4.9.1 From 9a9a755bf93c169f91fce80180eba6a2569ffa03 Mon Sep 17 00:00:00 2001 From: Andreas Lemke Date: Sun, 24 May 2026 13:13:23 +0200 Subject: [PATCH 2/3] Remove trailing whitespace --- packages/modules/devices/marstek/venus_c_e/device.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/modules/devices/marstek/venus_c_e/device.py b/packages/modules/devices/marstek/venus_c_e/device.py index 149579ae71..dd431ddf6d 100644 --- a/packages/modules/devices/marstek/venus_c_e/device.py +++ b/packages/modules/devices/marstek/venus_c_e/device.py @@ -27,7 +27,7 @@ def update_components(components: Iterable[VenusCEBat]): def initializer(): nonlocal client - client = ModbusTcpClient_(device_config.configuration.ip_address, device_config.configuration.port, + client = ModbusTcpClient_(device_config.configuration.ip_address, device_config.configuration.port, retry_on_empty=True, retry_on_invalid=True, retries=2, timeout=2) return ConfigurableDevice( From a86e2d1d7a6b749bbb197106a66eb0ff49865c2a Mon Sep 17 00:00:00 2001 From: Andreas Lemke Date: Fri, 12 Jun 2026 17:48:06 +0200 Subject: [PATCH 3/3] Move retry parameters into common ModbusTcpClient_ --- packages/modules/common/modbus.py | 4 ++++ packages/modules/devices/marstek/venus_c_e/device.py | 3 +-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/modules/common/modbus.py b/packages/modules/common/modbus.py index 9f5fc13e50..5de47a04aa 100644 --- a/packages/modules/common/modbus.py +++ b/packages/modules/common/modbus.py @@ -305,6 +305,10 @@ def __init__(self, host = parsed_url.host if parsed_url.port is not None: port = parsed_url.port + kwargs.setdefault('retry_on_empty', True) + kwargs.setdefault('retry_on_invalid', True) + kwargs.setdefault('retries', 2) + kwargs.setdefault('timeout', 2) super().__init__(ModbusTcpClient(host, port, framer, **kwargs), address, port, sleep_after_connect) diff --git a/packages/modules/devices/marstek/venus_c_e/device.py b/packages/modules/devices/marstek/venus_c_e/device.py index dd431ddf6d..6b402bad0e 100644 --- a/packages/modules/devices/marstek/venus_c_e/device.py +++ b/packages/modules/devices/marstek/venus_c_e/device.py @@ -27,8 +27,7 @@ def update_components(components: Iterable[VenusCEBat]): def initializer(): nonlocal client - client = ModbusTcpClient_(device_config.configuration.ip_address, device_config.configuration.port, - retry_on_empty=True, retry_on_invalid=True, retries=2, timeout=2) + client = ModbusTcpClient_(device_config.configuration.ip_address, device_config.configuration.port) return ConfigurableDevice( device_config=device_config,