Commit Graph

962 Commits

Author SHA1 Message Date
Teemu Rytilahti
c509b601a0 Fix incorrectly named attribute_getter 2024-12-02 13:51:46 +01:00
Teemu Rytilahti
b961c5e4f7 Initial support for cleaning records 2024-12-02 13:51:46 +01:00
Teemu R.
74b59d7f98
Scrub more vacuum keys (#1328) 2024-12-01 18:07:05 +01:00
Teemu R.
9966c6094a
Add ssltransport for robovacs (#943)
This PR implements a clear-text, token-based transport protocol seen on
RV30 Plus (#937).

- Client sends `{"username": "email@example.com", "password":
md5(password)}` and gets back a token in the response
- Rest of the communications are done with POST at `/app?token=<token>`

---------

Co-authored-by: Steven B. <51370195+sdb9696@users.noreply.github.com>
2024-12-01 18:06:48 +01:00
Teemu R.
9a52056522
Remove unnecessary check for python <3.10 (#1326) 2024-11-30 15:35:38 +00:00
Teemu R.
d122b48788
Add vacuum component queries to dump_devinfo (#1320) 2024-11-29 19:02:04 +00:00
Steven B.
5ef8f21b4d
Handle missing mgt_encryption_schm in discovery (#1318) 2024-11-29 15:23:16 +00:00
Teemu R.
fcb604e435
Follow main package structure for tests (#1317)
* Transport tests under tests/transports/
* Protocol tests under tests/protocols/
* IOT tests under iot/
* Plus some minor cleanups, most code changes are related to splitting
up smart & iot tests
2024-11-28 17:56:20 +01:00
Steven B.
6adb2b5c28
Prepare 0.8.0 (#1312)
## [0.8.0](https://github.com/python-kasa/python-kasa/tree/0.8.0) (2024-11-26)

[Full Changelog](https://github.com/python-kasa/python-kasa/compare/0.7.7...0.8.0)

**Release highlights:**

- **Initial support for devices using the Tapo camera protocol, i.e. Tapo cameras and the Tapo H200 hub.**
- New camera functionality such as exposing RTSP streaming urls and camera pan/tilt.
- New way of testing module support for individual features with `has_feature` and `get_feature`.
- Adding voltage and current monitoring to `smart` devices.
- Migration from pydantic to mashumaro for serialization.

Special thanks to @ryenitcher and @Puxtril for their new contributions to the improvement of the project! Also thanks to everyone who has helped with testing, contributing fixtures, and reporting issues!

**Breaking change notes:**

- Removed support for python <3.11. If you haven't got a compatible version try [uv](https://docs.astral.sh/uv/).
- Renamed `device_config.to_dict()` to `device_config.to_dict_control_credentials()`. `to_dict()` is still available but takes no parameters.
- From the `iot.Cloud` module the `iot.CloudInfo` class attributes have been converted to snake case.


**Breaking changes:**

- Migrate iot cloud module to mashumaro [\#1282](https://github.com/python-kasa/python-kasa/pull/1282) (@sdb9696)
- Replace custom deviceconfig serialization with mashumaru [\#1274](https://github.com/python-kasa/python-kasa/pull/1274) (@sdb9696)
- Remove support for python \<3.11 [\#1273](https://github.com/python-kasa/python-kasa/pull/1273) (@sdb9696)

**Implemented enhancements:**

- Update cli modify presets to support smart devices [\#1295](https://github.com/python-kasa/python-kasa/pull/1295) (@sdb9696)
- Use credentials\_hash for smartcamera rtsp url [\#1293](https://github.com/python-kasa/python-kasa/pull/1293) (@sdb9696)
- Add voltage and current monitoring to smart Devices [\#1281](https://github.com/python-kasa/python-kasa/pull/1281) (@ryenitcher)
- Update cli feature command for actions not to require a value [\#1264](https://github.com/python-kasa/python-kasa/pull/1264) (@sdb9696)
- Add pan tilt camera module [\#1261](https://github.com/python-kasa/python-kasa/pull/1261) (@sdb9696)
- Add alarm module for smartcamera hubs [\#1258](https://github.com/python-kasa/python-kasa/pull/1258) (@sdb9696)
- Move TAPO smartcamera out of experimental package [\#1255](https://github.com/python-kasa/python-kasa/pull/1255) (@sdb9696)
- Add SmartCamera Led Module [\#1249](https://github.com/python-kasa/python-kasa/pull/1249) (@sdb9696)
- Use component queries to select smartcamera modules [\#1248](https://github.com/python-kasa/python-kasa/pull/1248) (@sdb9696)
- Print formatting for IotLightPreset [\#1216](https://github.com/python-kasa/python-kasa/pull/1216) (@Puxtril)
- Allow getting Annotated features from modules [\#1018](https://github.com/python-kasa/python-kasa/pull/1018) (@sdb9696)
- Add common Thermostat module [\#977](https://github.com/python-kasa/python-kasa/pull/977) (@sdb9696)

**Fixed bugs:**

- TP-Link Tapo S505D cannot disable gradual on/off  [\#1309](https://github.com/python-kasa/python-kasa/issues/1309)
- Inconsistent emeter information between features and emeter cli [\#1308](https://github.com/python-kasa/python-kasa/issues/1308)
- How to dump power usage after latest updates? [\#1306](https://github.com/python-kasa/python-kasa/issues/1306)
- kasa.discover: Got unsupported connection type: 'device\_family': 'SMART.IPCAMERA' [\#1267](https://github.com/python-kasa/python-kasa/issues/1267)
- device \_\_repr\_\_ fails if no sys\_info [\#1262](https://github.com/python-kasa/python-kasa/issues/1262)
- Tapo P110M: Error processing Energy for device, module will be unavailable: get\_energy\_usage for Energy  [\#1243](https://github.com/python-kasa/python-kasa/issues/1243)
- Listing light presets throws error [\#1201](https://github.com/python-kasa/python-kasa/issues/1201)
- Include duration when disabling smooth transition on/off [\#1313](https://github.com/python-kasa/python-kasa/pull/1313) (@rytilahti)
- Expose energy command to cli [\#1307](https://github.com/python-kasa/python-kasa/pull/1307) (@rytilahti)
- Make discovery on unsupported devices less noisy [\#1291](https://github.com/python-kasa/python-kasa/pull/1291) (@rytilahti)
- Fix repr for device created with no sysinfo or discovery info" [\#1266](https://github.com/python-kasa/python-kasa/pull/1266) (@sdb9696)
- Fix discovery by alias for smart devices [\#1260](https://github.com/python-kasa/python-kasa/pull/1260) (@sdb9696)
- Make \_\_repr\_\_ work on discovery info [\#1233](https://github.com/python-kasa/python-kasa/pull/1233) (@rytilahti)

**Added support for devices:**

- Add HS200 \(US\) Smart Fixture [\#1303](https://github.com/python-kasa/python-kasa/pull/1303) (@ZeliardM)
- Add smartcamera devices to supported docs [\#1257](https://github.com/python-kasa/python-kasa/pull/1257) (@sdb9696)
- Add P110M\(AU\) fixture [\#1244](https://github.com/python-kasa/python-kasa/pull/1244) (@rytilahti)
- Add L630 fixture [\#1240](https://github.com/python-kasa/python-kasa/pull/1240) (@rytilahti)
- Add EP40M Fixture [\#1238](https://github.com/python-kasa/python-kasa/pull/1238) (@ryenitcher)
- Add KS220 Fixture [\#1237](https://github.com/python-kasa/python-kasa/pull/1237) (@ryenitcher)

**Documentation updates:**

- Use markdown footnotes in supported.md [\#1310](https://github.com/python-kasa/python-kasa/pull/1310) (@sdb9696)
- Update docs for the new module attributes has/get feature [\#1301](https://github.com/python-kasa/python-kasa/pull/1301) (@sdb9696)
- Fixup contributing.md for running test against a real device [\#1236](https://github.com/python-kasa/python-kasa/pull/1236) (@sdb9696)

**Project maintenance:**

- Rename tests/smartcamera to tests/smartcam [\#1315](https://github.com/python-kasa/python-kasa/pull/1315) (@sdb9696)
- Do not error on smartcam hub attached smartcam child devices [\#1314](https://github.com/python-kasa/python-kasa/pull/1314) (@sdb9696)
- Add P110M\(EU\) fixture [\#1305](https://github.com/python-kasa/python-kasa/pull/1305) (@sdb9696)
- Run tests with caplog in a single worker [\#1304](https://github.com/python-kasa/python-kasa/pull/1304) (@sdb9696)
- Rename smartcamera to smartcam [\#1300](https://github.com/python-kasa/python-kasa/pull/1300) (@sdb9696)
- Move iot fixtures into iot subfolder [\#1299](https://github.com/python-kasa/python-kasa/pull/1299) (@sdb9696)
- Annotate fan\_speed\_level of Fan interface [\#1298](https://github.com/python-kasa/python-kasa/pull/1298) (@sdb9696)
- Add PIR ADC Values to Test Fixtures [\#1296](https://github.com/python-kasa/python-kasa/pull/1296) (@ryenitcher)
- Exclude \_\_getattr\_\_ for deprecated attributes from type checkers [\#1294](https://github.com/python-kasa/python-kasa/pull/1294) (@sdb9696)
- Simplify omit http\_client in DeviceConfig serialization [\#1292](https://github.com/python-kasa/python-kasa/pull/1292) (@sdb9696)
- Add SMART Voltage Monitoring to Fixtures [\#1290](https://github.com/python-kasa/python-kasa/pull/1290) (@ryenitcher)
- Remove pydantic dependency [\#1289](https://github.com/python-kasa/python-kasa/pull/1289) (@sdb9696)
- Do not print out all the fixture names at the start of test runs [\#1287](https://github.com/python-kasa/python-kasa/pull/1287) (@sdb9696)
- dump\_devinfo: iot light strip commands [\#1286](https://github.com/python-kasa/python-kasa/pull/1286) (@sdb9696)
- Migrate TurnOnBehaviours to mashumaro [\#1285](https://github.com/python-kasa/python-kasa/pull/1285) (@sdb9696)
- dump\_devinfo: query smartlife.iot.common.cloud for fw updates [\#1284](https://github.com/python-kasa/python-kasa/pull/1284) (@rytilahti)
- Migrate RuleModule to mashumaro [\#1283](https://github.com/python-kasa/python-kasa/pull/1283) (@sdb9696)
- Update sphinx dependency to 6.2 to fix docs build [\#1280](https://github.com/python-kasa/python-kasa/pull/1280) (@sdb9696)
- Update DiscoveryResult to use mashu Annotated Alias [\#1279](https://github.com/python-kasa/python-kasa/pull/1279) (@sdb9696)
- Extend dump\_devinfo iot queries [\#1278](https://github.com/python-kasa/python-kasa/pull/1278) (@sdb9696)
- Migrate triggerlogs to mashumaru [\#1277](https://github.com/python-kasa/python-kasa/pull/1277) (@sdb9696)
- Migrate smart firmware module to mashumaro [\#1276](https://github.com/python-kasa/python-kasa/pull/1276) (@sdb9696)
- Migrate IotLightPreset to mashumaru [\#1275](https://github.com/python-kasa/python-kasa/pull/1275) (@sdb9696)
- Allow callable coroutines for feature setters [\#1272](https://github.com/python-kasa/python-kasa/pull/1272) (@sdb9696)
- Fix deprecated SSLContext\(\) usage [\#1271](https://github.com/python-kasa/python-kasa/pull/1271) (@sdb9696)
- Use \_get\_device\_info methods for smart and iot devs in devtools [\#1265](https://github.com/python-kasa/python-kasa/pull/1265) (@sdb9696)
- Remove experimental support [\#1256](https://github.com/python-kasa/python-kasa/pull/1256) (@sdb9696)
- Move protocol modules into protocols package [\#1254](https://github.com/python-kasa/python-kasa/pull/1254) (@sdb9696)
- Add linkcheck to readthedocs CI [\#1253](https://github.com/python-kasa/python-kasa/pull/1253) (@rytilahti)
- Update cli energy command to use energy module [\#1252](https://github.com/python-kasa/python-kasa/pull/1252) (@sdb9696)
- Consolidate warnings for fixtures missing child devices [\#1251](https://github.com/python-kasa/python-kasa/pull/1251) (@sdb9696)
- Update smartcamera fixtures with components [\#1250](https://github.com/python-kasa/python-kasa/pull/1250) (@sdb9696)
- Move transports into their own package [\#1247](https://github.com/python-kasa/python-kasa/pull/1247) (@rytilahti)
- Fix warnings in our test suite [\#1246](https://github.com/python-kasa/python-kasa/pull/1246) (@rytilahti)
- Move tests folder to top level of project [\#1242](https://github.com/python-kasa/python-kasa/pull/1242) (@sdb9696)
- Fix test framework running against real devices [\#1235](https://github.com/python-kasa/python-kasa/pull/1235) (@sdb9696)
- Add Additional Firmware Test Fixures [\#1234](https://github.com/python-kasa/python-kasa/pull/1234) (@ryenitcher)
- Update DiscoveryResult to use Mashumaro instead of pydantic [\#1231](https://github.com/python-kasa/python-kasa/pull/1231) (@sdb9696)
- Update fixture for ES20M 1.0.11 [\#1215](https://github.com/python-kasa/python-kasa/pull/1215) (@rytilahti)
- Enable ruff check for ANN [\#1139](https://github.com/python-kasa/python-kasa/pull/1139) (@rytilahti)

**Closed issues:**

- Expose Fan speed range from the library [\#1008](https://github.com/python-kasa/python-kasa/issues/1008)
- \[META\] 0.7 series - module support for SMART devices, support for introspectable device features and refactoring the library [\#783](https://github.com/python-kasa/python-kasa/issues/783)
2024-11-26 12:10:02 +00:00
Steven B.
f71450b880
Do not error on smartcam hub attached smartcam child devices (#1314) 2024-11-26 11:37:14 +00:00
Steven B.
6c42b36865
Rename tests/smartcamera to tests/smartcam (#1315) 2024-11-26 11:36:30 +00:00
Teemu R.
0c755f7120
Include duration when disabling smooth transition on/off (#1313)
Fixes #1309
2024-11-26 10:39:31 +00:00
Teemu R.
69e08c2385
Expose energy command to cli (#1307)
Co-authored-by: Steven B <51370195+sdb9696@users.noreply.github.com>
2024-11-26 09:42:55 +00:00
Steven B.
3dfada7575
Add common Thermostat module (#977) 2024-11-26 09:37:15 +00:00
Steven B.
cb4e28394d
Update docs for the new module attributes has/get feature (#1301) 2024-11-26 08:38:20 +00:00
Steven B.
fe53cd7d9c
Use markdown footnotes in supported.md (#1310)
Brings our markdown inline with the [HA
markdown](https://github.com/home-assistant/home-assistant.io/pull/33342#discussion_r1653484233)
2024-11-25 18:02:12 +01:00
Steven B.
15ecf320d9
Add P110M(EU) fixture (#1305) 2024-11-23 12:38:42 +00:00
ZeliardM
ea73b858e8
Add HS200 (US) Smart Fixture (#1303) 2024-11-23 12:31:27 +00:00
Teemu R.
d0a2ed7388
Add P110M(AU) fixture (#1244) 2024-11-23 12:30:39 +00:00
Steven B.
412c65c428
Run tests with caplog in a single worker (#1304) 2024-11-23 12:20:51 +00:00
Steven B.
2bda54fcb1
Rename smartcamera to smartcam (#1300) 2024-11-23 09:07:47 +01:00
Steven B.
b525d6a35c
Annotate fan_speed_level of Fan interface (#1298) 2024-11-22 21:21:29 +01:00
Steven B.
f4316110c9
Move iot fixtures into iot subfolder (#1299) 2024-11-22 21:19:33 +01:00
Ryan Nitcher
c5830a4cdc
Add PIR ADC Values to Test Fixtures (#1296) 2024-11-22 07:59:17 +00:00
Steven B.
37cc4da7b6
Allow getting Annotated features from modules (#1018)
Co-authored-by: Teemu R. <tpr@iki.fi>
2024-11-22 07:52:23 +00:00
Steven B.
cae9decb02
Exclude __getattr__ for deprecated attributes from type checkers (#1294) 2024-11-21 18:40:13 +00:00
Steven B.
652b4e0bd7
Use credentials_hash for smartcamera rtsp url (#1293) 2024-11-21 18:39:15 +00:00
Teemu R.
f2ba23301a
Make discovery on unsupported devices less noisy (#1291) 2024-11-21 18:22:54 +00:00
Steven B.
5221fc07ca
Simplify omit http_client in DeviceConfig serialization (#1292)
Related explanation: https://github.com/Fatal1ty/mashumaro/issues/264
2024-11-21 19:18:04 +01:00
Steven B.
879aca77d1
Update cli modify presets to support smart devices (#1295) 2024-11-21 19:10:18 +01:00
Ryan Nitcher
dab64e5d48
Add voltage and current monitoring to smart Devices (#1281) 2024-11-20 18:18:30 +00:00
Ryan Nitcher
59b047f485
Add SMART Voltage Monitoring to Fixtures (#1290) 2024-11-20 17:59:09 +00:00
Steven B.
0058ad9f2e
Remove pydantic dependency (#1289)
Remove pydantic dependency in favor of mashumaro.
2024-11-20 15:19:12 +00:00
Steven B.
f7778aaa53
Migrate RuleModule to mashumaro (#1283)
Also fixes a bug whereby multiple queries for the same module would overwrite each other.
2024-11-20 14:59:32 +00:00
Steven B.
a4258cc75b
Do not print out all the fixture names at the start of test runs (#1287) 2024-11-20 15:42:56 +01:00
Steven B.
955e7ab4d0
Migrate TurnOnBehaviours to mashumaro (#1285) 2024-11-20 15:35:51 +01:00
Steven B.
0e5013d4b4
dump_devinfo: iot light strip commands (#1286) 2024-11-20 15:06:59 +01:00
Steven B.
5eca487bcb
Migrate iot cloud module to mashumaro (#1282)
Breaking change as the CloudInfo interface is changing to snake case for
consistency with the rest of the library.
2024-11-20 14:34:26 +01:00
Steven B.
df48c21900
Migrate triggerlogs to mashumaru (#1277) 2024-11-20 13:21:08 +00:00
Teemu R.
bbe68a5fe9
dump_devinfo: query smartlife.iot.common.cloud for fw updates (#1284) 2024-11-20 13:07:02 +00:00
Steven B.
999e84d2de
Migrate smart firmware module to mashumaro (#1276) 2024-11-20 11:54:13 +00:00
Steven B.
03c073c293
Migrate IotLightPreset to mashumaru (#1275) 2024-11-20 08:37:04 +00:00
Steven B.
79ac9547e8
Replace custom deviceconfig serialization with mashumaru (#1274) 2024-11-20 08:35:32 +00:00
Steven B.
bf23f73cce
Extend dump_devinfo iot queries (#1278) 2024-11-20 00:36:16 +01:00
Steven B.
2683623997
Update DiscoveryResult to use mashu Annotated Alias (#1279) 2024-11-19 19:09:50 +00:00
Steven B.
e1e6d72222
Update sphinx dependency to 6.2 to fix docs build (#1280) 2024-11-19 19:05:11 +00:00
Steven B.
5b5a148f9a
Add pan tilt camera module (#1261)
Add ptz controls for smartcameras.

---------

Co-authored-by: Teemu R. <tpr@iki.fi>
2024-11-19 10:11:51 +00:00
Steven B.
a01247d48f
Remove support for python <3.11 (#1273)
Python 3.11 ships with latest Debian Bookworm. 
pypy is not that widely used with this library based on statistics. It could be added back when pypy supports python 3.11.
2024-11-18 18:46:36 +00:00
Steven B.
0c40939624
Allow callable coroutines for feature setters (#1272) 2024-11-18 14:53:49 +00:00
Steven B.
e209d40a6d
Use _get_device_info methods for smart and iot devs in devtools (#1265) 2024-11-18 14:53:11 +00:00