diff --git a/packages/helpermodules/setdata.py b/packages/helpermodules/setdata.py index a18eaebb9d..f8c3a2c5ea 100644 --- a/packages/helpermodules/setdata.py +++ b/packages/helpermodules/setdata.py @@ -610,7 +610,8 @@ def process_pv_topic(self, msg: mqtt.MQTTMessage): "/get/yearly_exported" in msg.topic or "/get/energy" in msg.topic): self._validate_value(msg, float, [(0, float("inf"))]) - elif "/get/exported" in msg.topic: + elif ("/get/exported" in msg.topic or + "/get/imported" in msg.topic): self._validate_value(msg, float, [(0, float("inf"))]) elif "/get/power" in msg.topic: self._validate_value(msg, float) diff --git a/packages/modules/devices/generic/mqtt/bat.py b/packages/modules/devices/generic/mqtt/bat.py index bbb1026387..08d8b94e02 100644 --- a/packages/modules/devices/generic/mqtt/bat.py +++ b/packages/modules/devices/generic/mqtt/bat.py @@ -34,8 +34,8 @@ def parse_received_topics(value: str): currents = parse_received_topics("currents") power = received_topics[f"{topic_prefix}power"] soc = received_topics[f"{topic_prefix}soc"] - if (received_topics.get(f"{topic_prefix}imported") and - received_topics.get(f"{topic_prefix}exported")): + if (received_topics.get(f"{topic_prefix}imported") is not None and + received_topics.get(f"{topic_prefix}exported") is not None): imported = received_topics[f"{topic_prefix}imported"] exported = received_topics[f"{topic_prefix}exported"] else: diff --git a/packages/modules/devices/generic/mqtt/inverter.py b/packages/modules/devices/generic/mqtt/inverter.py index 26593035d4..cd5b77317b 100644 --- a/packages/modules/devices/generic/mqtt/inverter.py +++ b/packages/modules/devices/generic/mqtt/inverter.py @@ -31,10 +31,15 @@ def parse_received_topics(value: str): # [] für erforderliche Topics, .get() für optionale Topics topic_prefix = f"openWB/mqtt/pv/{self.component_config.id}/get/" power = received_topics[f"{topic_prefix}power"] - if received_topics.get(f"openWB/mqtt/pv/{self.component_config.id}/get/exported"): + + if (received_topics.get(f"{topic_prefix}exported") is None or + received_topics.get(f"{topic_prefix}imported") is None): + imported, exported = self.sim_counter.sim_count(power) + if received_topics.get(f"{topic_prefix}exported"): exported = received_topics[f"{topic_prefix}exported"] - else: - exported = self.sim_counter.sim_count(power)[1] + if received_topics.get(f"{topic_prefix}imported"): + imported = received_topics[f"{topic_prefix}imported"] + currents = parse_received_topics("currents") dc_power = parse_received_topics("dc_power") @@ -42,6 +47,7 @@ def parse_received_topics(value: str): currents=currents, power=power, exported=exported, + imported=imported, dc_power=dc_power ) self.store.set(inverter_state)