Skip to content

Water-slide device reports custom mode but capability-derived options exclude it (Qrevo Edge 2 Flow) #977

Open

Description

@vize69

Device and evidence

Roborock Qrevo Edge 2 Flow (roborock.vacuum.a328), python-roborock 7.12.0, Home Assistant 2026.10.0b1 / 2026.10.0b3.

The device diagnostic reports:

is_water_slide_mode_supported = True
is_customized_clean_supported = True
is_smart_clean_mode_set_supported = True
is_support_water_mode = True
fanPower = 106
waterBoxMode = 204
mopMode = 302

get_current_cleaning_mode(106, 204, 302, features) returns custom. However, get_water_modes() returns immediately for water-slide devices, omitting CUSTOMIZED and SMART_MODE. get_cleaning_mode_options() therefore excludes custom, and HA's select state is unknown because the current value is not an allowed option.

Important compatibility question

Current upstream test_cleaning_mode_options_water_slide_device explicitly expects custom/smart to be absent even when both flags are true. This report presents real-device readback that challenges that assumption; it does not assume all slider devices support writing these modes.

A local candidate adds special modes and their 204/209 mappings when the corresponding capability flag is true. Native HA custom readback then displayed correctly. Smart-mode readback and mode writes were NOT tested on this hardware. Maintainers should decide whether the capability flags suffice or additional model/firmware gating is required before exposing writable options generally.

Relation to #961

PR #961 fixes ordinary water-slide numeric decoding and command encoding. Its inspected diff does not alter the early-return option list, so it does not address this custom-mode case. Please keep this issue distinct from the alias fix and the independent history-order issue #976.

Reproduction and validation

Our local 36-check exact-source offline reproducer demonstrates that the original decoder recognizes custom while the options omit it. It tests the local candidate, ordinary slide codes, legacy fallback, unknown inputs and disabled feature flags. RPCs are mocked; no full upstream CI run is claimed. The patch is a candidate for review, not a universally verified device-support change.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions