-
-
Notifications
You must be signed in to change notification settings - Fork 223
Handle module errors more robustly and add query params to light preset and transition #1036
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
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #1036 +/- ##
==========================================
+ Coverage 91.98% 92.03% +0.04%
==========================================
Files 84 84
Lines 5762 5798 +36
Branches 1395 1400 +5
==========================================
+ Hits 5300 5336 +36
Misses 356 356
Partials 106 106 ☔ View full report in Codecov by Sentry. |
def query(self) -> dict: | ||
"""Query to execute during the update cycle.""" | ||
return {} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A lot of the hub child devices appear to incorrectly expose a module query even though they don't call/access any modules. In order to support the self.data
check in this PR they need to expose an empty query dict.
if not isinstance(self.data, dict): | ||
_LOGGER.warning( | ||
"No data available for module, skipping %s: %s", self, self.data | ||
) | ||
return | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No longer required or reachable as the self.data
check in this PR would cause the module to be removed before _initialize_features
is called.
return SmartRequest( | ||
"get_on_off_gradually_info", params or SmartRequest.SmartRequestParams() | ||
) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This still needs to be tested as working with the affected devices. Will send an empty {}
instead of null
for params.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
get_on_off_gradually_info
now confirmed as working in #1033
…et and transition (#1043) Ensures that all modules try to access their data in `_post_update_hook` in a safe manner and disable themselves if there's an error. Also adds parameters to get_preset_rules and get_on_off_gradually_info to fix issues with recent firmware updates. Cherry pick of [#1036](#1036) to patch
## [0.7.1](https://github.com/python-kasa/python-kasa/tree/0.7.1) (2024-07-31) [Full Changelog](0.7.0.5...0.7.1) **Release highlights:** - This release consists mainly of bugfixes and project improvements. - There is also new support for Tapo T100 motion sensors. - The CLI now supports child devices on all applicable commands. **Implemented enhancements:** - Expose reboot action [\#1073](#1073) (@rytilahti) - Decrypt KLAP data from PCAP files [\#1041](#1041) (@clstrickland) - Support child devices in all applicable cli commands [\#1020](#1020) (@sdb9696) **Fixed bugs:** - Fix iot light effect brightness [\#1092](#1092) (@sdb9696) - Enable setting brightness with color temp for smart devices [\#1091](#1091) (@sdb9696) - Do not send light\_on value to iot bulb set\_state [\#1090](#1090) (@sdb9696) - Allow erroring modules to recover [\#1080](#1080) (@sdb9696) - Raise KasaException on decryption errors [\#1078](#1078) (@sdb9696) - Update smart request parameter handling [\#1061](#1061) (@sdb9696) - Fix light preset module when list contains lighting effects [\#1048](#1048) (@sdb9696) - Handle module errors more robustly and add query params to light preset and transition [\#1036](#1036) (@sdb9696) - Fix credential hash to return None on empty credentials [\#1029](#1029) (@sdb9696) **Added support for devices:** - Add support for T100 motion sensor [\#1079](#1079) (@rytilahti) **Project maintenance:** - Bump project version to 0.7.0.5 [\#1087](#1087) (@sdb9696) - Fix generate\_supported pre commit to run in venv [\#1085](#1085) (@sdb9696) - Fix intermittently failing decryption error test [\#1082](#1082) (@sdb9696) - Fix mypy pre-commit hook on windows [\#1081](#1081) (@sdb9696) - Update RELEASING.md for patch releases [\#1076](#1076) (@sdb9696) - Use monotonic time for query timing [\#1070](#1070) (@sdb9696) - Fix parse\_pcap\_klap on windows and support default credentials [\#1068](#1068) (@sdb9696) - Add fixture file for KP405 fw 1.0.6 [\#1063](#1063 8EFD ) (@daleye) - Bump project version to 0.7.0.3 [\#1053](#1053) (@sdb9696) - Add KP400\(US\) v1.0.4 fixture [\#1051](#1051) (@gimpy88) - Add new HS220 kasa aes fixture [\#1050](#1050) (@sdb9696) - Add KS205\(US\) v1.1.0 fixture [\#1049](#1049) (@gimpy88) - Add KS200M\(US\) v1.0.11 fixture [\#1047](#1047) (@sdb9696) - Add KS225\(US\) v1.1.0 fixture [\#1046](#1046) (@sdb9696) - Split out main cli module into lazily loaded submodules [\#1039](#1039) (@sdb9696) - Structure cli into a package [\#1038](#1038) (@sdb9696) - Add KP400 v1.0.3 fixture [\#1037](#1037) (@gimpy88) - Add L920\(EU\) v1.1.3 fixture [\#1031](#1031) (@rytilahti) - Update changelog generator config [\#1030](#1030) (@sdb9696)
This PR ensures that all modules try to access their
data
in_post_update_hook
in a safe manner and disable themselves if there's an error.It also adds parameters to
get_preset_rules
andget_on_off_gradually_info
to fix issues with recent firmware updates. #1033.