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

View File

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