Skip to content

feat: add QV 35A dock type code (21) to RoborockDockTypeCode#865

Closed
epinethrone wants to merge 1 commit into
Python-roborock:mainfrom
epinethrone:feat/add-qv-35a-dock-type-21
Closed

feat: add QV 35A dock type code (21) to RoborockDockTypeCode#865
epinethrone wants to merge 1 commit into
Python-roborock:mainfrom
epinethrone:feat/add-qv-35a-dock-type-21

Conversation

@epinethrone

Copy link
Copy Markdown

Summary

Adds dock type 21 — the wash/fill/dry dock shipped with the Roborock QV 35A (roborock.vacuum.a168) — to RoborockDockTypeCode and to WASH_N_FILL_DOCK_TYPES.

This mirrors #829 (which added the Qrevo S5V, 22).

Fixes #864.

Why

The QV 35A's dock reports dock_type: 21, which had no enum member, so RoborockDockTypeCode(21) fell back to unknown. That made is_wash_n_fill_dock() return False, which skips the wash_towel_mode trait at setup (Trait 'wash_towel_mode' not supported, skipping). Downstream in Home Assistant, the clean-water-box, dirty-water-box and strainer entities are gated on wash_towel_mode is not None, so they were permanently unavailable — even though the device reports the underlying data (dss for the tank statuses, strainer_work_times in the consumables payload).

Verified on a real QV 35A (firmware 02.36.38): after adding the dock type, is_wash_n_fill_dock is True and the trait is set up as expected. Clean-fluid delivery is not supported on this dock (is_clean_fluid_delivery_supported = False), so the clean_fluid_empty entity correctly remains absent.

Changes

  • roborock/data/v1/v1_code_mappings.py: add qv_35a_dock = 21.
  • roborock/device_features.py: add RoborockDockTypeCode.qv_35a_dock to WASH_N_FILL_DOCK_TYPES.
  • Tests: a dedicated test_qv_35a_dock_type, plus the new dock type added to the wash_towel_mode / dust_collection_mode / smart_wash_params trait parametrizations — same coverage feat: add Qrevo S5V dock type code (22) to RoborockDockTypeCode #829 added.

Testing

pytest tests/data/ tests/devices/traits/v1/test_wash_towel_mode.py \
       tests/devices/traits/v1/test_dust_collection_mode.py \
       tests/devices/traits/v1/test_smart_wash_params.py \
       tests/test_supported_features.py tests/devices/traits/v1/test_device_features.py

All pass (snapshots unchanged).

The Roborock QV 35A (roborock.vacuum.a168) ships a wash/fill/dry dock
that reports dock_type 21, which was missing from RoborockDockTypeCode.
It therefore resolved to unknown, is_wash_n_fill_dock() returned False,
and the wash_towel_mode trait was skipped - leaving the clean-water,
dirty-water and strainer entities unavailable in downstream consumers
despite the device reporting the data (dss, strainer_work_times).

Mirrors Python-roborock#829 (Qrevo S5V, 22). Fixes Python-roborock#864.
@Lash-L

Lash-L commented Jul 7, 2026

Copy link
Copy Markdown
Collaborator

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:

#867

I'm going to close out this PR as mine will handle a bit more, but I sincerely appreciate you making this PR!

@Lash-L Lash-L closed this Jul 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Dock type 21 (Roborock QV 35A / roborock.vacuum.a168) missing from RoborockDockTypeCode → wash/fill dock entities unavailable

2 participants