This major brings major changes to the library by adding support for devices that require authentication for communications, all of this being possible thanks to the great work by @sdb9696!
This release adds support to a large range of previously unsupported devices, including:
* Newer kasa-branded devices, including Matter-enabled devices like KP125M
* Newer hardware/firmware versions on some models, like EP25, that suddenly changed the used protocol
* Tapo-branded devices like plugs (P110), light bulbs (KL530), LED strips (L900, L920), and wall switches (KS205, KS225)
* UK variant of HS110, which was the first device using the new protocol
If your device that is not currently listed as supported is working, please consider contributing a test fixture file.
Special thanks goes to @SimonWilkinson who created the initial PR for the new communication protocol!
* Fix connection indeterminate state on cancellation
If the task the query is running in it cancelled, we do
know the state of the connection so we must close. Previously
we would not close on BaseException which could result
in reading the previous response if the previous query was
cancelled after the request had been sent
* add test for cancellation
* Avoid linear search for emeter realtime and emeter_today
Most of the time the data we want is at the end of the
list so we now search backwards to avoid having to
scale all the data and throw most of it away
* more tweaks
* coverage
* coverage
* preen
* coverage
* branch cover
Otherwise, the file would be extracted in the main site-packages which is rather unexpected..
Uninstalling python-kasa-0.6.0.dev0:
Would remove:
/home/tpr/.virtualenvs/default/bin/kasa
/home/tpr/.virtualenvs/default/lib/python3.11/site-packages/CHANGELOG.md
/home/tpr/.virtualenvs/default/lib/python3.11/site-packages/kasa/*
/home/tpr/.virtualenvs/default/lib/python3.11/site-packages/python_kasa-0.6.0.dev0.dist-info/*
Proceed (Y/n)?
* Pull has_emeter property up to tapodevice base class
This will also use the existence of energy_monitoring in the component_nego query to decide if the device has the service.
* Move emeter related functions to tapodevice
* Remove supported_modules override for now
This should be done in a separate PR, if we want to expose the available components to cli and downstreams
* Dedent extra reqs
* Move extra_reqs initialization
* Fix tests
* Do login entirely within AesTransport
* Remove login and handshake attributes from BaseTransport
* Add AesTransport tests
* Synchronise transport and protocol __init__ signatures and rename internal variables
* Update after review