From e8260d494275c36259b7339255a9eb5febc58266 Mon Sep 17 00:00:00 2001 From: Andrew Date: Sun, 16 Aug 2026 11:47:54 -0400 Subject: [PATCH 1/2] fix: name B01 Q7 code 2103 and document dock dust-collection state fields MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Live capture on a Q7 M5+ (roborock.vacuum.sc05, fw 03.01.80) through a completed clean, docking, and auto-empty shows: - fault 2102 (cleaning_complete) at completion/return, then 2103 the moment the task finishes on the dock, persisting while docked-idle — 2103 is a benign task notification, now named cleaning_complete_docked. - station_act=3 with dust_action=1 during the ~30s auto-empty cycle; both return to 0 after. dust_action is read-only (prop.set rejected with code 1). Documented on the container fields. Evidence timeline in Python-roborock/python-roborock#919 (comment). --- roborock/data/b01_q7/b01_q7_code_mappings.py | 7 ++++++- roborock/data/b01_q7/b01_q7_containers.py | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/roborock/data/b01_q7/b01_q7_code_mappings.py b/roborock/data/b01_q7/b01_q7_code_mappings.py index b1c910b84..1b9b6374e 100644 --- a/roborock/data/b01_q7/b01_q7_code_mappings.py +++ b/roborock/data/b01_q7/b01_q7_code_mappings.py @@ -290,7 +290,12 @@ class B01Fault(RoborockModeEnum): # charging. F_2101 = ("fault_2101", 2101) F_2102 = ("cleaning_complete", 2102) # Cleaning completed. Returning to the dock. - F_2103 = ("fault_2103", 2103) + F_2103 = ( + "cleaning_complete_docked", + 2103, + ) # Task finished; robot docked (follows 2102 once docking and any auto-empty complete). hw-confirmed + # (Q7 M5+): appears immediately after a completed clean's dock + dust collection and persists while + # docked-idle; not an error. F_2104 = ("fault_2104", 2104) F_2105 = ("fault_2105", 2105) F_2108 = ("fault_2108", 2108) diff --git a/roborock/data/b01_q7/b01_q7_containers.py b/roborock/data/b01_q7/b01_q7_containers.py index a75b71856..958d1dc26 100644 --- a/roborock/data/b01_q7/b01_q7_containers.py +++ b/roborock/data/b01_q7/b01_q7_containers.py @@ -137,11 +137,11 @@ class B01Props(RoborockBase): custom_type: int | None = None sound: int | None = None work_mode: WorkModeMapping | None = None - station_act: int | None = None + station_act: int | None = None # dock activity; 3 while collecting dust, 0 idle. hw-confirmed (Q7 M5+) charge_state: int | None = None current_map_id: int | None = None map_num: int | None = None - dust_action: int | None = None + dust_action: int | None = None # 1 while the dock is collecting dust; read-only (prop.set rejected, code 1) quiet_is_open: int | None = None quiet_begin_time: int | None = None quiet_end_time: int | None = None From ce77e995dd24321a5a9255fbaa826ce57659be96 Mon Sep 17 00:00:00 2001 From: Andrew Date: Sun, 16 Aug 2026 12:08:50 -0400 Subject: [PATCH 2/2] chore: reflow F_2103 comment --- roborock/data/b01_q7/b01_q7_code_mappings.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/roborock/data/b01_q7/b01_q7_code_mappings.py b/roborock/data/b01_q7/b01_q7_code_mappings.py index 1b9b6374e..bdc5ff208 100644 --- a/roborock/data/b01_q7/b01_q7_code_mappings.py +++ b/roborock/data/b01_q7/b01_q7_code_mappings.py @@ -293,9 +293,8 @@ class B01Fault(RoborockModeEnum): F_2103 = ( "cleaning_complete_docked", 2103, - ) # Task finished; robot docked (follows 2102 once docking and any auto-empty complete). hw-confirmed - # (Q7 M5+): appears immediately after a completed clean's dock + dust collection and persists while - # docked-idle; not an error. + ) # Task finished and robot docked. Follows 2102 once docking and any auto-empty complete; persists + # while docked-idle. Not an error (hw-confirmed on a Q7 M5+). F_2104 = ("fault_2104", 2104) F_2105 = ("fault_2105", 2105) F_2108 = ("fault_2108", 2108)