Skip to content

fix(dyad): add steam and hot water clean modes - #1015

Merged
allenporter merged 3 commits into
Python-roborock:mainfrom
infy1995:fix/dyad-clean-mode-steam-hot-water
Nov 8, 2026
Merged

allenporter merged 3 commits into
Python-roborock:mainfrom
infy1995:fix/dyad-clean-mode-steam-hot-water

Conversation

@infy1995

@infy1995 infy1995 commented Nov 7, 2026

Copy link
Copy Markdown
Contributor

Summary

The Roborock F25 Ultra reports DyadCleanMode (DP 205) codes that the library does not know, which produces warnings in Home Assistant and decodes the heated modes as auto:

WARNING [roborock.data.code_mappings] Missing DyadCleanMode code: 6 - defaulting to 1
WARNING [roborock.data.code_mappings] Missing DyadCleanMode code: 5 - defaulting to 1

Changes

  • Add hot_water = 5 and steam = 6 to DyadCleanMode.
  • Add an explicit unknown = -1 member, per the enum fallback rules in AGENTS.md, so future unknown codes fall back to unknown instead of auto. DyadCleanMode is removed from the KNOWN_ENUMS_MISSING_UNKNOWN baseline accordingly.
  • Note that the F25 Ultra reports its "Sponge" mode as code 3 (dehydration). The name is kept so existing Dyad models are unaffected.
  • Add a test covering codes 5, 6 and an unknown code.

Verification on a real device

Mapping confirmed on an F25 Ultra by switching modes in order Steam → Hot water → Sponge → Auto with debug logging enabled:

{"dps":{"205":6,"238":3}}                                   # Steam
{"dps":{"205":5,"238":3}}                                   # Hot water
{"dps":{"205":3,"238":3,"244":3,"245":2}}                   # Sponge
{"dps":{"205":1,"206":3,"207":4,"208":2,"238":3}}           # Auto

The branch was also installed in Home Assistant 2026.11.0 (as a custom component override); the warnings no longer appear.

DPs 238, 244 and 245 are not part of RoborockDyadDataProtocol yet; they are left for a separate change.

Tests

  • pytest tests/data/test_code_mappings.py tests/conformance tests/devices/traits/a01 tests/devices/test_a01_traits.py: 405 passed, 52 xfailed
  • ruff check / ruff format --check on changed files: clean

The F25 Ultra reports DyadCleanMode codes 5 (hot water) and 6 (steam),
which were logged as missing and decoded as "auto". Add both modes and an
explicit `unknown` member so future unknown codes no longer masquerade as
"auto".
@allenporter
allenporter merged commit ba86fec into Python-roborock:main Nov 8, 2026
9 checks passed
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.

2 participants