From f803ccd693e04006ed661cc428d83302a59a946c Mon Sep 17 00:00:00 2001 From: ndrsnhs Date: Wed, 12 Nov 2025 13:26:00 +0100 Subject: [PATCH 1/2] add bat control --- .../devices/alpha_ess/alpha_ess/bat.py | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/packages/modules/devices/alpha_ess/alpha_ess/bat.py b/packages/modules/devices/alpha_ess/alpha_ess/bat.py index 3d332d0f85..c3c4574b5b 100644 --- a/packages/modules/devices/alpha_ess/alpha_ess/bat.py +++ b/packages/modules/devices/alpha_ess/alpha_ess/bat.py @@ -1,6 +1,6 @@ import logging import time -from typing import TypedDict, Any +from typing import TypedDict, Any, Optional from modules.common.abstract_device import AbstractBat from modules.common.component_state import BatState from modules.common.component_type import ComponentDescriptor @@ -57,5 +57,29 @@ def update(self) -> None: ) self.store.set(bat_state) + def set_power_limit(self, power_limit: Optional[int]) -> None: + unit = self.__modbus_id + + if power_limit is None: + if self.last_mode is not None: + # Kein Powerlimit gefordert, externe Steuerung deaktivieren + log.debug("Keine Batteriesteuerung gefordert, deaktiviere externe Steuerung.") + self.__tcp_client.write_registers(2127, [0], data_type=ModbusDataType.UINT_16, unit=unit) + elif power_limit <= 0: + # AlphaESS kann die Entladung nur über den SoC verhindern (komplette Entladesperre) + # Netzladung mit geringen Ziel SoC verhindert auch Entladung (Default 10%) + # Zeiten für Netzladung müssen im Wechselrichter aktiviert werden + log.debug("Aktive Batteriesteuerung vorhanden. Setze externe Steuerung.") + self.__tcp_client.write_registers(2127, [1], data_type=ModbusDataType.UINT_16, unit=unit) + self.__tcp_client.write_registers(2133, [10], data_type=ModbusDataType.UINT_16, unit=unit) + else: + # Aktive Ladung + log.debug("Aktive Batteriesteuerung vorhanden. Setze externe Steuerung.") + self.__tcp_client.write_registers(2127, [1], data_type=ModbusDataType.UINT_16, unit=unit) + self.__tcp_client.write_registers(2133, [100], data_type=ModbusDataType.UINT_16, unit=unit) + + def power_limit_controllable(self) -> bool: + return True + component_descriptor = ComponentDescriptor(configuration_factory=AlphaEssBatSetup) From f561eda12bba38709d5fd00c2bfc75083d52080b Mon Sep 17 00:00:00 2001 From: ndrsnhs Date: Wed, 12 Nov 2025 13:51:50 +0100 Subject: [PATCH 2/2] remove last_mode --- packages/modules/devices/alpha_ess/alpha_ess/bat.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/modules/devices/alpha_ess/alpha_ess/bat.py b/packages/modules/devices/alpha_ess/alpha_ess/bat.py index c3c4574b5b..a1e8afdba3 100644 --- a/packages/modules/devices/alpha_ess/alpha_ess/bat.py +++ b/packages/modules/devices/alpha_ess/alpha_ess/bat.py @@ -61,10 +61,9 @@ def set_power_limit(self, power_limit: Optional[int]) -> None: unit = self.__modbus_id if power_limit is None: - if self.last_mode is not None: - # Kein Powerlimit gefordert, externe Steuerung deaktivieren - log.debug("Keine Batteriesteuerung gefordert, deaktiviere externe Steuerung.") - self.__tcp_client.write_registers(2127, [0], data_type=ModbusDataType.UINT_16, unit=unit) + # Kein Powerlimit gefordert, externe Steuerung deaktivieren + log.debug("Keine Batteriesteuerung gefordert, deaktiviere externe Steuerung.") + self.__tcp_client.write_registers(2127, [0], data_type=ModbusDataType.UINT_16, unit=unit) elif power_limit <= 0: # AlphaESS kann die Entladung nur über den SoC verhindern (komplette Entladesperre) # Netzladung mit geringen Ziel SoC verhindert auch Entladung (Default 10%)