Do not request unsupported modules after the initial update (#298)

* Do not request unsupported modules after the initial update

* debugify logging
This commit is contained in:
Teemu R 2022-01-29 18:15:59 +01:00
parent 8c7b1b4a68
commit 3a7836cd33
2 changed files with 11 additions and 0 deletions

View File

@ -1,5 +1,6 @@
"""Base class for all module implementations."""
import collections
import logging
from abc import ABC, abstractmethod
from typing import TYPE_CHECKING
@ -7,6 +8,9 @@ if TYPE_CHECKING:
from kasa import SmartDevice
_LOGGER = logging.getLogger(__name__)
# TODO: This is used for query construcing
def merge(d, u):
"""Update dict recursively."""
@ -45,6 +49,10 @@ class Module(ABC):
@property
def is_supported(self) -> bool:
"""Return whether the module is supported by the device."""
if self._module not in self._device._last_update:
_LOGGER.debug("Initial update, so consider supported: %s", self._module)
return True
return "err_code" not in self.data
def call(self, method, params=None):

View File

@ -327,6 +327,9 @@ class SmartDevice:
self.add_module("emeter", Emeter(self, self.emeter_type))
for module in self.modules.values():
if not module.is_supported:
_LOGGER.debug("Module %s not supported, skipping" % module)
continue
q = module.query()
_LOGGER.debug("Adding query for %s: %s", module, q)
req = merge(req, module.query())