Add module support & query their information during update cycle (#243)

* Add module support & modularize existing query

This creates a base to expose more features on the supported devices.
At the moment, the most visible change is that each update cycle gets information from all available modules:
* Basic system info
* Cloud (new)
* Countdown (new)
* Antitheft (new)
* Schedule (new)
* Time (existing, implements the time/timezone handling)
* Emeter (existing, partially separated from smartdevice)

* Fix imports

* Fix linting

* Use device host instead of alias in module repr

* Add property to list available modules, print them in cli state report

* usage: fix the get_realtime query

* separate usage from schedule to avoid multi-inheritance

* Fix module querying

* Add is_supported property to modules
This commit is contained in:
Teemu R
2021-11-07 02:41:12 +01:00
parent 7b9e3aae8a
commit 3926f3224f
17 changed files with 587 additions and 137 deletions

View File

@@ -18,7 +18,8 @@ kasa = "kasa.cli:cli"
python = "^3.7"
anyio = "*" # see https://github.com/python-trio/asyncclick/issues/18
importlib-metadata = "*"
asyncclick = ">=8"
asyncclick = ">=7"
pydantic = "^1"
# required only for docs
sphinx = { version = "^3", optional = true }