fix: enable Qrevo Master wash/fill dock features (code 14 dock, Roborock QRevo S5A) #866
Conversation
There was a problem hiding this comment.
Pull request overview
This PR updates dock capability detection so RoborockDockTypeCode.qrevo_master_dock (dock type 14) is treated as a wash/fill dock, restoring downstream feature/entity availability that depends on is_wash_n_fill_dock() (e.g., Home Assistant’s wash-related entities).
Changes:
- Add
RoborockDockTypeCode.qrevo_master_docktoWASH_N_FILL_DOCK_TYPES. - Add a focused regression test asserting
qrevo_master_dockis recognized as a wash/fill dock.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| roborock/device_features.py | Includes qrevo_master_dock in wash/fill dock detection. |
| tests/devices/traits/v1/test_device_features.py | Adds regression test for is_wash_n_fill_dock(qrevo_master_dock). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
Thank you for this PR! This has been something on my TODO list for a while now as we handle dock types a little poorly and rigidly. Inspired by this PR, I have actually made a PR that will solve a bit more of the problem at once and add a number of new dock types: I'm going to close out this PR as mine will handle a bit more, but I sincerely appreciate you making this PR! |
Summary
Adds
RoborockDockTypeCode.qrevo_master_docktoWASH_N_FILL_DOCK_TYPESso dock type14is treated as a wash/fill dock.I noticed that with the HA 2026.7 update, by Qrevo S5A dock stopped showing the tank entities and strainer entity.
Why
HA 2026.7 diagnostics show a Qrevo Master dock reporting
dockType: 14, which maps toRoborockDockTypeCode.qrevo_master_dock. The same dock reports wash-capable data, butpython-roborockcurrently excludes it fromWASH_N_FILL_DOCK_TYPES, sois_wash_n_fill_dock()returnsFalse.That causes the V1
wash_towel_modetrait to be skipped. Downstream in Home Assistant,wash_towel_mode is not Nonegates the clean-water, dirty-water, and strainer entities, so those entities can become stale/restored for this dock even though the underlying dock data is available.Sanitized diagnostics comparison:
Changes
roborock/device_features.py: addqrevo_master_docktoWASH_N_FILL_DOCK_TYPES.tests/devices/traits/v1/test_device_features.py: add a focused regression test provingis_wash_n_fill_dock(RoborockDockTypeCode.qrevo_master_dock)is true.Testing