Handle module errors more robustly and add query params to light preset and transition#1036
Handle module errors more robustly and add query params to light preset and transition#1036
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.
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.
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.
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.
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) (@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
datain_post_update_hookin a safe manner and disable themselves if there's an error.It also adds parameters to
get_preset_rulesandget_on_off_gradually_infoto fix issues with recent firmware updates. #1033.