Commit Graph

499 Commits

Author SHA1 Message Date
sdb9696
f68acb60e7 Avoid reset for all connection errors 2024-01-23 17:51:18 +00:00
sdb9696
0e874a35f1 Update transport close/reset behaviour 2024-01-23 17:11:23 +00:00
Steven B
e233e377ad
Generate AES KeyPair lazily (#687)
* Generate AES KeyPair lazily

* Fix coverage

* Update post-review

* Fix pragma

* Make json dumps consistent between python and orjson

* Add comment

* Add comments re json parameter in HttpClient
2024-01-23 15:29:27 +00:00
Steven B
718983c401
Try default tapo credentials for klap and aes (#685)
* Try default tapo credentials for klap and aes

* Add tests
2024-01-23 14:44:32 +00:00
Teemu R
c8ac3a29c7
Add reboot and factory_reset to tapodevice (#686)
* Add reboot and factory_reset to tapodevice

* Add test for reboot command

* Fix mocking as different protocols use different methods for comms..
2024-01-23 14:26:47 +01:00
Teemu R
cfbdf7c64a
Show discovery data for state with verbose (#678)
* Show discovery data for state with verbose

* Remove duplicate discovery printout on discovery, add a newline for readability
2024-01-23 13:24:17 +01:00
Steven B
1db955b05e
Make request batch size configurable and avoid multiRequest if 1 (#681) 2024-01-23 11:33:07 +01:00
Teemu R
c1f2f8fe67
Check README for supported models (#684)
* Check README for supported models

* Use poetry for running due to imports

* Update README
2024-01-23 10:14:59 +00:00
J. Nick Koston
d5fdf05ed2
Add P100 test fixture (#683) 2024-01-23 10:12:24 +00:00
J. Nick Koston
abd3ee0768
Add P135 fixture (#673)
* Add P135 fixture

This device is a dimmer but we currently treat it as a on/off

* add to conftest
2024-01-23 08:31:19 +01:00
J. Nick Koston
65c47a9373
Update fixtures from test devices (#679)
* Update fixtures from test devices

* move l920 to another pr
2024-01-23 08:12:54 +01:00
J. Nick Koston
37f522c763
Add L530E(US) fixture (#674) 2024-01-23 06:24:08 +01:00
Steven B
ee487ad837
Sleep between discovery packets (#656)
* Sleep between discovery packets

* Add tests
2024-01-22 18:25:23 +01:00
Steven B
6b0a72d5a7
Add protocol and transport documentation (#663)
* Add protocol and transport documentation

* Update post review
2024-01-22 17:45:19 +01:00
Steven B
14acc8550e
Rename base TPLinkProtocol to BaseProtocol (#669) 2024-01-22 16:28:30 +01:00
Teemu R
b784d891ff
Release 0.6.0.1 (#666)
A patch release to improve the protocol handling.
2024-01-21 01:55:24 +01:00
Teemu R
df59791829
Add l900-5 1.1.0 fixture (#664)
* Adds new localSmart module
* Changed from AES to klap
* Doesn't reboot itself when receiving a RST for the cloud connectivity requests
2024-01-21 01:41:13 +01:00
Teemu R
f77e87dc5d
dump_devinfo improvements (#657)
* dump_devinfo improvements

* Scrub only the last three bytes for mac addresses
* Add --target to allow creating fixtures based on discovery
* Save fixtures directly to correct location, add --basedir to allow defining the location of repository root
* Add --autosave to disable prompting for saving

* Update fixtures for devices I have

* Add fixture for HS110 hw 4.0 fw 1.0.4

* Improve help strings

* Fix tests

* Update devtools README

* Default to discovery if no host/target given
2024-01-20 14:20:08 +01:00
Steven B
49cfef087c
Make close behaviour consistent across new protocols and transports (#660) 2024-01-20 13:35:05 +01:00
Steven B
e94cd118a4
Add fixtures with new MAC mask (#661) 2024-01-20 13:22:54 +01:00
J. Nick Koston
8523800b23
Fix minor typos in docstrings (#659) 2024-01-20 02:40:21 +01:00
J. Nick Koston
d62b5a55cc
Improve and document close behavior (#654)
* Close connection on smartprotocol timeout

* tweaks
2024-01-19 21:30:01 +01:00
Steven B
38159140fb
Fix httpclient exceptions on read and improve error info (#655) 2024-01-19 21:06:50 +01:00
Teemu R
0647adaba0
Release 0.6.0 (#653)
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!
2024-01-19 01:36:57 +01:00
Steven B
bedf05ce3b
Remove time logging in debug message (#645) 2024-01-18 08:32:58 -10:00
Steven B
c3329155c8
Raise SmartDeviceException on invalid config dicts (#640)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-01-18 07:51:50 -10:00
Steven B
642e9a1f5b
Migrate http client to use aiohttp instead of httpx (#643) 2024-01-18 07:32:26 -10:00
Steven B
3b1b0a3c21
Encapsulate http client dependency (#642)
* Encapsulate http client dependency

* Store cookie dict as variable

* Update post-review
2024-01-18 10:57:33 +01:00
Steven B
4623434eb4
Fix broken docs due to applehelp dependency (#641) 2024-01-18 09:21:52 +01:00
J. Nick Koston
eadf1203fc
Add fixture for L920 (#638) 2024-01-14 23:49:31 +01:00
J. Nick Koston
aed67dad16
Fix connection indeterminate state on cancellation (#636)
* 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
2024-01-13 18:37:24 +01:00
Teemu R
816053fc6e
Release 0.6.0.dev2 (#633) 2024-01-11 16:29:15 +01:00
Steven B
fbce755544
Raise TimeoutException on discover_single timeout (#632) 2024-01-11 16:13:44 +01:00
Steven B
5b8280a8d9
Return alias as None for new discovery devices before update (#627)
* Trim the length of the unavailable device alias

* Update to use short mac as auth required alias

* Update to return alias as none
2024-01-11 16:12:02 +01:00
Steven B
fd2170c82c
Update config to_dict to exclude credentials if the hash is empty string (#626)
* Update config to_dict to exclude credentials if the hash is empty string

* Add test
2024-01-10 20:47:30 +01:00
Steven B
d5a6fd8e73
Improve test coverage (#625) 2024-01-10 20:37:43 +01:00
Steven B
3e0cd07b7c
Update docs for newer devices and DeviceConfig (#614)
* Update docs for newer devices and DeviceConfig

* Tweak docs post review

* Move sentence to newline

* Update post review

* Update following review
2024-01-10 20:13:14 +01:00
Steven B
897db674c2
Add L900-10 fixture and it's additional component requests (#629) 2024-01-10 19:40:36 +01:00
J. Nick Koston
460054ced7
Avoid recreating struct each request in legacy protocol (#628) 2024-01-09 13:51:04 -10:00
Teemu R
510aea7207
Release 0.6.0.dev1 (#624) 2024-01-05 02:34:56 +01:00
Nathan Wreggit
cfe694e5de
Get child emeters with CLI (#623)
* Get child emeters with CLI

* Avoid extra IO when not que querying the child emeter
2024-01-05 02:25:24 +01:00
Teemu R
2d8a8d9511
Add update-credentials command (#620)
* Add change credentials command

* Rename command and add prompts for credential update
2024-01-05 02:25:15 +01:00
J. Nick Koston
554fe0a96e
Avoid linear search for emeter realtime and emeter_today (#622)
* 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
2024-01-05 02:01:00 +01:00
J. Nick Koston
efd67b9261
Add P125M and update EP25 fixtures (#621)
* Add P125M and update EP25 fixtures

* fix: adjust tests
2024-01-05 00:01:34 +01:00
Teemu R
17d96064c2
Mark L900-5 as supported (#617)
* Add fixture for L900-5

* Update readme
2024-01-04 19:52:11 +01:00
Teemu R
7e6eaf4ab2
Use consistent envvars for dump_devinfo credentials (#618) 2024-01-04 19:28:59 +01:00
Teemu R
7a3eedeee9
Check the ct range for color temp support (#619) 2024-01-04 19:28:48 +01:00
sdb9696
b156defc3c
Fix cli discover bug with None username/password (#615) 2024-01-04 19:17:48 +01:00
Teemu R
1bb930b096
Ship CHANGELOG only in sdist (#610)
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)?
2024-01-04 19:14:14 +01:00
Teemu R
047a84b60a
Release 0.6.0.dev0 (#609) 2024-01-04 00:28:29 +01:00