@@ -289,6 +289,64 @@ class YXCarpetCleanType(RoborockModeEnum):
289289 CROSS = "cross" , 3
290290
291291
292+ class YXFault (RoborockModeEnum ):
293+ """Q10 (B01/ss07) ``dpFault`` (90) codes, seeded from the ss07 app's fault i18n.
294+
295+ ``dpFault`` is *overloaded*: several values are lifecycle/status rather than
296+ errors (e.g. 400 = scheduled clean starting, 501 = returning to dock,
297+ 502 = recharge). A non-zero fault is only a *blocking* error when the app
298+ routes the code into its ``D_ErrorCode`` bucket; alert/offline codes are softer.
299+
300+ These labels follow the ss07 app text, which differs from the Q7 ``B01Fault``
301+ for several shared numbers (500, 501, 503, 569, 570) -- so this is a
302+ Q10-specific map, not a reuse of ``B01Fault``. Codes marked "seen live" were
303+ observed as raw ``dpFault`` values on a physical ss07; the rest are
304+ app-sourced only (n=1, not hardware-confirmed).
305+ """
306+
307+ UNKNOWN = "unknown" , - 1
308+ NONE = "none" , 0
309+ LIDAR_BLOCKED = "lidar_blocked" , 1
310+ BUMPER_STUCK = "bumper_stuck" , 2
311+ ROBOT_SUSPENDED = "robot_suspended" , 3
312+ CLIFF_SENSOR_ERROR = "cliff_sensor_error" , 4
313+ MAIN_BRUSH_STUCK = "main_brush_stuck" , 5
314+ MAIN_WHEELS_STUCK = "main_wheels_stuck" , 7
315+ ROBOT_TRAPPED = "robot_trapped" , 8 # seen live
316+ CHECK_DUSTBIN_FILTER = "check_dustbin_filter" , 9
317+ LOW_BATTERY = "low_battery" , 12
318+ TEMPERATURE_THRESHOLD = "temperature_threshold" , 14
319+ ROBOT_TILTED = "robot_tilted" , 16
320+ LIDAR_COVER_OBSTRUCTED = "lidar_cover_obstructed" , 21
321+ NO_GO_ZONE_DETECTED = "no_go_zone_detected" , 24
322+ MOPPING_MODULE_STUCK = "mopping_module_stuck" , 27
323+ CARPET_AVOIDANCE = "carpet_avoidance" , 28
324+ CANNOT_CROSS_CARPET = "cannot_cross_carpet" , 29
325+ INSTALL_DUST_BAG = "install_dust_bag" , 46
326+ MOP_MOUNT_FELL_OFF = "mop_mount_fell_off" , 54
327+ LIDAR_DIRTY = "lidar_dirty" , 58
328+ FILTER_SERVICE_LIFE = "filter_service_life" , 301
329+ MAIN_BRUSH_SERVICE_LIFE = "main_brush_service_life" , 302
330+ SIDE_BRUSH_SERVICE_LIFE = "side_brush_service_life" , 303
331+ SENSOR_NEEDS_CLEANING = "sensor_needs_cleaning" , 304
332+ DUST_BAG_FULL = "dust_bag_full" , 310
333+ STARTING_SCHEDULED_CLEAN = "starting_scheduled_clean" , 400 # seen live; lifecycle, not an error
334+ CLEANING_IN_PROGRESS = "cleaning_in_progress" , 407
335+ EMPTY_DUSTBIN = "empty_dustbin" , 500 # ss07 != Q7 B01Fault (lidar_blocked)
336+ CLEANING_COMPLETED_RETURNING = "cleaning_completed_returning" , 501 # ss07 != Q7 (robot_suspended)
337+ LOW_BATTERY_RESUME = "low_battery_resume" , 502
338+ DOCKING_ERROR = "docking_error" , 503 # seen live; ss07 != Q7 (dustbin_not_installed)
339+ POSITIONING_FAILED = "positioning_failed" , 556 # seen live; relocalization
340+ TOO_FREQUENT_EMPTYING = "too_frequent_emptying" , 569 # ss07 != Q7 (main_wheels_entangled)
341+ CANNOT_REACH_TARGET = "cannot_reach_target" , 570 # seen live; ss07 != Q7 (main_brush_entangled)
342+ OFFLINE_WARNING_ASLEEP = "offline_warning_asleep" , 588
343+ OFFLINE_WARNING_LOW_BATTERY = "offline_warning_low_battery" , 589
344+ DND_AUTO_TOPUP_DISABLED = "dnd_auto_topup_disabled" , 591
345+ CLEAN_CARPET_ULTRASONIC_SENSORS = "clean_carpet_ultrasonic_sensors" , 707
346+ ROBOT_ERROR_RESET = "robot_error_reset" , 1002
347+ VOICE_PACK_UPDATE_AVAILABLE = "voice_pack_update_available" , 3001
348+
349+
292350class RemoteCommand (IntEnum ):
293351 FORWARD = 0
294352 LEFT = 2
0 commit comments