From de45199950b417b7f1fb8a2045396e7fb4b1d638 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20BOU=C3=89?= Date: Sat, 21 Mar 2026 16:14:13 +0100 Subject: [PATCH 1/2] fix: add missing DPS fields to Q10Status and fix CLEAN_PROGRESS mapping --- roborock/data/b01_q10/b01_q10_containers.py | 9 ++++++++- tests/devices/traits/b01/q10/test_status.py | 11 +++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/roborock/data/b01_q10/b01_q10_containers.py b/roborock/data/b01_q10/b01_q10_containers.py index 562c7062..296d5484 100644 --- a/roborock/data/b01_q10/b01_q10_containers.py +++ b/roborock/data/b01_q10/b01_q10_containers.py @@ -96,7 +96,14 @@ class Q10Status(RoborockBase): fan_level: YXFanLevel | None = field(default=None, metadata={"dps": B01_Q10_DP.FAN_LEVEL}) water_level: YXWaterLevel | None = field(default=None, metadata={"dps": B01_Q10_DP.WATER_LEVEL}) clean_count: int | None = field(default=None, metadata={"dps": B01_Q10_DP.CLEAN_COUNT}) + total_clean_area: int | None = field(default=None, metadata={"dps": B01_Q10_DP.TOTAL_CLEAN_AREA}) + total_clean_count: int | None = field(default=None, metadata={"dps": B01_Q10_DP.TOTAL_CLEAN_COUNT}) + total_clean_time: int | None = field(default=None, metadata={"dps": B01_Q10_DP.TOTAL_CLEAN_TIME}) + main_brush_life: int | None = field(default=None, metadata={"dps": B01_Q10_DP.MAIN_BRUSH_LIFE}) + 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_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.CLEANING_PROGRESS}) + cleaning_progress: int | None = field(default=None, metadata={"dps": B01_Q10_DP.CLEAN_PROGRESS}) diff --git a/tests/devices/traits/b01/q10/test_status.py b/tests/devices/traits/b01/q10/test_status.py index 8fbbd19a..f17e65ef 100644 --- a/tests/devices/traits/b01/q10/test_status.py +++ b/tests/devices/traits/b01/q10/test_status.py @@ -112,6 +112,9 @@ async def test_status_trait_refresh( assert q10_api.status.battery is None assert q10_api.status.status is None assert q10_api.status.fan_level is None + assert q10_api.status.total_clean_count is None + assert q10_api.status.main_brush_life is None + assert q10_api.status.cleaning_progress is None # Mock the response to refresh # battery (122) = 100 @@ -140,6 +143,14 @@ async def test_status_trait_refresh( assert q10_api.status.battery == 100 assert q10_api.status.status == YXDeviceState.CHARGING_STATE assert q10_api.status.fan_level == YXFanLevel.BALANCED + assert q10_api.status.total_clean_area == 0 + assert q10_api.status.total_clean_count == 0 + assert q10_api.status.total_clean_time == 0 + assert q10_api.status.main_brush_life == 0 + assert q10_api.status.side_brush_life == 0 + assert q10_api.status.filter_life == 0 + assert q10_api.status.sensor_life == 0 + assert q10_api.status.cleaning_progress == 100 def test_status_trait_update_listener(q10_api: Q10PropertiesApi) -> None: From a4220a0d7bcd2dabd5528244b15beca503b8d9d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20BOU=C3=89?= Date: Sat, 21 Mar 2026 16:36:51 +0100 Subject: [PATCH 2/2] fix: correct comment for fan level in test_status_trait_refresh --- tests/devices/traits/b01/q10/test_status.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/devices/traits/b01/q10/test_status.py b/tests/devices/traits/b01/q10/test_status.py index f17e65ef..8a800dfe 100644 --- a/tests/devices/traits/b01/q10/test_status.py +++ b/tests/devices/traits/b01/q10/test_status.py @@ -119,7 +119,7 @@ async def test_status_trait_refresh( # Mock the response to refresh # battery (122) = 100 # status (121) = 8 (CHARGING_STATE) - # fun_level (123) = 2 (NORMAL) + # fan_level (123) = 2 (BALANCED) message = build_message(TESTDATA_DP_REQUEST_DPS) # Send a refresh command