From b9b6ed33ee5c0d5ade23790c7c37f3a382269fcd Mon Sep 17 00:00:00 2001 From: TheJulianJES Date: Thu, 7 Jul 2022 20:27:48 +0200 Subject: [PATCH] Fix smart energy polling for Tuya plugs (#74640) * Add PolledSmartEnergySummation to poll summation_delivered for some ZHA plugs * Remove PolledSmartEnergyMetering, add stop_on_match_group to summation sensors --- homeassistant/components/zha/sensor.py | 37 ++++++++++++++------------ 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/homeassistant/components/zha/sensor.py b/homeassistant/components/zha/sensor.py index 4a4700b3c4c..d9aa44fe436 100644 --- a/homeassistant/components/zha/sensor.py +++ b/homeassistant/components/zha/sensor.py @@ -472,25 +472,8 @@ class SmartEnergyMetering(Sensor): @MULTI_MATCH( channel_names=CHANNEL_SMARTENERGY_METERING, - models={"TS011F"}, stop_on_match_group=CHANNEL_SMARTENERGY_METERING, ) -class PolledSmartEnergyMetering(SmartEnergyMetering): - """Polled metering sensor.""" - - @property - def should_poll(self) -> bool: - """Poll the entity for current state.""" - return True - - async def async_update(self) -> None: - """Retrieve latest state.""" - if not self.available: - return - await self._channel.async_force_update() - - -@MULTI_MATCH(channel_names=CHANNEL_SMARTENERGY_METERING) class SmartEnergySummation(SmartEnergyMetering, id_suffix="summation_delivered"): """Smart Energy Metering summation sensor.""" @@ -523,6 +506,26 @@ class SmartEnergySummation(SmartEnergyMetering, id_suffix="summation_delivered") return round(cooked, 3) +@MULTI_MATCH( + channel_names=CHANNEL_SMARTENERGY_METERING, + models={"TS011F"}, + stop_on_match_group=CHANNEL_SMARTENERGY_METERING, +) +class PolledSmartEnergySummation(SmartEnergySummation): + """Polled Smart Energy Metering summation sensor.""" + + @property + def should_poll(self) -> bool: + """Poll the entity for current state.""" + return True + + async def async_update(self) -> None: + """Retrieve latest state.""" + if not self.available: + return + await self._channel.async_force_update() + + @MULTI_MATCH(channel_names=CHANNEL_PRESSURE) class Pressure(Sensor): """Pressure sensor."""