From ec655a063f111ba6b55d046f534f098e30455630 Mon Sep 17 00:00:00 2001 From: ndrsnhs Date: Thu, 2 Jul 2026 08:43:02 +0200 Subject: [PATCH 1/2] check for import/ export values --- packages/modules/devices/tasmota/tasmota/bat.py | 8 ++++++-- packages/modules/devices/tasmota/tasmota/counter.py | 8 ++++++-- packages/modules/devices/tasmota/tasmota/inverter.py | 7 +++++-- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/packages/modules/devices/tasmota/tasmota/bat.py b/packages/modules/devices/tasmota/tasmota/bat.py index 71d1971a13..891bfb26a8 100644 --- a/packages/modules/devices/tasmota/tasmota/bat.py +++ b/packages/modules/devices/tasmota/tasmota/bat.py @@ -51,8 +51,12 @@ def update(self): _, exported = self.sim_counter.sim_count(power) elif 'Itron' in response['StatusSNS']: power = float(response['StatusSNS']['Itron']['Power']) - imported = float(response['StatusSNS']['Itron']['E_in']*1000) - exported = float(response['StatusSNS']['Itron']['E_out']*1000) + if 'E_in' in response['StatusSNS']['Itron']: + imported = float(response['StatusSNS']['Itron']['E_in']*1000) + exported = float(response['StatusSNS']['Itron']['E_out']*1000) + else: + imported = float(response['StatusSNS']['Itron']['ImportActive']*1000) + exported = float(response['StatusSNS']['Itron']['ExportActive']*1000) imported, exported = self.peak_filter.check_values(power, imported, exported) elif 'MT681' in response['StatusSNS']: power = float(response['StatusSNS']['MT681']['Watt_summe']) diff --git a/packages/modules/devices/tasmota/tasmota/counter.py b/packages/modules/devices/tasmota/tasmota/counter.py index 76c9713bf1..20d8eb1964 100644 --- a/packages/modules/devices/tasmota/tasmota/counter.py +++ b/packages/modules/devices/tasmota/tasmota/counter.py @@ -60,8 +60,12 @@ def update(self): _, exported = self.sim_counter.sim_count(power) elif 'Itron' in response['StatusSNS']: power = float(response['StatusSNS']['Itron']['Power']) - imported = float(response['StatusSNS']['Itron']['E_in']*1000) - exported = float(response['StatusSNS']['Itron']['E_out']*1000) + if 'E_in' in response['StatusSNS']['Itron']: + imported = float(response['StatusSNS']['Itron']['E_in']*1000) + exported = float(response['StatusSNS']['Itron']['E_out']*1000) + else: + imported = float(response['StatusSNS']['Itron']['ImportActive']*1000) + exported = float(response['StatusSNS']['Itron']['ExportActive']*1000) imported, exported = self.peak_filter.check_values(power, imported, exported) elif 'MT681' in response['StatusSNS']: power = float(response['StatusSNS']['MT681']['Watt_summe']) diff --git a/packages/modules/devices/tasmota/tasmota/inverter.py b/packages/modules/devices/tasmota/tasmota/inverter.py index e9cfec178c..16d15433be 100644 --- a/packages/modules/devices/tasmota/tasmota/inverter.py +++ b/packages/modules/devices/tasmota/tasmota/inverter.py @@ -48,8 +48,11 @@ def update(self): self.peak_filter.check_values(power) _, exported = self.sim_counter.sim_count(power) elif 'Itron' in response['StatusSNS']: - power = float(response['StatusSNS']['Itron']['Power']) * -1 - exported = float(response['StatusSNS']['Itron']['E_out']*1000) + power = float(response['StatusSNS']['Itron']['Power']) + if 'E_in' in response['StatusSNS']['Itron']: + exported = float(response['StatusSNS']['Itron']['E_out']*1000) + else: + exported = float(response['StatusSNS']['Itron']['ExportActive']*1000) _, exported = self.peak_filter.check_values(power, None, exported) elif 'MT681' in response['StatusSNS']: power = float(response['StatusSNS']['MT681']['Watt_summe']) * -1 From 615dd6791e5187245e6986a4c06bfae19dc15526 Mon Sep 17 00:00:00 2001 From: ndrsnhs Date: Thu, 2 Jul 2026 08:44:21 +0200 Subject: [PATCH 2/2] change pv power sign --- packages/modules/devices/tasmota/tasmota/inverter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/modules/devices/tasmota/tasmota/inverter.py b/packages/modules/devices/tasmota/tasmota/inverter.py index 16d15433be..abb61627da 100644 --- a/packages/modules/devices/tasmota/tasmota/inverter.py +++ b/packages/modules/devices/tasmota/tasmota/inverter.py @@ -48,7 +48,7 @@ def update(self): self.peak_filter.check_values(power) _, exported = self.sim_counter.sim_count(power) elif 'Itron' in response['StatusSNS']: - power = float(response['StatusSNS']['Itron']['Power']) + power = float(response['StatusSNS']['Itron']['Power']) * -1 if 'E_in' in response['StatusSNS']['Itron']: exported = float(response['StatusSNS']['Itron']['E_out']*1000) else: