Add klap protocol (#509)

* Add support for the new encryption protocol

This adds support for the new TP-Link discovery and encryption
protocols. It is currently incomplete - only devices without
username and password are current supported, and single device
discovery is not implemented.

Discovery should find both old and new devices. When accessing
a device by IP the --klap option can be specified on the command
line to active the new connection protocol.

sdb9696 - This commit also contains 16 later commits from Simon Wilkinson
squashed into the original

* Update klap changes 2023 to fix encryption, deal with kasa credential switching and work with new discovery changes

* Move from aiohttp to httpx

* Changes following review comments

---------

Co-authored-by: Simon Wilkinson <simon@sxw.org.uk>
This commit is contained in:
sdb9696
2023-11-20 13:17:10 +00:00
committed by GitHub
parent bde07d117f
commit 30f217b8ab
10 changed files with 1297 additions and 65 deletions

View File

@@ -23,6 +23,9 @@ python = "^3.8"
anyio = "*" # see https://github.com/python-trio/asyncclick/issues/18
asyncclick = ">=8"
pydantic = ">=1"
cryptography = ">=1.9"
async-timeout = ">=3.0.0"
httpx = ">=0.25.0"
# speed ups
orjson = { "version" = ">=3.9.1", optional = true }
@@ -34,7 +37,6 @@ sphinx_rtd_theme = { version = "^0", optional = true }
sphinxcontrib-programoutput = { version = "^0", optional = true }
myst-parser = { version = "*", optional = true }
docutils = { version = ">=0.17", optional = true }
async-timeout = ">=3.0.0"
[tool.poetry.group.dev.dependencies]
pytest = "*"