diff --git a/packages/modules/common/tasmota.py b/packages/modules/common/tasmota.py index 42c99f1bbd..98e3fb3a0b 100644 --- a/packages/modules/common/tasmota.py +++ b/packages/modules/common/tasmota.py @@ -28,23 +28,35 @@ def get_CounterState(self) -> CounterState: currents = [0.0, 0.0, 0.0] power_factors = [0.0, 0.0, 0.0] - voltages[self.__phase-1] = float(response['StatusSNS']['ENERGY']['Voltage']) - powers[self.__phase-1] = float(response['StatusSNS']['ENERGY']['Power']) - power = sum(powers) - currents[self.__phase-1] = float(response['StatusSNS']['ENERGY']['Current']) - power_factors[self.__phase-1] = float(response['StatusSNS']['ENERGY']['Factor']) - imported = float(response['StatusSNS']['ENERGY']['Total']*1000) - exported = 0.0 - - counter_state = CounterState( - imported=imported, - exported=exported, - power=power, - voltages=voltages, - currents=currents, - powers=powers, - power_factors=power_factors - ) + if ['ENERGY'] in response['StatusSNS']: + voltages[self.__phase-1] = float(response['StatusSNS']['ENERGY']['Voltage']) + powers[self.__phase-1] = float(response['StatusSNS']['ENERGY']['Power']) + power = sum(powers) + currents[self.__phase-1] = float(response['StatusSNS']['ENERGY']['Current']) + power_factors[self.__phase-1] = float(response['StatusSNS']['ENERGY']['Factor']) + imported = float(response['StatusSNS']['ENERGY']['Total']*1000) + exported = 0.0 + + counter_state = CounterState( + imported=imported, + exported=exported, + power=power, + voltages=voltages, + currents=currents, + powers=powers, + power_factors=power_factors + ) + else: + power = float(response['StatusSNS']['Itron']['Power']) + imported = float(response['StatusSNS']['Itron']['E_in']) + exported = float(response['StatusSNS']['Itron']['E_out']) + + counter_state = CounterState( + imported=imported, + exported=exported, + power=power + ) + log.debug("tasmota.get_CounterState:\nurl=" + url + "\nresponse=" + str(response) + "\nCounterState=" + str(counter_state))