-
-
Notifications
You must be signed in to change notification settings - Fork 221
Update test framework to support smartcam device discovery. #1477
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #1477 +/- ##
=======================================
Coverage 92.56% 92.56%
=======================================
Files 146 146
Lines 9141 9148 +7
Branches 932 933 +1
=======================================
+ Hits 8461 8468 +7
Misses 491 491
Partials 189 189 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
This was referenced Jan 23, 2025
Merged
sdb9696
added a commit
that referenced
this pull request
Jan 26, 2025
## [0.10.0](https://github.com/python-kasa/python-kasa/tree/0.10.0) (2025-01-26) [Full Changelog](0.9.1...0.10.0) **Release summary:** This release brings support for many new devices, including completely new device types: - Support for Tapo robot vacuums. Special thanks to @steveredden, @MAXIGAMESSUPPER, and veep60 for helping to get this implemented! - Support for hub attached cameras and doorbells (H200) - Improved support for hubs (including pairing & better chime controls) - Support for many new camera and doorbell device models, including C220, C720, D100C, D130, and D230 Many thanks to testers and new contributors - @steveredden, @DawidPietrykowski, @Obbay2, @andrewome, @ryenitcher and @etmmvdp! **Breaking changes:** - `uses_http` is now a readonly property of device config. Consumers that relied on `uses_http` to be persisted with `DeviceConfig.to_dict()` will need to store the value separately. - `is_color`, `is_dimmable`, `is_variable_color_temp`, `valid_temperate_range`, and `has_effects` attributes from the `Light` module are deprecated, consumers should use `has_feature("hsv")`, `has_feature("brightness")`, `has_feature("color_temp")`, `get_feature("color_temp").range`, and `Module.LightEffect in dev.modules` respectively. Calling the deprecated attributes will emit a `DeprecationWarning` and type checkers will fail them. - `alarm_volume` on the `smart.Alarm` module is changed from `str` to `int` **Breaking changes:** - Make uses\_http a readonly property of device config [\#1449](#1449) (@sdb9696) - Allow passing alarm parameter overrides [\#1340](#1340) (@rytilahti) - Deprecate legacy light module is\_capability checks [\#1297](#1297) (@sdb9696) **Implemented enhancements:** - Expose more battery sensors for D230 [\#1451](#1451) - dumping HTTP POST Body for Tapo Vacuum \(RV30 Plus\) [\#937](#937) - Add common alarm interface [\#1479](#1479) (@sdb9696) - Add common childsetup interface [\#1470](#1470) (@sdb9696) - Add childsetup module to smartcam hubs [\#1469](#1469) (@sdb9696) - Add smartcam pet detection toggle module [\#1465](#1465) (@DawidPietrykowski) - Only log one warning per unknown clean error code and status [\#1462](#1462) (@rytilahti) - Add childlock module for vacuums [\#1461](#1461) (@rytilahti) - Add ultra mode \(fanspeed = 5\) for vacuums [\#1459](#1459) (@rytilahti) - Add setting to change carpet clean mode [\#1458](#1458) (@rytilahti) - Add setting to change clean count [\#1457](#1457) (@rytilahti) - Add mop module [\#1456](#1456) (@rytilahti) - Enable dynamic hub child creation and deletion on update [\#1454](#1454) (@sdb9696) - Expose current cleaning information [\#1453](#1453) (@rytilahti) - Add battery module to smartcam devices [\#1452](#1452) (@sdb9696) - Allow update of camera modules after setting values [\#1450](#1450) (@sdb9696) - Update hub children on first update and delay subsequent updates [\#1438](#1438) (@sdb9696) - Add support for doorbells and chimes [\#1435](#1435) (@steveredden) - Implement vacuum dustbin module \(dust\_bucket\) [\#1423](#1423) (@rytilahti) - Allow https for klaptransport [\#1415](#1415) (@rytilahti) - Add smartcam child device support for smartcam hubs [\#1413](#1413) (@sdb9696) - Add powerprotection module [\#1337](#1337) (@rytilahti) - Add vacuum speaker controls [\#1332](#1332) (@rytilahti) - Add consumables module for vacuums [\#1327](#1327) (@rytilahti) - Add ADC Value to PIR Enabled Switches [\#1263](#1263) (@ryenitcher) - Add support for cleaning records [\#945](#945) (@rytilahti) - Initial support for vacuums \(clean module\) [\#944](#944) (@rytilahti) - Add support for pairing devices with hubs [\#859](#859) (@rytilahti) **Fixed bugs:** - TP-Link HS300 Wi-Fi Power-Strip - "Parent On/Off" not functioning. [\#637](#637) - Convert carpet\_clean\_mode to carpet\_boost switch [\#1486](#1486) (@rytilahti) - Change category for empty dustbin feature from Primary to Config [\#1485](#1485) (@rytilahti) - Report 0 for instead of None for zero current and voltage [\#1483](#1483) (@ryenitcher) - Disable iot camera creation until more complete [\#1480](#1480) (@sdb9696) - ssltransport: use debug logger for sending requests [\#1443](#1443) (@rytilahti) - Fix discover cli command with host [\#1437](#1437) (@sdb9696) - Fallback to is\_low for batterysensor's battery\_low [\#1420](#1420) (@rytilahti) - Fix iot strip turn on and off from parent [\#639](#639) (@Obbay2) **Added support for devices:** - Add D130\(US\) 1.0 1.1.9 fixture [\#1476](#1476) (@sdb9696) - Add D100C\(US\) 1.0 1.1.3 fixture [\#1475](#1475) (@sdb9696) - Add C220\(EU\) 1.0 1.2.2 camera fixture [\#1466](#1466) (@DawidPietrykowski) - Add D230\(EU\) 1.20 1.1.19 fixture [\#1448](#1448) (@sdb9696) - Add fixture for C720 camera [\#1433](#1433) (@steveredden) **Project maintenance:** - Update ruff to 0.9 [\#1482](#1482) (@sdb9696) - Cancel in progress CI workflows after new pushes [\#1481](#1481) (@sdb9696) - Update test framework to support smartcam device discovery. [\#1477](#1477) (@sdb9696) - Add error code 7 for clean module [\#1474](#1474) (@rytilahti) - Enable CI workflow on PRs to feat/ fix/ and janitor/ [\#1471](#1471) (@sdb9696) - Add commit-hook to prettify JSON files [\#1455](#1455) (@rytilahti) - Add required sphinx.configuration [\#1446](#1446) (@rytilahti) - Add more redactors for smartcams [\#1439](#1439) (@sdb9696) - Add KS230\(US\) 2.0 1.0.11 IOT Fixture [\#1430](#1430) (@ZeliardM) - Add tests for dump\_devinfo parent/child smartcam fixture generation [\#1428](#1428) (@sdb9696) - Raise errors on single smartcam child requests [\#1427](#1427) (@sdb9696)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The PR adds
SMARTCAM
devices to the defaultdiscovery_mock
filter and patchesDiscover._decrypt_discovery_data
so it doesn't error. To better support testing, the quite involved logic to derive connection parameters from a discovery result, is moved into a static method so it can be used in the tests. This makes the code a lot more readable as well.Additionally, adding a hub to the list of readme examples mock devices in #1470 causes the
on_discovered
callbacks to complete in a different order to the order the devices are declared in thedict
.The change of order is non-deterministic and is different based on the environment (the order locally differed from macos CI for example). This PR introduces a queue in the
discovery_mock
to ensure the discovery callbacks complete in the same order that they started. They always start in the same order they were declared in the mock.