From fe18ce766089f59e49bc6ba3f13062136af2ff74 Mon Sep 17 00:00:00 2001 From: ndrsnhs Date: Tue, 10 Jun 2025 09:56:50 +0200 Subject: [PATCH 1/2] adjust modbus id --- .../devices/alpha_ess/alpha_ess/counter.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/packages/modules/devices/alpha_ess/alpha_ess/counter.py b/packages/modules/devices/alpha_ess/alpha_ess/counter.py index 855dddcce8..a5dbe01c86 100644 --- a/packages/modules/devices/alpha_ess/alpha_ess/counter.py +++ b/packages/modules/devices/alpha_ess/alpha_ess/counter.py @@ -32,7 +32,8 @@ def initialize(self) -> None: def update(self): time.sleep(0.1) - counter_state = self.__get_values_factory() + factory_method = self.__get_values_factory() + counter_state = factory_method(self.__modbus_id) self.store.set(counter_state) def __get_values_factory(self) -> Callable[[int], CounterState]: @@ -41,13 +42,13 @@ def __get_values_factory(self) -> Callable[[int], CounterState]: else: return self.__get_values_since_v123 - def __get_values_before_v123(self) -> CounterState: + def __get_values_before_v123(self, unit: int) -> CounterState: power, exported, imported = self.__tcp_client.read_holding_registers( - 0x6, [modbus.ModbusDataType.INT_32] * 3, unit=self.__modbus_id) + 0x6, [modbus.ModbusDataType.INT_32] * 3, unit=unit) exported *= 10 imported *= 10 currents = [val / 230 for val in self.__tcp_client.read_holding_registers( - 0x0000, [ModbusDataType.INT_32]*3, unit=self.__modbus_id)] + 0x0000, [ModbusDataType.INT_32]*3, unit=unit)] counter_state = CounterState( currents=currents, @@ -57,14 +58,14 @@ def __get_values_before_v123(self) -> CounterState: ) return counter_state - def __get_values_since_v123(self) -> CounterState: - power = self.__tcp_client.read_holding_registers(0x0021, ModbusDataType.INT_32, unit=self.__modbus_id) + def __get_values_since_v123(self, unit: int) -> CounterState: + power = self.__tcp_client.read_holding_registers(0x0021, ModbusDataType.INT_32, unit=unit) exported, imported = [ val * 10 for val in self.__tcp_client.read_holding_registers( - 0x0010, [ModbusDataType.INT_32] * 2, unit=self.__modbus_id + 0x0010, [ModbusDataType.INT_32] * 2, unit=unit )] currents = [val / 1000 for val in self.__tcp_client.read_holding_registers( - 0x0017, [ModbusDataType.INT_16]*3, unit=self.__modbus_id)] + 0x0017, [ModbusDataType.INT_16]*3, unit=unit)] counter_state = CounterState( currents=currents, From 7fdb9ae3600f80ad31355be1aa22bbcfd7a64386 Mon Sep 17 00:00:00 2001 From: ndrsnhs Date: Tue, 10 Jun 2025 10:14:01 +0200 Subject: [PATCH 2/2] reduce code by combining functions --- .../devices/alpha_ess/alpha_ess/counter.py | 52 ++++++------------- 1 file changed, 16 insertions(+), 36 deletions(-) diff --git a/packages/modules/devices/alpha_ess/alpha_ess/counter.py b/packages/modules/devices/alpha_ess/alpha_ess/counter.py index a5dbe01c86..6bac7a2a4a 100644 --- a/packages/modules/devices/alpha_ess/alpha_ess/counter.py +++ b/packages/modules/devices/alpha_ess/alpha_ess/counter.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 import time -from typing import Callable, Any, TypedDict +from typing import Any, TypedDict from modules.devices.alpha_ess.alpha_ess.config import AlphaEssConfiguration, AlphaEssCounterSetup from modules.common import modbus @@ -32,40 +32,21 @@ def initialize(self) -> None: def update(self): time.sleep(0.1) - factory_method = self.__get_values_factory() - counter_state = factory_method(self.__modbus_id) - self.store.set(counter_state) - - def __get_values_factory(self) -> Callable[[int], CounterState]: if self.__device_config.source == 0 and self.__device_config.version == 0: - return self.__get_values_before_v123 + power, exported, imported = self.__tcp_client.read_holding_registers( + 0x6, [modbus.ModbusDataType.INT_32] * 3, unit=self.__modbus_id) + exported *= 10 + imported *= 10 + currents = [val / 230 for val in self.__tcp_client.read_holding_registers( + 0x0000, [ModbusDataType.INT_32]*3, unit=self.__modbus_id)] else: - return self.__get_values_since_v123 - - def __get_values_before_v123(self, unit: int) -> CounterState: - power, exported, imported = self.__tcp_client.read_holding_registers( - 0x6, [modbus.ModbusDataType.INT_32] * 3, unit=unit) - exported *= 10 - imported *= 10 - currents = [val / 230 for val in self.__tcp_client.read_holding_registers( - 0x0000, [ModbusDataType.INT_32]*3, unit=unit)] - - counter_state = CounterState( - currents=currents, - imported=imported, - exported=exported, - power=power - ) - return counter_state - - def __get_values_since_v123(self, unit: int) -> CounterState: - power = self.__tcp_client.read_holding_registers(0x0021, ModbusDataType.INT_32, unit=unit) - exported, imported = [ - val * 10 for val in self.__tcp_client.read_holding_registers( - 0x0010, [ModbusDataType.INT_32] * 2, unit=unit - )] - currents = [val / 1000 for val in self.__tcp_client.read_holding_registers( - 0x0017, [ModbusDataType.INT_16]*3, unit=unit)] + power = self.__tcp_client.read_holding_registers(0x0021, ModbusDataType.INT_32, unit=self.__modbus_id) + exported, imported = [ + val * 10 for val in self.__tcp_client.read_holding_registers( + 0x0010, [ModbusDataType.INT_32] * 2, unit=self.__modbus_id + )] + currents = [val / 1000 for val in self.__tcp_client.read_holding_registers( + 0x0017, [ModbusDataType.INT_16]*3, unit=self.__modbus_id)] counter_state = CounterState( currents=currents, @@ -73,8 +54,7 @@ def __get_values_since_v123(self, unit: int) -> CounterState: exported=exported, power=power ) - return counter_state + self.store.set(counter_state) -component_descriptor = ComponentDescriptor( - configuration_factory=AlphaEssCounterSetup) +component_descriptor = ComponentDescriptor(configuration_factory=AlphaEssCounterSetup)