From 54147e3401cd07539f36ca48a98ecd7769041a49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20BOU=C3=89?= <132135057+lboue@users.noreply.github.com> Date: Mon, 6 Apr 2026 15:55:25 +0200 Subject: [PATCH 1/2] fix: use YXCleanType for Q10Status.clean_mode instead of YXDeviceWorkMode DPS 137 (CLEAN_MODE) reports clean type values (1=vac+mop, 2=vacuum, 3=mop) which map to YXCleanType, not YXDeviceWorkMode. --- roborock/data/b01_q10/b01_q10_containers.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/roborock/data/b01_q10/b01_q10_containers.py b/roborock/data/b01_q10/b01_q10_containers.py index 4b3fb3ce..393eb231 100644 --- a/roborock/data/b01_q10/b01_q10_containers.py +++ b/roborock/data/b01_q10/b01_q10_containers.py @@ -12,9 +12,9 @@ from .b01_q10_code_mappings import ( B01_Q10_DP, YXBackType, + YXCleanType, YXDeviceCleanTask, YXDeviceState, - YXDeviceWorkMode, YXFanLevel, YXWaterLevel, ) @@ -103,7 +103,7 @@ class Q10Status(RoborockBase): side_brush_life: int | None = field(default=None, metadata={"dps": B01_Q10_DP.SIDE_BRUSH_LIFE}) filter_life: int | None = field(default=None, metadata={"dps": B01_Q10_DP.FILTER_LIFE}) sensor_life: int | None = field(default=None, metadata={"dps": B01_Q10_DP.SENSOR_LIFE}) - clean_mode: YXDeviceWorkMode | None = field(default=None, metadata={"dps": B01_Q10_DP.CLEAN_MODE}) + clean_mode: YXCleanType | None = field(default=None, metadata={"dps": B01_Q10_DP.CLEAN_MODE}) clean_task_type: YXDeviceCleanTask | None = field(default=None, metadata={"dps": B01_Q10_DP.CLEAN_TASK_TYPE}) back_type: YXBackType | None = field(default=None, metadata={"dps": B01_Q10_DP.BACK_TYPE}) cleaning_progress: int | None = field(default=None, metadata={"dps": B01_Q10_DP.CLEAN_PROGRESS}) From 691f926d319a9aed82e24d79e76c8516c63c6d3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20BOU=C3=89?= <132135057+lboue@users.noreply.github.com> Date: Mon, 6 Apr 2026 16:07:30 +0200 Subject: [PATCH 2/2] test: assert clean_mode maps DPS 137 to YXCleanType in status refresh test Co-Authored-By: Claude Sonnet 4.6 --- tests/devices/traits/b01/q10/test_status.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/devices/traits/b01/q10/test_status.py b/tests/devices/traits/b01/q10/test_status.py index 9e526c7e..8e2588ad 100644 --- a/tests/devices/traits/b01/q10/test_status.py +++ b/tests/devices/traits/b01/q10/test_status.py @@ -11,6 +11,7 @@ from roborock.data.b01_q10.b01_q10_code_mappings import ( B01_Q10_DP, + YXCleanType, YXDeviceCleanTask, YXDeviceState, YXFanLevel, @@ -153,6 +154,7 @@ async def test_status_trait_refresh( assert q10_api.status.sensor_life == 0 assert q10_api.status.cleaning_progress == 100 assert q10_api.status.fault == 0 + assert q10_api.status.clean_mode == YXCleanType.VAC_AND_MOP def test_status_trait_update_listener(q10_api: Q10PropertiesApi) -> None: