From b4d7f26f3d644ab1d6a07cb954f448069981d2d0 Mon Sep 17 00:00:00 2001 From: ndrsnhs Date: Thu, 27 Aug 2026 14:51:24 +0200 Subject: [PATCH 1/2] add mtec bat_control --- packages/modules/devices/mtec/mtec/bat.py | 25 ++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/packages/modules/devices/mtec/mtec/bat.py b/packages/modules/devices/mtec/mtec/bat.py index dc47349b02..919ec66225 100644 --- a/packages/modules/devices/mtec/mtec/bat.py +++ b/packages/modules/devices/mtec/mtec/bat.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 import logging -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 @@ -56,5 +56,28 @@ def update(self) -> None: ) self.store.set(bat_state) + def set_power_limit(self, power_limit: Optional[int]) -> None: + modbus_id = self.component_config.configuration.modbus_id + if power_limit is None: + log.debug("Keine Batteriesteuerung, Selbstregelung durch Speicher") + if self.last_mode is not None: + self.__tcp_client.write_register(50000, 257, data_type=ModbusDataType.UINT_16, unit=modbus_id) + self.last_mode = None + elif power_limit <= 0: + log.debug("Aktive Batteriesteuerung. Batterie wird auf Stop gesetzt und nicht entladen") + if self.last_mode != 'stop': + self.__tcp_client.write_register(50000, 258, data_type=ModbusDataType.UINT_16, unit=modbus_id) + self.last_mode = 'stop' + elif power_limit > 0: + log.debug(f"Aktive Batteriesteuerung M-Tec:" + f"Speicher soll mit {power_limit} W geladen werden. " + "kann aber nur mit maximaler leistung laden") + if self.last_mode != 'charge': + self.__tcp_client.write_register(50000, 259, data_type=ModbusDataType.UINT_16, unit=modbus_id) + self.last_mode = 'charge' + + def power_limit_controllable(self) -> bool: + return True + component_descriptor = ComponentDescriptor(configuration_factory=MTecBatSetup) From 7f7509924363a9873c862f903224666f31327e05 Mon Sep 17 00:00:00 2001 From: ndrsnhs Date: Thu, 27 Aug 2026 14:52:33 +0200 Subject: [PATCH 2/2] fix typo --- packages/modules/devices/mtec/mtec/bat.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/modules/devices/mtec/mtec/bat.py b/packages/modules/devices/mtec/mtec/bat.py index 919ec66225..4f4354db63 100644 --- a/packages/modules/devices/mtec/mtec/bat.py +++ b/packages/modules/devices/mtec/mtec/bat.py @@ -71,7 +71,7 @@ def set_power_limit(self, power_limit: Optional[int]) -> None: elif power_limit > 0: log.debug(f"Aktive Batteriesteuerung M-Tec:" f"Speicher soll mit {power_limit} W geladen werden. " - "kann aber nur mit maximaler leistung laden") + "kann aber nur mit maximaler Leistung laden") if self.last_mode != 'charge': self.__tcp_client.write_register(50000, 259, data_type=ModbusDataType.UINT_16, unit=modbus_id) self.last_mode = 'charge'