From 7c77359ee1d5ba5af76b04ae1f9223916db7fbd4 Mon Sep 17 00:00:00 2001 From: ndrsnhs Date: Thu, 28 Aug 2025 15:20:06 +0200 Subject: [PATCH 1/6] add kaco nh module --- packages/modules/devices/kaco/kaco_nh/bat.py | 51 ++++++++++++++ .../modules/devices/kaco/kaco_nh/config.py | 67 +++++++++++++++++++ .../modules/devices/kaco/kaco_nh/counter.py | 47 +++++++++++++ .../modules/devices/kaco/kaco_nh/device.py | 47 +++++++++++++ .../modules/devices/kaco/kaco_nh/inverter.py | 45 +++++++++++++ 5 files changed, 257 insertions(+) create mode 100644 packages/modules/devices/kaco/kaco_nh/bat.py create mode 100644 packages/modules/devices/kaco/kaco_nh/config.py create mode 100644 packages/modules/devices/kaco/kaco_nh/counter.py create mode 100644 packages/modules/devices/kaco/kaco_nh/device.py create mode 100644 packages/modules/devices/kaco/kaco_nh/inverter.py diff --git a/packages/modules/devices/kaco/kaco_nh/bat.py b/packages/modules/devices/kaco/kaco_nh/bat.py new file mode 100644 index 0000000000..63a87d7011 --- /dev/null +++ b/packages/modules/devices/kaco/kaco_nh/bat.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python3 +from typing import Any, TypedDict + +from modules.common import req +from modules.common.abstract_device import AbstractBat +from modules.common.component_state import BatState +from modules.common.component_type import ComponentDescriptor +from modules.common.fault_state import ComponentInfo, FaultState +from modules.common.simcount import SimCounter +from modules.common.store import get_bat_value_store +from modules.devices.kaco.kaco_nh.config import KacoNHBatSetup +from modules.devices.kaco.kaco_nh.config import KacoNHConfiguration + + +class KwargsDict(TypedDict): + device_id: int + device_config: KacoNHConfiguration + + +class KacoNHBat(AbstractBat): + def __init__(self, component_config: KacoNHBatSetup, **kwargs: Any) -> None: + self.component_config = component_config + self.kwargs: KwargsDict = kwargs + + def initialize(self) -> None: + self.device_config: KacoNHConfiguration = self.kwargs['device_config'] + self.__device_id: int = self.kwargs['device_id'] + self.sim_counter = SimCounter(self.__device_id, self.component_config.id, prefix="speicher") + self.store = get_bat_value_store(self.component_config.id) + self.fault_state = FaultState(ComponentInfo.from_component_config(self.component_config)) + + def update(self) -> None: + component_id = self.component_config.configuration.component_id + response = req.get_http_session().get( + 'http://' + self.device_config.ip_address + ':' + str(self.device_config.port) + '/getdevdata.cgi?device=' + + str(component_id) + '&sn=' + self.device_config.serial, + timeout=5).json() + power = int(response["pb"]) * -1 + soc = float(response["soc"]) + + imported, exported = self.sim_counter.sim_count(power) + bat_state = BatState( + power=power, + soc=soc, + imported=imported, + exported=exported + ) + self.store.set(bat_state) + + +component_descriptor = ComponentDescriptor(configuration_factory=KacoNHBatSetup) diff --git a/packages/modules/devices/kaco/kaco_nh/config.py b/packages/modules/devices/kaco/kaco_nh/config.py new file mode 100644 index 0000000000..25890b4b40 --- /dev/null +++ b/packages/modules/devices/kaco/kaco_nh/config.py @@ -0,0 +1,67 @@ +#!/usr/bin/env python3 +from typing import Optional + +from modules.common.component_setup import ComponentSetup +from ..vendor import vendor_descriptor + + +class KacoNHConfiguration: + def __init__(self, ip_address: Optional[str] = None, port: Optional[int] = None, serial: Optional[str] = None): + self.ip_address = ip_address + self.port = port + self.serial = serial + + +class KacoNH: + def __init__(self, + name: str = "KacoNH", + type: str = "kaco_nh", + id: int = 0, + configuration: KacoNHConfiguration = None) -> None: + self.name = name + self.type = type + self.vendor = vendor_descriptor.configuration_factory().type + self.id = id + self.configuration = configuration or KacoNHConfiguration() + + +class KacoNHBatConfiguration: + def __init__(self, device_id: int = 0): + self.device_id = device_id + + +class KacoNHBatSetup(ComponentSetup[KacoNHBatConfiguration]): + def __init__(self, + name: str = "Kaco NH Speicher", + type: str = "bat", + id: int = 0, + configuration: KacoNHBatConfiguration = None) -> None: + super().__init__(name, type, id, configuration or KacoNHBatConfiguration()) + + +class KacoNHCounterConfiguration: + def __init__(self, device_id: int = 0): + self.device_id = device_id + + +class KacoNHCounterSetup(ComponentSetup[KacoNHCounterConfiguration]): + def __init__(self, + name: str = "Kaco NH Zähler", + type: str = "counter", + id: int = 0, + configuration: KacoNHCounterConfiguration = None) -> None: + super().__init__(name, type, id, configuration or KacoNHCounterConfiguration()) + + +class KacoNHInverterConfiguration: + def __init__(self, device_id: int = 0): + self.device_id = device_id + + +class KacoNHInverterSetup(ComponentSetup[KacoNHInverterConfiguration]): + def __init__(self, + name: str = "KacoNH Wechselrichter", + type: str = "inverter", + id: int = 0, + configuration: KacoNHInverterConfiguration = None) -> None: + super().__init__(name, type, id, configuration or KacoNHInverterConfiguration()) diff --git a/packages/modules/devices/kaco/kaco_nh/counter.py b/packages/modules/devices/kaco/kaco_nh/counter.py new file mode 100644 index 0000000000..2c2d9f5916 --- /dev/null +++ b/packages/modules/devices/kaco/kaco_nh/counter.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python3 +from typing import TypedDict, Any + +from modules.common import req +from modules.common.abstract_device import AbstractCounter +from modules.common.component_state import CounterState +from modules.common.component_type import ComponentDescriptor +from modules.common.fault_state import ComponentInfo, FaultState +from modules.common.store import get_counter_value_store +from modules.devices.kaco.kaco_nh.config import KacoNHConfiguration, KacoNHCounterSetup + + +class KwargsDict(TypedDict): + device_id: int + device_config: KacoNHConfiguration + + +class KacoNHCounter(AbstractCounter): + def __init__(self, component_config: KacoNHCounterSetup, **kwargs: Any) -> None: + self.component_config = component_config + self.kwargs: KwargsDict = kwargs + + def initialize(self) -> None: + self.__device_id: int = self.kwargs['device_id'] + self.device_config: KacoNHConfiguration = self.kwargs['device_config'] + self.store = get_counter_value_store(self.component_config.id) + self.fault_state = FaultState(ComponentInfo.from_component_config(self.component_config)) + + def update(self) -> None: + component_id = self.component_config.configuration.component_id + response = req.get_http_session().get( + 'http://' + self.device_config.ip_address + ':' + str(self.device_config.port) + '/getdevdata.cgi?device=' + + str(component_id) + '&sn=' + self.device_config.serial, + timeout=5).json() + power = float(response["pac"]) + imported = float(response["iet"]) * 100 + exported = float(response["oet"]) * 100 + + counter_state = CounterState( + imported=imported, + exported=exported, + power=power + ) + self.store.set(counter_state) + + +component_descriptor = ComponentDescriptor(configuration_factory=KacoNHCounterSetup) diff --git a/packages/modules/devices/kaco/kaco_nh/device.py b/packages/modules/devices/kaco/kaco_nh/device.py new file mode 100644 index 0000000000..8fcfba773c --- /dev/null +++ b/packages/modules/devices/kaco/kaco_nh/device.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python3 +import logging +from typing import Iterable, Union + +from modules.common.abstract_device import DeviceDescriptor +from modules.common.configurable_device import ComponentFactoryByType, ConfigurableDevice, MultiComponentUpdater +from modules.devices.kaco.kaco_nh.bat import KacoNHBat +from modules.devices.kaco.kaco_nh.config import (KacoNH, KacoNHBatSetup, + KacoNHCounterSetup, KacoNHInverterSetup) +from modules.devices.kaco.kaco_nh.counter import KacoNHCounter +from modules.devices.kaco.kaco_nh.inverter import KacoNHInverter + +log = logging.getLogger(__name__) + + +def create_device(device_config: KacoNH): + def create_bat_component(component_config: KacoNHBatSetup): + return KacoNHBat(component_config=component_config, + device_id=device_config.id, + device_config=device_config.configuration) + + def create_counter_component(component_config: KacoNHCounterSetup): + return KacoNHCounter(component_config=component_config, + device_id=device_config.id, + device_config=device_config.configuration) + + def create_inverter_component(component_config: KacoNHInverterSetup): + return KacoNHInverter(component_config=component_config, + device_id=device_config.id, + device_config=device_config.configuration) + + def update_components(components: Iterable[Union[KacoNHBat, KacoNHCounter, KacoNHInverter]]): + for component in components: + component.update() + + return ConfigurableDevice( + device_config=device_config, + component_factory=ComponentFactoryByType( + bat=create_bat_component, + counter=create_counter_component, + inverter=create_inverter_component, + ), + component_updater=MultiComponentUpdater(update_components) + ) + + +device_descriptor = DeviceDescriptor(configuration_factory=KacoNH) diff --git a/packages/modules/devices/kaco/kaco_nh/inverter.py b/packages/modules/devices/kaco/kaco_nh/inverter.py new file mode 100644 index 0000000000..f698b93d49 --- /dev/null +++ b/packages/modules/devices/kaco/kaco_nh/inverter.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python3 +from typing import Dict, TypedDict, Any + +from modules.common import req +from modules.common.abstract_device import AbstractInverter +from modules.common.component_state import InverterState +from modules.common.component_type import ComponentDescriptor +from modules.common.fault_state import ComponentInfo, FaultState +from modules.common.store import get_inverter_value_store +from modules.devices.kaco.kaco_nh.config import KacoNHInverterSetup +from modules.devices.kaco.kaco_nh.config import KacoNHConfiguration + + +class KwargsDict(TypedDict): + device_id: int + device_config: KacoNHConfiguration + + +class KacoNHInverter(AbstractInverter): + def __init__(self, component_config: KacoNHInverterSetup, **kwargs: Any) -> None: + self.component_config = component_config + self.kwargs: KwargsDict = kwargs + + def initialize(self) -> None: + self.__device_id: int = self.kwargs['device_id'] + self.store = get_inverter_value_store(self.component_config.id) + self.fault_state = FaultState(ComponentInfo.from_component_config(self.component_config)) + + def update(self, response: Dict) -> None: + component_id = self.component_config.configuration.component_id + response = req.get_http_session().get( + 'http://' + self.device_config.ip_address + ':' + str(self.device_config.port) + '/getdevdata.cgi?device=' + + str(component_id) + '&sn=' + self.device_config.serial, + timeout=5).json() + + power = float(response["pac"]) * -1 + exported = float(response["eto"]) * 100 + + self.store.set(InverterState( + power=power, + exported=exported + )) + + +component_descriptor = ComponentDescriptor(configuration_factory=KacoNHInverterSetup) From f4f7d3ad76e45da022278f0b25f7ac607146f5a4 Mon Sep 17 00:00:00 2001 From: ndrsnhs Date: Mon, 1 Sep 2025 12:34:57 +0200 Subject: [PATCH 2/6] minor fix --- packages/modules/devices/kaco/kaco_nh/bat.py | 6 ++---- .../modules/devices/kaco/kaco_nh/config.py | 20 ++++++++++--------- .../modules/devices/kaco/kaco_nh/counter.py | 6 ++---- .../modules/devices/kaco/kaco_nh/device.py | 3 --- .../modules/devices/kaco/kaco_nh/inverter.py | 6 ++---- 5 files changed, 17 insertions(+), 24 deletions(-) diff --git a/packages/modules/devices/kaco/kaco_nh/bat.py b/packages/modules/devices/kaco/kaco_nh/bat.py index 63a87d7011..6daa638122 100644 --- a/packages/modules/devices/kaco/kaco_nh/bat.py +++ b/packages/modules/devices/kaco/kaco_nh/bat.py @@ -13,7 +13,6 @@ class KwargsDict(TypedDict): - device_id: int device_config: KacoNHConfiguration @@ -24,16 +23,15 @@ def __init__(self, component_config: KacoNHBatSetup, **kwargs: Any) -> None: def initialize(self) -> None: self.device_config: KacoNHConfiguration = self.kwargs['device_config'] - self.__device_id: int = self.kwargs['device_id'] self.sim_counter = SimCounter(self.__device_id, self.component_config.id, prefix="speicher") self.store = get_bat_value_store(self.component_config.id) self.fault_state = FaultState(ComponentInfo.from_component_config(self.component_config)) def update(self) -> None: - component_id = self.component_config.configuration.component_id + id = self.component_config.configuration.id response = req.get_http_session().get( 'http://' + self.device_config.ip_address + ':' + str(self.device_config.port) + '/getdevdata.cgi?device=' + - str(component_id) + '&sn=' + self.device_config.serial, + str(id) + '&sn=' + self.device_config.serial_number, timeout=5).json() power = int(response["pb"]) * -1 soc = float(response["soc"]) diff --git a/packages/modules/devices/kaco/kaco_nh/config.py b/packages/modules/devices/kaco/kaco_nh/config.py index 25890b4b40..babf7b95ba 100644 --- a/packages/modules/devices/kaco/kaco_nh/config.py +++ b/packages/modules/devices/kaco/kaco_nh/config.py @@ -6,15 +6,17 @@ class KacoNHConfiguration: - def __init__(self, ip_address: Optional[str] = None, port: Optional[int] = None, serial: Optional[str] = None): + def __init__(self, ip_address: Optional[str] = None, + port: Optional[int] = None, + serial_number: Optional[str] = None): self.ip_address = ip_address self.port = port - self.serial = serial + self.serial = serial_number class KacoNH: def __init__(self, - name: str = "KacoNH", + name: str = "Kaco NH", type: str = "kaco_nh", id: int = 0, configuration: KacoNHConfiguration = None) -> None: @@ -26,8 +28,8 @@ def __init__(self, class KacoNHBatConfiguration: - def __init__(self, device_id: int = 0): - self.device_id = device_id + def __init__(self, id: int = 0): + self.id = id class KacoNHBatSetup(ComponentSetup[KacoNHBatConfiguration]): @@ -40,8 +42,8 @@ def __init__(self, class KacoNHCounterConfiguration: - def __init__(self, device_id: int = 0): - self.device_id = device_id + def __init__(self, id: int = 0): + self.id = id class KacoNHCounterSetup(ComponentSetup[KacoNHCounterConfiguration]): @@ -54,8 +56,8 @@ def __init__(self, class KacoNHInverterConfiguration: - def __init__(self, device_id: int = 0): - self.device_id = device_id + def __init__(self, id: int = 0): + self.id = id class KacoNHInverterSetup(ComponentSetup[KacoNHInverterConfiguration]): diff --git a/packages/modules/devices/kaco/kaco_nh/counter.py b/packages/modules/devices/kaco/kaco_nh/counter.py index 2c2d9f5916..23b629eb87 100644 --- a/packages/modules/devices/kaco/kaco_nh/counter.py +++ b/packages/modules/devices/kaco/kaco_nh/counter.py @@ -11,7 +11,6 @@ class KwargsDict(TypedDict): - device_id: int device_config: KacoNHConfiguration @@ -21,16 +20,15 @@ def __init__(self, component_config: KacoNHCounterSetup, **kwargs: Any) -> None: self.kwargs: KwargsDict = kwargs def initialize(self) -> None: - self.__device_id: int = self.kwargs['device_id'] self.device_config: KacoNHConfiguration = self.kwargs['device_config'] self.store = get_counter_value_store(self.component_config.id) self.fault_state = FaultState(ComponentInfo.from_component_config(self.component_config)) def update(self) -> None: - component_id = self.component_config.configuration.component_id + id = self.component_config.configuration.id response = req.get_http_session().get( 'http://' + self.device_config.ip_address + ':' + str(self.device_config.port) + '/getdevdata.cgi?device=' + - str(component_id) + '&sn=' + self.device_config.serial, + str(id) + '&sn=' + self.device_config.serial_number, timeout=5).json() power = float(response["pac"]) imported = float(response["iet"]) * 100 diff --git a/packages/modules/devices/kaco/kaco_nh/device.py b/packages/modules/devices/kaco/kaco_nh/device.py index 8fcfba773c..96b7e57eca 100644 --- a/packages/modules/devices/kaco/kaco_nh/device.py +++ b/packages/modules/devices/kaco/kaco_nh/device.py @@ -16,17 +16,14 @@ def create_device(device_config: KacoNH): def create_bat_component(component_config: KacoNHBatSetup): return KacoNHBat(component_config=component_config, - device_id=device_config.id, device_config=device_config.configuration) def create_counter_component(component_config: KacoNHCounterSetup): return KacoNHCounter(component_config=component_config, - device_id=device_config.id, device_config=device_config.configuration) def create_inverter_component(component_config: KacoNHInverterSetup): return KacoNHInverter(component_config=component_config, - device_id=device_config.id, device_config=device_config.configuration) def update_components(components: Iterable[Union[KacoNHBat, KacoNHCounter, KacoNHInverter]]): diff --git a/packages/modules/devices/kaco/kaco_nh/inverter.py b/packages/modules/devices/kaco/kaco_nh/inverter.py index f698b93d49..de2a0287c6 100644 --- a/packages/modules/devices/kaco/kaco_nh/inverter.py +++ b/packages/modules/devices/kaco/kaco_nh/inverter.py @@ -12,7 +12,6 @@ class KwargsDict(TypedDict): - device_id: int device_config: KacoNHConfiguration @@ -22,15 +21,14 @@ def __init__(self, component_config: KacoNHInverterSetup, **kwargs: Any) -> None self.kwargs: KwargsDict = kwargs def initialize(self) -> None: - self.__device_id: int = self.kwargs['device_id'] self.store = get_inverter_value_store(self.component_config.id) self.fault_state = FaultState(ComponentInfo.from_component_config(self.component_config)) def update(self, response: Dict) -> None: - component_id = self.component_config.configuration.component_id + id = self.component_config.configuration.id response = req.get_http_session().get( 'http://' + self.device_config.ip_address + ':' + str(self.device_config.port) + '/getdevdata.cgi?device=' + - str(component_id) + '&sn=' + self.device_config.serial, + str(id) + '&sn=' + self.device_config.serial_number, timeout=5).json() power = float(response["pac"]) * -1 From 65e490c124c941c0ba4c38588f352632faf1d065 Mon Sep 17 00:00:00 2001 From: ndrsnhs Date: Mon, 1 Sep 2025 12:46:09 +0200 Subject: [PATCH 3/6] remove variable --- packages/modules/devices/kaco/kaco_nh/bat.py | 3 +-- packages/modules/devices/kaco/kaco_nh/counter.py | 3 +-- packages/modules/devices/kaco/kaco_nh/inverter.py | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/packages/modules/devices/kaco/kaco_nh/bat.py b/packages/modules/devices/kaco/kaco_nh/bat.py index 6daa638122..cdcc70dce9 100644 --- a/packages/modules/devices/kaco/kaco_nh/bat.py +++ b/packages/modules/devices/kaco/kaco_nh/bat.py @@ -28,10 +28,9 @@ def initialize(self) -> None: self.fault_state = FaultState(ComponentInfo.from_component_config(self.component_config)) def update(self) -> None: - id = self.component_config.configuration.id response = req.get_http_session().get( 'http://' + self.device_config.ip_address + ':' + str(self.device_config.port) + '/getdevdata.cgi?device=' + - str(id) + '&sn=' + self.device_config.serial_number, + str(self.component_config.configuration.id) + '&sn=' + self.device_config.serial_number, timeout=5).json() power = int(response["pb"]) * -1 soc = float(response["soc"]) diff --git a/packages/modules/devices/kaco/kaco_nh/counter.py b/packages/modules/devices/kaco/kaco_nh/counter.py index 23b629eb87..f52a6e75b4 100644 --- a/packages/modules/devices/kaco/kaco_nh/counter.py +++ b/packages/modules/devices/kaco/kaco_nh/counter.py @@ -25,10 +25,9 @@ def initialize(self) -> None: self.fault_state = FaultState(ComponentInfo.from_component_config(self.component_config)) def update(self) -> None: - id = self.component_config.configuration.id response = req.get_http_session().get( 'http://' + self.device_config.ip_address + ':' + str(self.device_config.port) + '/getdevdata.cgi?device=' + - str(id) + '&sn=' + self.device_config.serial_number, + str(self.component_config.configuration.id) + '&sn=' + self.device_config.serial_number, timeout=5).json() power = float(response["pac"]) imported = float(response["iet"]) * 100 diff --git a/packages/modules/devices/kaco/kaco_nh/inverter.py b/packages/modules/devices/kaco/kaco_nh/inverter.py index de2a0287c6..f60b06c413 100644 --- a/packages/modules/devices/kaco/kaco_nh/inverter.py +++ b/packages/modules/devices/kaco/kaco_nh/inverter.py @@ -25,10 +25,9 @@ def initialize(self) -> None: self.fault_state = FaultState(ComponentInfo.from_component_config(self.component_config)) def update(self, response: Dict) -> None: - id = self.component_config.configuration.id response = req.get_http_session().get( 'http://' + self.device_config.ip_address + ':' + str(self.device_config.port) + '/getdevdata.cgi?device=' + - str(id) + '&sn=' + self.device_config.serial_number, + str(self.component_config.configuration.id) + '&sn=' + self.device_config.serial_number, timeout=5).json() power = float(response["pac"]) * -1 From e5a453b46cc56a2527afb9c6785c08127618029c Mon Sep 17 00:00:00 2001 From: LKuemmel <76958050+LKuemmel@users.noreply.github.com> Date: Mon, 1 Sep 2025 14:06:25 +0200 Subject: [PATCH 4/6] Update packages/modules/devices/kaco/kaco_nh/inverter.py --- packages/modules/devices/kaco/kaco_nh/inverter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/modules/devices/kaco/kaco_nh/inverter.py b/packages/modules/devices/kaco/kaco_nh/inverter.py index f60b06c413..1b084187a7 100644 --- a/packages/modules/devices/kaco/kaco_nh/inverter.py +++ b/packages/modules/devices/kaco/kaco_nh/inverter.py @@ -21,7 +21,7 @@ def __init__(self, component_config: KacoNHInverterSetup, **kwargs: Any) -> None self.kwargs: KwargsDict = kwargs def initialize(self) -> None: - self.store = get_inverter_value_store(self.component_config.id) + self.device_config: KacoNHConfiguration = self.kwargs['device_config'] self.fault_state = FaultState(ComponentInfo.from_component_config(self.component_config)) def update(self, response: Dict) -> None: From 8b87346db062fb74f315c42f824d704651caa49e Mon Sep 17 00:00:00 2001 From: LKuemmel <76958050+LKuemmel@users.noreply.github.com> Date: Mon, 1 Sep 2025 14:09:36 +0200 Subject: [PATCH 5/6] Update packages/modules/devices/kaco/kaco_nh/inverter.py --- packages/modules/devices/kaco/kaco_nh/inverter.py | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/modules/devices/kaco/kaco_nh/inverter.py b/packages/modules/devices/kaco/kaco_nh/inverter.py index 1b084187a7..7b9eebebd7 100644 --- a/packages/modules/devices/kaco/kaco_nh/inverter.py +++ b/packages/modules/devices/kaco/kaco_nh/inverter.py @@ -22,6 +22,7 @@ def __init__(self, component_config: KacoNHInverterSetup, **kwargs: Any) -> None def initialize(self) -> None: self.device_config: KacoNHConfiguration = self.kwargs['device_config'] + self.store = get_inverter_value_store(self.component_config.id) self.fault_state = FaultState(ComponentInfo.from_component_config(self.component_config)) def update(self, response: Dict) -> None: From 2a082f37c82dfe5b71ebfdc1066242bb223ec0bb Mon Sep 17 00:00:00 2001 From: ndrsnhs Date: Mon, 27 Oct 2025 13:43:42 +0100 Subject: [PATCH 6/6] fix error --- packages/modules/devices/kaco/kaco_nh/bat.py | 2 ++ packages/modules/devices/kaco/kaco_nh/config.py | 2 +- packages/modules/devices/kaco/kaco_nh/device.py | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/modules/devices/kaco/kaco_nh/bat.py b/packages/modules/devices/kaco/kaco_nh/bat.py index cdcc70dce9..01ca5c7159 100644 --- a/packages/modules/devices/kaco/kaco_nh/bat.py +++ b/packages/modules/devices/kaco/kaco_nh/bat.py @@ -14,6 +14,7 @@ class KwargsDict(TypedDict): device_config: KacoNHConfiguration + device_id: int class KacoNHBat(AbstractBat): @@ -22,6 +23,7 @@ def __init__(self, component_config: KacoNHBatSetup, **kwargs: Any) -> None: self.kwargs: KwargsDict = kwargs def initialize(self) -> None: + self.__device_id: int = self.kwargs['device_id'] self.device_config: KacoNHConfiguration = self.kwargs['device_config'] self.sim_counter = SimCounter(self.__device_id, self.component_config.id, prefix="speicher") self.store = get_bat_value_store(self.component_config.id) diff --git a/packages/modules/devices/kaco/kaco_nh/config.py b/packages/modules/devices/kaco/kaco_nh/config.py index babf7b95ba..75a2010a36 100644 --- a/packages/modules/devices/kaco/kaco_nh/config.py +++ b/packages/modules/devices/kaco/kaco_nh/config.py @@ -11,7 +11,7 @@ def __init__(self, ip_address: Optional[str] = None, serial_number: Optional[str] = None): self.ip_address = ip_address self.port = port - self.serial = serial_number + self.serial_number = serial_number class KacoNH: diff --git a/packages/modules/devices/kaco/kaco_nh/device.py b/packages/modules/devices/kaco/kaco_nh/device.py index 96b7e57eca..243fa864e6 100644 --- a/packages/modules/devices/kaco/kaco_nh/device.py +++ b/packages/modules/devices/kaco/kaco_nh/device.py @@ -16,7 +16,8 @@ def create_device(device_config: KacoNH): def create_bat_component(component_config: KacoNHBatSetup): return KacoNHBat(component_config=component_config, - device_config=device_config.configuration) + device_config=device_config.configuration, + device_id=device_config.id) def create_counter_component(component_config: KacoNHCounterSetup): return KacoNHCounter(component_config=component_config,