From 039948b6b0ea49fec9f2dc40e968bbbb933079e2 Mon Sep 17 00:00:00 2001 From: Alexander Hartung Date: Fri, 31 Jul 2026 11:05:29 +0200 Subject: [PATCH 1/4] Add Faktor-Input zur Registerauslesung --- packages/modules/devices/generic/modbus/config.py | 1 + packages/modules/devices/generic/modbus/helper.py | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/modules/devices/generic/modbus/config.py b/packages/modules/devices/generic/modbus/config.py index 6ce3337269..1fb05dc6c0 100644 --- a/packages/modules/devices/generic/modbus/config.py +++ b/packages/modules/devices/generic/modbus/config.py @@ -34,6 +34,7 @@ def __init__(self, class RegisterConfig: reg_address: Optional[int] = None reg_type: Optional[str] = None + reg_factor: float = 1.0 @dataclass diff --git a/packages/modules/devices/generic/modbus/helper.py b/packages/modules/devices/generic/modbus/helper.py index 43f6c1f435..4a1a87d9dd 100644 --- a/packages/modules/devices/generic/modbus/helper.py +++ b/packages/modules/devices/generic/modbus/helper.py @@ -19,13 +19,16 @@ def read_value(client: ModbusTcpClient_, unit: int, return None check_data(register_config, device_config) - return client.read_input_registers( + value = client.read_input_registers( register_config.reg_address, ModbusDataType[register_config.reg_type], byteorder=device_config.byteorder, wordorder=device_config.wordorder, unit=unit, ) + if value is not None: + value *= register_config.reg_factor + return value def read_phase_values(client: ModbusTcpClient_, From ce11af395be4bedfbf8a9abff6b8b0fbf4aa9c13 Mon Sep 17 00:00:00 2001 From: Alexander Hartung Date: Fri, 31 Jul 2026 11:53:36 +0200 Subject: [PATCH 2/4] Add Copilot suggestions --- packages/modules/devices/generic/modbus/helper.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/modules/devices/generic/modbus/helper.py b/packages/modules/devices/generic/modbus/helper.py index 4a1a87d9dd..ad255ce32b 100644 --- a/packages/modules/devices/generic/modbus/helper.py +++ b/packages/modules/devices/generic/modbus/helper.py @@ -6,6 +6,7 @@ def check_data(register_config: RegisterConfig, device_config: GenericModbusConfiguration): if (register_config.reg_type is None or + register_config.reg_factor is None or device_config.byteorder is None or device_config.wordorder is None): raise ValueError( @@ -26,8 +27,10 @@ def read_value(client: ModbusTcpClient_, unit: int, wordorder=device_config.wordorder, unit=unit, ) - if value is not None: - value *= register_config.reg_factor + + factor = register_config.reg_factor if register_config.reg_factor is not None else 1 + if value is not None and factor != 1: + value = value * factor return value From 8e4625fb9fb8b3fb6f19db1a000d321d4f21fa76 Mon Sep 17 00:00:00 2001 From: Alexander Hartung Date: Tue, 4 Aug 2026 10:12:11 +0200 Subject: [PATCH 3/4] Update type von reg_factor --- packages/modules/devices/generic/modbus/config.py | 2 +- packages/modules/devices/generic/modbus/helper.py | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/modules/devices/generic/modbus/config.py b/packages/modules/devices/generic/modbus/config.py index 1fb05dc6c0..b9faf7b400 100644 --- a/packages/modules/devices/generic/modbus/config.py +++ b/packages/modules/devices/generic/modbus/config.py @@ -34,7 +34,7 @@ def __init__(self, class RegisterConfig: reg_address: Optional[int] = None reg_type: Optional[str] = None - reg_factor: float = 1.0 + reg_factor: int = 1 @dataclass diff --git a/packages/modules/devices/generic/modbus/helper.py b/packages/modules/devices/generic/modbus/helper.py index ad255ce32b..f22828ddd8 100644 --- a/packages/modules/devices/generic/modbus/helper.py +++ b/packages/modules/devices/generic/modbus/helper.py @@ -28,9 +28,8 @@ def read_value(client: ModbusTcpClient_, unit: int, unit=unit, ) - factor = register_config.reg_factor if register_config.reg_factor is not None else 1 - if value is not None and factor != 1: - value = value * factor + if register_config.reg_factor is not None and register_config.reg_factor != 1: + value = value * register_config.reg_factor return value From 051140e63aacc3542761a218db128f89358bb958 Mon Sep 17 00:00:00 2001 From: Alexander Hartung Date: Tue, 4 Aug 2026 10:14:30 +0200 Subject: [PATCH 4/4] fix --- packages/modules/devices/generic/modbus/helper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/modules/devices/generic/modbus/helper.py b/packages/modules/devices/generic/modbus/helper.py index f22828ddd8..5249f134bd 100644 --- a/packages/modules/devices/generic/modbus/helper.py +++ b/packages/modules/devices/generic/modbus/helper.py @@ -28,7 +28,7 @@ def read_value(client: ModbusTcpClient_, unit: int, unit=unit, ) - if register_config.reg_factor is not None and register_config.reg_factor != 1: + if value is not None and register_config.reg_factor != 1: value = value * register_config.reg_factor return value