Repository navigation
Conversation
infy1995
marked this pull request as draft
November 13, 2026 20:13
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of the "Dock controls" item in #738: V1 dock mop wash settings and the wash tray self-clean.
Depends on #1036 (this branch is based on it; the first two commits belong to #1036). I will rebase onto
mainonce #1036 is merged.Changes
WashWaterTemperatureTrait(PropertiesApi.wash_water_temperature)get_wash_water_temperature;set_wash_water_temperature(temperature)sendsset_wash_water_temperaturewith{"values": <code>}. The device answers reads withwash_water_temperature, but rejects that key on writes (-10007 invalid params).RoborockDockWashWaterTemperatureCode: room_temperature 0, warm 1, hot 2, steam 3, pet_steam 4.wash_water_temperature_optionsfrom the pureget_wash_water_temperatures(dock_features): room temperature and hot always, warm on high temperature docks and docks without steam, steam only on steam docks, pet steam never.is_hot_wash_towel_supported, so docks that cannot heat wash water get no temperature control.CleaningFluidTrait(PropertiesApi.cleaning_fluid), the app's cleaning fluid auto-deliveryget_auto_delivery_cleaning_fluid;set_cleaning_fluid(mode)sendsset_auto_delivery_cleaning_fluidwith{"status": <code>}.RoborockDockCleaningFluidCode: off 0, standard 1, large 3. Code 2 is not used by the app.dock_features.is_clean_fluid_auto_delivery_supported.SmartWashParamsTrait(the app's mop wash frequency)SmartWashParams.smart_washis nowRoborockDockSmartWashModeCode | None(by_time 0, by_room 1, new_smart 2) instead ofint | None. It is anIntEnum, so integer comparisons keep working.smart_wash_mode_options: by time and by room, plus new smart withis_back_wash_new_smart_supported.wash_interval_options: 600, 900, 1200, 1500 s.set_smart_wash_params(mode, wash_interval)sends both values together.DeviceFeaturesTraitand is created indiscover_features(), likeWashTowelModeTrait.WashTowelModeTraitset_wash_towel_mode(mode)now rejects a mode outsidewash_towel_mode_optionsbefore sending.self_clean_tray()sendsapp_amethyst_self_check, gated bydock_features.is_clean_carousel_self_clean_supported.stop_wash()stops a running self-clean early, like the stop button in the app.RoborockUnsupportedFeaturefor a value the device does not offer, send nothing in that case, and update the trait state only after the command succeeds.docs/V1_API_COMMANDS.md: entries for the new commands and formats,get/set_smart_wash_paramscodes,set_wash_towel_modecodes,app_amethyst_self_check.Wire formats
get_wash_water_temperature→{"wash_water_temperature": n};set_wash_water_temperature{"values": n}get/set_auto_delivery_cleaning_fluid,{"status": n}get/set_smart_wash_params,{"smart_wash": n, "wash_interval": s}get/set_wash_towel_mode,{"wash_mode": n}WashTowelModes)app_amethyst_self_check, no params; stopped byapp_stop_washCodes, option lists and write formats come from the Roborock app's V1 device plugins, and were confirmed on a Saros 10R (
roborock.vacuum.a144, dock type 16).Behavior changes for consumers
set_wash_towel_mode()now raisesRoborockUnsupportedFeaturefor a mode outsidewash_towel_mode_options. Callers that pick from that list (as Home Assistant does) are unaffected.SmartWashParams.smart_washis an enum instead of a plain int (see above).Testing
uv run pre-commit run --all-files: all hooks pass.uv run pytest: 2489 passed. Each commit passes on its own.tests/devices/traits/v1/(test_wash_water_temperature.py,test_cleaning_fluid.py,test_smart_wash_params.py,test_wash_towel_mode.py): option lists, setter commands, rejection of unoffered values without sending, state unchanged after a failed command, unknown firmware codes, trait availability per dock type and per hot wash feature.self_clean_tray()the robot state went fromchargingtowashing_the_mop(wash_phase11) and the app showed the self-clean;stop_wash()ended it within 3 s, with the same status changes as the stop button in the app.