Skip to content

Add support for cleaning records #945

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
merged 23 commits into from
Jan 20, 2025
Merged

Add support for cleaning records #945

merged 23 commits into from
Jan 20, 2025

Conversation

rytilahti
Copy link
Member

@rytilahti rytilahti commented Jun 2, 2024

Adds the following sensors:

Total area cleaned (total_clean_area): 47 <AreaUnit.Sqm: 0>
Total time cleaned (total_clean_time): 0:01:17
Last area cleaned (last_clean_area): 16 <AreaUnit.Sqm: 0>
Last time cleaned (last_clean_time): 0:00:25
Total clean count (total_clean_count): 3
Last clean timestamp (last_clean_timestamp): 2025-01-13 20:45:45

@rytilahti rytilahti added the enhancement New feature or request label Jun 2, 2024
@rytilahti rytilahti force-pushed the feat/vacuum_consumables branch from 556e1c6 to 65236c7 Compare November 29, 2024 17:47
@rytilahti rytilahti force-pushed the feat/vacuum_consumables branch 2 times, most recently from d806d98 to 15b389b Compare November 30, 2024 16:19
@rytilahti rytilahti changed the base branch from feat/vacuum to feat/tokentransport November 30, 2024 16:19
Base automatically changed from feat/tokentransport to master December 1, 2024 17:06
@rytilahti rytilahti force-pushed the feat/vacuum_consumables branch from 15b389b to 5928683 Compare December 2, 2024 12:52
Copy link

codecov bot commented Dec 2, 2024

Codecov Report

Attention: Patch coverage is 97.52066% with 3 lines in your changes missing coverage. Please review.

Project coverage is 92.53%. Comparing base (bca5576) to head (4b5e78c).
Report is 40 commits behind head on master.

Files with missing lines Patch % Lines
kasa/cli/vacuum.py 92.00% 1 Missing and 1 partial ⚠️
kasa/smart/modules/cleanrecords.py 98.88% 0 Missing and 1 partial ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #945      +/-   ##
==========================================
+ Coverage   92.47%   92.53%   +0.06%     
==========================================
  Files         142      144       +2     
  Lines        8874     8994     +120     
  Branches      899      905       +6     
==========================================
+ Hits         8206     8323     +117     
- Misses        487      488       +1     
- Partials      181      183       +2     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@rytilahti rytilahti force-pushed the feat/vacuum_consumables branch 4 times, most recently from ae96f5d to 06ddb58 Compare January 14, 2025 23:52
@rytilahti rytilahti changed the base branch from master to feat/vacuum_clean_info January 14, 2025 23:57
@rytilahti rytilahti marked this pull request as ready for review January 14, 2025 23:58
@rytilahti rytilahti requested a review from sdb9696 January 14, 2025 23:58
Base automatically changed from feat/vacuum_clean_info to master January 15, 2025 13:20
@rytilahti rytilahti force-pushed the feat/vacuum_consumables branch from 06ddb58 to 5a551ce Compare January 15, 2025 13:21
@rytilahti rytilahti changed the title Initial support for cleaning records Add support for cleaning records Jan 15, 2025
Comment on lines +302 to +303
if isinstance(unit, Enum):
unit = repr(unit)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we should have some helper to print out pretty units? Not necessarily in this PR, tho.

Comment on lines +37 to +42
info_num: int | None = None
message: int | None = None
map_id: int | None = None
start_type: int | None = None
task_type: int | None = None
record_index: int | None = None
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This are currently unused, perhaps avoid defining them in the dataclass at all for now?

class CleanRecords(SmartModule):
"""Implementation of vacuum cleaning records."""

REQUIRED_COMPONENT = "clean_percent"
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This may not be the correct component, but unsure what else should be used here. clean?

@rytilahti rytilahti force-pushed the feat/vacuum_consumables branch from 21ef029 to 4a97f9b Compare January 15, 2025 18:10
@rytilahti rytilahti force-pushed the feat/vacuum_consumables branch from 4a97f9b to a01fa62 Compare January 15, 2025 18:14
@sdb9696 sdb9696 merged commit 0508546 into master Jan 20, 2025
18 checks passed
@sdb9696 sdb9696 deleted the feat/vacuum_consumables branch January 20, 2025 11:41
rytilahti added a commit that referenced this pull request Jan 20, 2025
Co-authored-by: Steven B. <51370195+sdb9696@users.noreply.github.com>
@sdb9696 sdb9696 mentioned this pull request Jan 22, 2025
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
Labels
enhancement New feature or request no-stale
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants