Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions packages/control/counter.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ class Get:
fault_state: int = field(default=0, metadata={"topic": "get/fault_state"})
fault_str: str = field(default=NO_ERROR, metadata={"topic": "get/fault_str"})
power: float = field(default=0, metadata={"topic": "get/power"})
serial_number: Optional[str] = field(default=None, metadata={"topic": "get/serial_number"})


def get_factory() -> Get:
Expand Down
9 changes: 6 additions & 3 deletions packages/helpermodules/setdata.py
Original file line number Diff line number Diff line change
Expand Up @@ -627,7 +627,8 @@ def process_pv_topic(self, msg: mqtt.MQTTMessage):
elif subdata.SubData.pv_data.get(f"pv{get_index(msg.topic)}"):
if "/get/fault_state" in msg.topic:
self._validate_value(msg, int, [(0, 2)])
elif "/get/fault_str" in msg.topic:
elif ("/get/fault_str" in msg.topic or
"/get/serial_number" in msg.topic):
self._validate_value(msg, str)
elif ("/get/daily_exported" in msg.topic or
"/get/monthly_exported" in msg.topic or
Expand Down Expand Up @@ -696,7 +697,8 @@ def process_bat_topic(self, msg: mqtt.MQTTMessage):
self._validate_value(msg, float, [(0, 100)])
elif "/get/fault_state" in msg.topic:
self._validate_value(msg, int, [(0, 2)])
elif "/get/fault_str" in msg.topic:
elif ("/get/fault_str" in msg.topic or
"/get/serial_number" in msg.topic):
self._validate_value(msg, str)
elif "/set/power_limit_controllable" in msg.topic:
self._validate_value(msg, bool)
Expand Down Expand Up @@ -948,7 +950,8 @@ def process_counter_topic(self, msg: mqtt.MQTTMessage):
self._validate_value(msg, int, [(0, 2)])
elif "/set/error_timer" in msg.topic:
self._validate_value(msg, float, [(0, float("inf"))])
elif "/get/fault_str" in msg.topic:
elif ("/get/fault_str" in msg.topic or
"/get/serial_number" in msg.topic):
self._validate_value(msg, str)
elif "/get/power" in msg.topic:
self._validate_value(
Expand Down
8 changes: 6 additions & 2 deletions packages/modules/common/component_state.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ def __init__(
power: float = 0,
soc: float = 0,
currents: Optional[List[float]] = None,
serial_number: Optional[str] = None,
):
"""Args:
imported: total imported energy in Wh
Expand All @@ -83,6 +84,7 @@ def __init__(
if not check_currents_power_sign(currents, power):
log.debug("currents sign wrong "+str(currents))
self.currents = currents
self.serial_number = serial_number


@auto_str
Expand All @@ -97,7 +99,7 @@ def __init__(
powers: Optional[List[Optional[float]]] = None,
power_factors: Optional[List[Optional[float]]] = None,
frequency: float = 50,
serial_number: str = "",
serial_number: Optional[str] = None,
):
"""Args:
imported: total imported energy in Wh
Expand Down Expand Up @@ -128,7 +130,8 @@ def __init__(
power: float,
imported: float = 0, # simulated import counter to properly calculate PV energy when bat is charged from AC
currents: Optional[List[Optional[float]]] = None,
dc_power: Optional[float] = None
dc_power: Optional[float] = None,
serial_number: Optional[str] = None,
):
"""Args:
exported: total energy in Wh
Expand All @@ -147,6 +150,7 @@ def __init__(
self.exported = exported
self.imported = imported
self.dc_power = dc_power
self.serial_number = serial_number


@auto_str
Expand Down
2 changes: 2 additions & 0 deletions packages/modules/common/store/_battery.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ def update(self):
if self.state.imported is not None and self.state.exported is not None:
pub_to_broker("openWB/set/bat/"+str(self.num)+"/get/imported", self.state.imported, 2)
pub_to_broker("openWB/set/bat/"+str(self.num)+"/get/exported", self.state.exported, 2)
if self.state.serial_number is not None:
pub_to_broker("openWB/set/bat/" + str(self.num) + "/get/serial_number", self.state.serial_number)


class PurgeBatteryState:
Expand Down
2 changes: 2 additions & 0 deletions packages/modules/common/store/_counter.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ def update(self):
pub_to_broker("openWB/set/counter/" + str(self.num) + "/get/exported", self.state.exported)
pub_to_broker("openWB/set/counter/" + str(self.num) + "/get/power", self.state.power)
pub_to_broker("openWB/set/counter/" + str(self.num) + "/get/frequency", self.state.frequency)
if self.state.serial_number is not None:
pub_to_broker("openWB/set/counter/" + str(self.num) + "/get/serial_number", self.state.serial_number)


class PurgeCounterState:
Expand Down
2 changes: 2 additions & 0 deletions packages/modules/common/store/_inverter.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ def update(self):
log.debug("Kein gültiger Zählerstand. Wert wird nicht aktualisiert.")
if self.state.currents:
pub_to_broker("openWB/set/pv/" + str(self.num) + "/get/currents", self.state.currents, 1)
if self.state.serial_number is not None:
pub_to_broker("openWB/set/pv/" + str(self.num) + "/get/serial_number", self.state.serial_number)


class PurgeInverterState:
Expand Down
3 changes: 2 additions & 1 deletion packages/modules/devices/openwb/openwb_flex/bat.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,8 @@ def update(self):
currents=currents,
imported=imported,
exported=exported,
power=power
power=power,
serial_number=counter_state.serial_number,
)
self.store.set(bat_state)

Expand Down
24 changes: 4 additions & 20 deletions packages/modules/devices/openwb/openwb_flex/consumption_counter.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@

from modules.common import modbus
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.simcount import SimCounter
Expand Down Expand Up @@ -34,27 +33,12 @@ def initialize(self) -> None:

def update(self) -> None:
with self.__tcp_client:
voltages = self.__client.get_voltages()
powers, power = self.__client.get_power()
frequency = self.__client.get_frequency()
power_factors = self.__client.get_power_factors()
imported = self.__client.get_imported()
currents = self.__client.get_currents()
counter_state = self.__client.get_counter_state()
if self.component_config.configuration.type == "b23":
exported = self.__client.get_exported()
counter_state.exported = self.__client.get_exported()
else:
exported = 0

counter_state = CounterState(
voltages=voltages,
currents=currents,
powers=powers,
power_factors=power_factors,
imported=imported,
exported=exported,
power=power,
frequency=frequency
)
counter_state.exported = 0

self.store.set(counter_state)


Expand Down
3 changes: 2 additions & 1 deletion packages/modules/devices/openwb/openwb_flex/inverter.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,8 @@ def update(self) -> None:
inverter_state = InverterState(
power=power,
exported=exported,
currents=counter_state.currents
currents=counter_state.currents,
serial_number=counter_state.serial_number
)
self.store.set(inverter_state)

Expand Down