Enable multiple requests in smartprotocol (#584)

* Enable multiple requests in smartprotocol

* Update following review

* Remove error_code parameter in exceptions
This commit is contained in:
sdb9696
2023-12-20 17:08:04 +00:00
committed by GitHub
parent 20ea6700a5
commit 6819c746d7
12 changed files with 260 additions and 76 deletions

View File

@@ -41,11 +41,18 @@ class TapoDevice(SmartDevice):
raise AuthenticationException("Tapo plug requires authentication.")
if self._components is None:
self._components = await self.protocol.query("component_nego")
resp = await self.protocol.query("component_nego")
self._components = resp["component_nego"]
self._info = await self.protocol.query("get_device_info")
self._usage = await self.protocol.query("get_device_usage")
self._time = await self.protocol.query("get_device_time")
req = {
"get_device_info": None,
"get_device_usage": None,
"get_device_time": None,
}
resp = await self.protocol.query(req)
self._info = resp["get_device_info"]
self._usage = resp["get_device_usage"]
self._time = resp["get_device_time"]
self._last_update = self._data = {
"components": self._components,

View File

@@ -39,8 +39,13 @@ class TapoPlug(TapoDevice):
"""Call the device endpoint and update the device data."""
await super().update(update_children)
self._energy = await self.protocol.query("get_energy_usage")
self._emeter = await self.protocol.query("get_current_power")
req = {
"get_energy_usage": None,
"get_current_power": None,
}
resp = await self.protocol.query(req)
self._energy = resp["get_energy_usage"]
self._emeter = resp["get_current_power"]
self._data["energy"] = self._energy
self._data["emeter"] = self._emeter
@@ -71,6 +76,13 @@ class TapoPlug(TapoDevice):
}
)
async def get_emeter_realtime(self) -> EmeterStatus:
"""Retrieve current energy readings."""
self._verify_emeter()
resp = await self.protocol.query("get_energy_usage")
self._energy = resp["get_energy_usage"]
return self.emeter_realtime
@property
def emeter_today(self) -> Optional[float]:
"""Get the emeter value for today."""