roborock.data.mower.mower_code_mappings
Code mappings for Roborock mower devices.
1"""Code mappings for Roborock mower devices.""" 2 3import logging 4from typing import Self, cast 5 6from roborock.data.code_mappings import RoborockModeEnum 7 8_LOGGER = logging.getLogger(__name__) 9 10__all__ = [ 11 "MowerAfsStatus", 12 "MowerChargeState", 13 "MowerChargeType", 14 "MowerConfMode", 15 "MowerDetailState", 16 "MowerDockState", 17 "MowerEffMode", 18 "MowerEnum", 19 "MowerErrorCode", 20 "MowerFcState", 21 "MowerMappingState", 22 "MowerMappingType", 23 "MowerMowState", 24 "MowerMowType", 25 "MowerNetworkChannel", 26 "MowerOffDockNoTaskStatus", 27 "MowerOfflineStatus", 28 "MowerOtaState", 29 "MowerPattern", 30 "MowerPendType", 31 "MowerRemoteState", 32 "MowerStartType", 33] 34 35 36class MowerEnum(RoborockModeEnum): 37 """Base for mower enums.""" 38 39 @classmethod 40 def from_code(cls, code: int | str) -> Self: 41 """Resolve a wire value by name, string value, or integer code.""" 42 if (member := cls.from_any_optional(code)) is not None: 43 return member 44 _LOGGER.debug("Unknown %s code %r; defaulting to UNKNOWN", cls.__name__, code) 45 return cast(Self, cls.UNKNOWN) # type: ignore[attr-defined] 46 47 48class MowerMowType(MowerEnum): 49 """Mowing task selection reported by DPS 122.""" 50 51 UNKNOWN = ("unknown", -1) 52 NONE = ("none", 0) 53 GLOBAL = ("global", 1) 54 EDGE = ("edge", 2) 55 SELECTION = ("selection", 3) 56 ZONING = ("zoning", 4) 57 REMOTE = ("remote", 5) 58 RANDOM = ("random", 6) 59 60 61class MowerMowState(MowerEnum): 62 """Compact mowing state (MowStateDpValue.Type).""" 63 64 UNKNOWN = ("unknown", -1) 65 IDLE = ("idle", 0) 66 ZIGZAG_MOWING = ("zigzag_mowing", 1) 67 EDGE_MOWING = ("edge_mowing", 2) 68 TRANSITION = ("transition", 3) 69 SUSPENDED = ("suspended", 4) 70 REMOTE_WALKING = ("remote_walking", 5) 71 REMOTE_MOWING = ("remote_mowing", 6) 72 73 74class MowerMappingType(MowerEnum): 75 """Mapping operation reported by DPS 124.""" 76 77 UNKNOWN = ("unknown", -1) 78 NONE = ("none", 0) 79 LAWN_MAPPING = ("lawn_mapping", 1) 80 FORBIDDEN_ZONE_MAPPING = ("forbidden_zone_mapping", 2) 81 CHANNEL_MAPPING = ("channel_mapping", 3) 82 SPLIT_WORKSPACE = ("split_workspace", 4) 83 MERGE_WORKSPACE = ("merge_workspace", 5) 84 BOUNDARY_MODIFY = ("boundary_modify", 6) 85 86 87class MowerMappingState(MowerEnum): 88 """Mapping activity reported by DPS 125.""" 89 90 UNKNOWN = ("unknown", -1) 91 IDLE = ("idle", 0) 92 AUTO_MAPPING = ("auto_mapping", 1) 93 TRACK_ERASE = ("track_erase", 2) 94 SUSPENDED = ("suspended", 3) 95 SAVING_MAP = ("saving_map", 4) 96 REMOTE_WALKING = ("remote_walking", 5) 97 REMOTE_MAPPING = ("remote_mapping", 6) 98 99 100class MowerOtaState(MowerEnum): 101 """Firmware update state reported by DPS 126.""" 102 103 UNKNOWN = ("unknown", -1) 104 IDLE = ("idle", 0) 105 DOWNLOADING = ("downloading", 1) 106 INSTALLING = ("installing", 2) 107 REBOOTING = ("rebooting", 3) 108 109 110class MowerChargeState(MowerEnum): 111 """Charging state reported by DPS 127.""" 112 113 UNKNOWN = ("unknown", -1) 114 NOT_CHARGING = ("not_charging", 0) 115 CHARGING = ("charging", 1) 116 CHARGE_COMPLETED = ("charge_completed", 2) 117 WAITING_CHARGE = ("waiting_charge", 3) 118 LOW_POWER = ("low_power", 4) 119 CHARGE_ERROR = ("charge_error", 5) 120 121 122class MowerDockState(MowerEnum): 123 """Return-to-dock state reported by DPS 128.""" 124 125 UNKNOWN = ("unknown", -1) 126 IDLE = ("idle", 0) 127 MOVING_TO_TARGET = ("moving_to_target", 1) 128 DOCKING = ("docking", 2) 129 SUSPENDED = ("suspended", 3) 130 131 132class MowerChargeType(MowerEnum): 133 """Reason for returning to charge reported by DPS 129.""" 134 135 UNKNOWN = ("unknown", 0) 136 MANUAL_DOCK = ("manual_dock", 1) 137 RAIN_DOCK = ("rain_dock", 2) 138 DO_NOT_DISTURB_DOCK = ("do_not_disturb_dock", 3) 139 STANDBY_TIMEOUT_DOCK = ("standby_timeout_dock", 4) 140 LOW_BATTERY_DOCK = ("low_battery_dock", 5) 141 TASK_FINISHED_DOCK = ("task_finished_dock", 6) 142 MOW_FAULT_DOCK = ("mow_fault_dock", 7) 143 144 145class MowerPendType(MowerEnum): 146 """Pause or interruption reason reported by DPS 130.""" 147 148 UNKNOWN = ("unknown", -1) 149 NOT_SUSPENDED = ("not_suspended", 0) 150 APP_PAUSE = ("app_pause", 1) 151 BUTTON_EMERGENCY_STOP = ("button_emergency_stop", 2) 152 FAULT = ("fault", 3) 153 BREAKPOINT_PAUSE = ("breakpoint_pause", 4) 154 OTHER = ("other", 5) 155 156 157class MowerRemoteState(MowerEnum): 158 """Remote control state reported by DPS 131.""" 159 160 UNKNOWN = ("unknown", -1) 161 IDLE = ("idle", 0) 162 VIDEO_REMOTE = ("video_remote", 1) 163 REMOTE_WALKING = ("remote_walking", 2) 164 165 166class MowerStartType(MowerEnum): 167 """Task start trigger reported by DPS 132.""" 168 169 UNKNOWN = ("unknown", -1) 170 DEFAULT = ("default", 0) 171 APP_START = ("app_start", 1) 172 BUTTON_START = ("button_start", 2) 173 SCHEDULE_START = ("schedule_start", 3) 174 175 176class MowerEffMode(MowerEnum): 177 """Reported efficiency mode on DPS 133.""" 178 179 UNKNOWN = ("unknown", 0) 180 DAILY = ("daily", 1) 181 PRECISE = ("precise", 2) 182 FAST = ("fast", 3) 183 184 185class MowerPattern(MowerEnum): 186 """Reported mowing pattern on DPS 136.""" 187 188 UNKNOWN = ("unknown", 0) 189 ZIGZAG = ("zigzag", 1) 190 WELL = ("well", 2) 191 DIAMOND = ("diamond", 3) 192 TRIANGLE = ("triangle", 4) 193 AUTO_DEFLECT = ("auto_deflect", 5) 194 RANDOM = ("random", 6) 195 196 197class MowerConfMode(MowerEnum): 198 """Preference configuration scope on DPS 137.""" 199 200 UNKNOWN = ("unknown", 0) 201 GLOBAL_CONFIG = ("global_config", 1) 202 ZONE_CUSTOM = ("zone_custom", 2) 203 204 205class MowerOfflineStatus(MowerEnum): 206 """Shutdown or reboot reason on DPS 138.""" 207 208 UNKNOWN = ("unknown", -1) 209 ONLINE = ("online", 0) 210 MANUAL_SHUTDOWN = ("manual_shutdown", 1) 211 SLEEP_SHUTDOWN = ("sleep_shutdown", 2) 212 LOW_BATTERY_SHUTDOWN = ("low_battery_shutdown", 3) 213 UPGRADE_REBOOT = ("upgrade_reboot", 4) 214 215 216class MowerFcState(MowerEnum): 217 """Factory or test mode indicator on DPS 141.""" 218 219 UNKNOWN = ("unknown", -1) 220 NOT_FC = ("not_fc", 0) 221 FC = ("fc", 1) 222 223 224class MowerOffDockNoTaskStatus(MowerEnum): 225 """Mower off-dock status without an active task on DPS 143.""" 226 227 UNKNOWN = ("unknown", 0) 228 WAITING = ("waiting", 1) 229 SUSPENDING = ("suspending", 2) 230 DOCKING = ("docking", 3) 231 REMOTING = ("remoting", 4) 232 233 234class MowerAfsStatus(MowerEnum): 235 """Service status on DPS 144.""" 236 237 UNKNOWN = ("unknown", -1) 238 IDLE = ("idle", 0) 239 BIT = ("bit", 1) 240 MMT_OBA = ("mmt_oba", 2) 241 CALIBRATION = ("calibration", 3) 242 ACTIVE = ("active", 4) 243 INACTIVE = ("inactive", 5) 244 245 246class MowerNetworkChannel(MowerEnum): 247 """Current network route on DPS 145.""" 248 249 UNKNOWN = ("unknown", 0) 250 WLAN0 = ("wlan0", 1) 251 WLAN1 = ("wlan1", 2) 252 MOBILE_4G = ("mobile_4g", 3) 253 254 255class MowerDetailState(MowerEnum): 256 """Detailed task state reported on DPS 123 and in GET_ROBOT_INFO replies.""" 257 258 UNKNOWN = ("unknown", 0) 259 260 MAP_INITIALIZING = ("map_initializing", 1) 261 MAP_UNDOCKING = ("map_undocking", 2) 262 MAP_UNDOCK_FAULT = ("map_undock_fault", 3) 263 MAP_LOCATING = ("map_locating", 4) 264 MAP_PREPARE_BOUNDARY = ("map_prepare_boundary", 5) 265 MAP_PREPARE_ISLAND = ("map_prepare_island", 6) 266 MAP_PREPARE_PATH = ("map_prepare_path", 7) 267 MAP_BOUNDARY = ("map_boundary", 8) 268 MAP_ISLAND = ("map_island", 9) 269 MAP_PATH = ("map_path", 10) 270 MAP_BOUNDARY_AUTO = ("map_boundary_auto", 11) 271 # The protocol spelling "MAP_ERASEING" is intentional. 272 MAP_ERASING = ("map_eraseing", 12) 273 MAP_SAVE = ("map_save", 13) 274 MAP_WAIT = ("map_wait", 14) 275 MAP_RECOVERABLE_FAULT = ("map_recoverable_fault", 15) 276 MAP_FAULT = ("map_fault", 16) 277 MAP_EMERGENCY_STOP = ("map_emergency_stop", 17) 278 MAP_WAITING_FAULT = ("map_waiting_fault", 18) 279 MAP_NO_AVOID = ("map_no_avoid", 19) 280 MAP_PREPARE_NO_AVOID = ("map_prepare_no_avoid", 20) 281 MAP_RESET_PASSAGE = ("map_reset_passage", 21) 282 MAP_PREPARE_RESET_PASSAGE = ("map_prepare_reset_passage", 22) 283 MAP_EDIT_BOUNDARY = ("map_edit_boundary", 23) 284 MAP_PREPARE_EDIT_BOUNDARY = ("map_prepare_edit_boundary", 24) 285 MAP_CONFIRM_EDIT_BOUNDARY = ("map_confirm_edit_boundary", 25) 286 287 MOW_INITIALIZING = ("mow_initializing", 51) 288 MOW_UNDOCKING = ("mow_undocking", 52) 289 MOW_LOCATING = ("mow_locating", 53) 290 MOW_ADJUST_CUTTER = ("mow_adjust_cutter", 54) 291 MOW_ZIG_ZAG = ("mow_zig_zag", 55) 292 MOW_EDGE = ("mow_edge", 56) 293 MOW_GOTO = ("mow_goto", 57) 294 MOW_SUSPEND = ("mow_suspend", 58) 295 MOW_RECOVERABLE_FAULT = ("mow_recoverable_fault", 59) 296 MOW_FAULT = ("mow_fault", 60) 297 MOW_DOCK_RAINFALL = ("mow_dock_rainfall", 61) 298 MOW_DOCK_NOTDISTURB = ("mow_dock_notdisturb", 62) 299 MOW_DOCK_LOW_BATTERY = ("mow_dock_low_battery", 63) 300 MOW_WAIT = ("mow_wait", 64) 301 MOW_PREPARE_REMOTE = ("mow_prepare_remote", 65) 302 MOW_REMOTE = ("mow_remote", 66) 303 MOW_EMERGENCY_STOP = ("mow_emergency_stop", 67) 304 MOW_DOCK_MANUAL = ("mow_dock_manual", 68) 305 MOW_DOCK_FAULT = ("mow_dock_fault", 69) 306 MOW_REMOTE_UNDOCKING = ("mow_remote_undocking", 70) 307 MOW_TO_DOCK_INITIALIZING = ("mow_to_dock_initializing", 71) 308 MOW_TO_DOCK_LOCATING = ("mow_to_dock_locating", 72) 309 MOW_TO_DOCK_RECOVERABLE_FAULT = ("mow_to_dock_recoverable_fault", 73) 310 MOW_TO_DOCK_FAULT = ("mow_to_dock_fault", 74) 311 MOW_TO_DOCK_EMERGENCY_STOP = ("mow_to_dock_emergency_stop", 75) 312 MOW_TO_DOCK_CHARGING = ("mow_to_dock_charging", 76) 313 MOW_TO_DOCK_CHARGE_COMPLETED = ("mow_to_dock_charge_completed", 77) 314 MOW_PAUSE = ("mow_pause", 78) 315 316 FREE = ("free", 101) 317 FREE_INITIALIZING = ("free_initializing", 102) 318 FREE_LOCATING = ("free_locating", 103) 319 FREE_DOCK_MANUAL = ("free_dock_manual", 104) 320 FREE_DOCK_MOW_END = ("free_dock_mow_end", 105) 321 FREE_DOCK_PLAN_END = ("free_dock_plan_end", 106) 322 FREE_EMERGENCY_STOP = ("free_emergency_stop", 107) 323 FREE_RECOVERABLE_FAULT = ("free_recoverable_fault", 108) 324 FREE_FAULT = ("free_fault", 109) 325 FREE_BATTERY_HOLD_MODE = ("free_battery_hold_mode", 110) 326 327 CHARGING = ("charging", 151) 328 CHARGE_COMPLETED = ("charge_completed", 152) 329 CHARGE_WAITING = ("charge_waiting", 153) 330 CHARGE_FAULT = ("charge_fault", 154) 331 332 333class MowerErrorCode(MowerEnum): 334 """User-facing error code reported by DPS 120.""" 335 336 UNKNOWN = ("unknown", 0) 337 MAIN_CUTTER_OVER_CURRENT = ("main_cutter_over_current", 1) 338 MAIN_CUTTER_OVER_TEMPERATURE = ("main_cutter_over_temperature", 2) 339 MAIN_CUTTER_DYNAMIC_UNBALANCE = ("main_cutter_dynamic_unbalance", 3) 340 EDGE_CUTTER_OVER_CURRENT = ("edge_cutter_over_current", 4) 341 EDGE_CUTTER_OVER_TEMPERATURE = ("edge_cutter_over_temperature", 5) 342 EDGE_CUTTER_DYNAMIC_UNBALANCE = ("edge_cutter_dynamic_unbalance", 6) 343 HEIGHT_MODULE_ADJUSTING_INCOMPLETE = ("height_module_adjusting_incomplete", 7) 344 TRAVEL_MOTOR_LEFT_FRONT_OVER_CURRENT = ("travel_motor_left_front_over_current", 8) 345 TRAVEL_MOTOR_RIGHT_FRONT_OVER_CURRENT = ("travel_motor_right_front_over_current", 9) 346 TRAVEL_MOTOR_LEFT_REAR_OVER_CURRENT = ("travel_motor_left_rear_over_current", 10) 347 TRAVEL_MOTOR_RIGHT_REAR_OVER_CURRENT = ("travel_motor_right_rear_over_current", 11) 348 TRAVEL_MOTOR_OVER_TEMPERATURE = ("travel_motor_over_temperature", 12) 349 STEERING_MOTOR_LEFT_FRONT_OVER_CURRENT = ("steering_motor_left_front_over_current", 13) 350 STEERING_MOTOR_RIGHT_FRONT_OVER_CURRENT = ("steering_motor_right_front_over_current", 14) 351 STEERING_MOTOR_OVER_TEMPERATURE = ("steering_motor_over_temperature", 15) 352 STOP = ("stop", 16) 353 TILT = ("tilt", 17) 354 LIFT = ("lift", 18) 355 FLIP = ("flip", 19) 356 OUT_OF_BOUND = ("out_of_bound", 20) 357 BUMPER = ("bumper", 21) 358 BATTERY_DISCHARGE_OVER_TEMPERATURE = ("battery_discharge_over_temperature", 22) 359 BATTERY_DISCHARGE_LOW_TEMPERATURE = ("battery_discharge_low_temperature", 23) 360 BATTERY_UNOFFICIAL = ("battery_unofficial", 24) 361 DIRTY_CHARGING_CLIPS = ("dirty_charging_clips", 25) 362 CHARGE_STATION_NO_POWER = ("charge_station_no_power", 26) 363 CAMERA_DIRTY_OR_OBSTRUCTED = ("camera_dirty_or_obstructed", 27) 364 CAMERA_OVER_TEMPERATURE = ("camera_over_temperature", 28) 365 CAMERA_LED_OBSTRUCTED = ("camera_led_obstructed", 29) 366 LIDAR_DIRTY = ("lidar_dirty", 30) 367 LIDAR_OVER_TEMPERATURE = ("lidar_over_temperature", 31) 368 LOCATION_FAILED = ("location_failed", 32) 369 LOCATION_AT_ISLAND = ("location_at_island", 33) 370 LOCATION_AT_NON_COMPLIANT_SLOPE = ("location_at_non_compliant_slope", 34) 371 BE_TRAPPED = ("be_trapped", 35) 372 CHARGE_STATION_OR_RTK_SLIGHT_MOVEMENT_DOCK = ("charge_station_or_rtk_slight_movement_dock", 36) 373 N_RTK_SIGNIFICANT_MOVEMENT = ("n_rtk_significant_movement", 37) 374 RTK_SIGNIFICANT_MOVEMENT = ("rtk_significant_movement", 38) 375 DOCK_CHARGE_STATION_SEARCH_FAIL = ("dock_charge_station_search_fail", 39) 376 DOCK_QRCODE_SCAN_FAIL = ("dock_qrcode_scan_fail", 40) 377 DOCK_ADJUST_ERROR = ("dock_adjust_error", 41) 378 UNDOCK_ERROR = ("undock_error", 42) 379 BATTERY_CHARGE_OVER_TEMPERATURE = ("battery_charge_over_temperature", 43) 380 BATTERY_CHARGE_LOW_TEMPERATURE = ("battery_charge_low_temperature", 44) 381 CAMERA_SEVERELY_DIRTY = ("camera_severely_dirty", 45) 382 NO_PLUGIN_KEY = ("no_plugin_key", 46) 383 CAMERA_REAR_SIDE_DIRTY = ("camera_rear_side_dirty", 48) 384 N_RTK_NETWORK_ERROR = ("n_rtk_network_error", 55) 385 MAIN_CUTTER_FAULT = ("main_cutter_fault", 101) 386 EDGE_CUTTER_FAULT = ("edge_cutter_fault", 102) 387 HEIGHT_MODULE_FAULT = ("height_module_fault", 103) 388 BATTERY_FAULT = ("battery_fault", 104) 389 CAMERA_FAULT = ("camera_fault", 105) 390 CAMERA_LED_FAULT = ("camera_led_fault", 106) 391 MAIN_BOARD_FAULT = ("main_board_fault", 107) 392 LIDAR_FAULT = ("lidar_fault", 108) 393 TRAVEL_MOTOR_LEFT_FRONT_FAULT = ("travel_motor_left_front_fault", 109) 394 TRAVEL_MOTOR_RIGHT_FRONT_FAULT = ("travel_motor_right_front_fault", 110) 395 TRAVEL_MOTOR_LEFT_REAR_FAULT = ("travel_motor_left_rear_fault", 111) 396 TRAVEL_MOTOR_RIGHT_REAR_FAULT = ("travel_motor_right_rear_fault", 112) 397 STEERING_MOTOR_LEFT_FRONT_FAULT = ("steering_motor_left_front_fault", 113) 398 STEERING_MOTOR_RIGHT_FRONT_FAULT = ("steering_motor_right_front_fault", 114) 399 LED_SCREEN_FAULT = ("led_screen_fault", 115) 400 LEFT_SIDE_CAMERA_FAULT = ("left_side_camera_fault", 116) 401 RIGHT_SIDE_CAMERA_FAULT = ("right_side_camera_fault", 117) 402 REAR_SIDE_CAMERA_FAULT = ("rear_side_camera_fault", 118)
235class MowerAfsStatus(MowerEnum): 236 """Service status on DPS 144.""" 237 238 UNKNOWN = ("unknown", -1) 239 IDLE = ("idle", 0) 240 BIT = ("bit", 1) 241 MMT_OBA = ("mmt_oba", 2) 242 CALIBRATION = ("calibration", 3) 243 ACTIVE = ("active", 4) 244 INACTIVE = ("inactive", 5)
Service status on DPS 144.
111class MowerChargeState(MowerEnum): 112 """Charging state reported by DPS 127.""" 113 114 UNKNOWN = ("unknown", -1) 115 NOT_CHARGING = ("not_charging", 0) 116 CHARGING = ("charging", 1) 117 CHARGE_COMPLETED = ("charge_completed", 2) 118 WAITING_CHARGE = ("waiting_charge", 3) 119 LOW_POWER = ("low_power", 4) 120 CHARGE_ERROR = ("charge_error", 5)
Charging state reported by DPS 127.
133class MowerChargeType(MowerEnum): 134 """Reason for returning to charge reported by DPS 129.""" 135 136 UNKNOWN = ("unknown", 0) 137 MANUAL_DOCK = ("manual_dock", 1) 138 RAIN_DOCK = ("rain_dock", 2) 139 DO_NOT_DISTURB_DOCK = ("do_not_disturb_dock", 3) 140 STANDBY_TIMEOUT_DOCK = ("standby_timeout_dock", 4) 141 LOW_BATTERY_DOCK = ("low_battery_dock", 5) 142 TASK_FINISHED_DOCK = ("task_finished_dock", 6) 143 MOW_FAULT_DOCK = ("mow_fault_dock", 7)
Reason for returning to charge reported by DPS 129.
198class MowerConfMode(MowerEnum): 199 """Preference configuration scope on DPS 137.""" 200 201 UNKNOWN = ("unknown", 0) 202 GLOBAL_CONFIG = ("global_config", 1) 203 ZONE_CUSTOM = ("zone_custom", 2)
Preference configuration scope on DPS 137.
256class MowerDetailState(MowerEnum): 257 """Detailed task state reported on DPS 123 and in GET_ROBOT_INFO replies.""" 258 259 UNKNOWN = ("unknown", 0) 260 261 MAP_INITIALIZING = ("map_initializing", 1) 262 MAP_UNDOCKING = ("map_undocking", 2) 263 MAP_UNDOCK_FAULT = ("map_undock_fault", 3) 264 MAP_LOCATING = ("map_locating", 4) 265 MAP_PREPARE_BOUNDARY = ("map_prepare_boundary", 5) 266 MAP_PREPARE_ISLAND = ("map_prepare_island", 6) 267 MAP_PREPARE_PATH = ("map_prepare_path", 7) 268 MAP_BOUNDARY = ("map_boundary", 8) 269 MAP_ISLAND = ("map_island", 9) 270 MAP_PATH = ("map_path", 10) 271 MAP_BOUNDARY_AUTO = ("map_boundary_auto", 11) 272 # The protocol spelling "MAP_ERASEING" is intentional. 273 MAP_ERASING = ("map_eraseing", 12) 274 MAP_SAVE = ("map_save", 13) 275 MAP_WAIT = ("map_wait", 14) 276 MAP_RECOVERABLE_FAULT = ("map_recoverable_fault", 15) 277 MAP_FAULT = ("map_fault", 16) 278 MAP_EMERGENCY_STOP = ("map_emergency_stop", 17) 279 MAP_WAITING_FAULT = ("map_waiting_fault", 18) 280 MAP_NO_AVOID = ("map_no_avoid", 19) 281 MAP_PREPARE_NO_AVOID = ("map_prepare_no_avoid", 20) 282 MAP_RESET_PASSAGE = ("map_reset_passage", 21) 283 MAP_PREPARE_RESET_PASSAGE = ("map_prepare_reset_passage", 22) 284 MAP_EDIT_BOUNDARY = ("map_edit_boundary", 23) 285 MAP_PREPARE_EDIT_BOUNDARY = ("map_prepare_edit_boundary", 24) 286 MAP_CONFIRM_EDIT_BOUNDARY = ("map_confirm_edit_boundary", 25) 287 288 MOW_INITIALIZING = ("mow_initializing", 51) 289 MOW_UNDOCKING = ("mow_undocking", 52) 290 MOW_LOCATING = ("mow_locating", 53) 291 MOW_ADJUST_CUTTER = ("mow_adjust_cutter", 54) 292 MOW_ZIG_ZAG = ("mow_zig_zag", 55) 293 MOW_EDGE = ("mow_edge", 56) 294 MOW_GOTO = ("mow_goto", 57) 295 MOW_SUSPEND = ("mow_suspend", 58) 296 MOW_RECOVERABLE_FAULT = ("mow_recoverable_fault", 59) 297 MOW_FAULT = ("mow_fault", 60) 298 MOW_DOCK_RAINFALL = ("mow_dock_rainfall", 61) 299 MOW_DOCK_NOTDISTURB = ("mow_dock_notdisturb", 62) 300 MOW_DOCK_LOW_BATTERY = ("mow_dock_low_battery", 63) 301 MOW_WAIT = ("mow_wait", 64) 302 MOW_PREPARE_REMOTE = ("mow_prepare_remote", 65) 303 MOW_REMOTE = ("mow_remote", 66) 304 MOW_EMERGENCY_STOP = ("mow_emergency_stop", 67) 305 MOW_DOCK_MANUAL = ("mow_dock_manual", 68) 306 MOW_DOCK_FAULT = ("mow_dock_fault", 69) 307 MOW_REMOTE_UNDOCKING = ("mow_remote_undocking", 70) 308 MOW_TO_DOCK_INITIALIZING = ("mow_to_dock_initializing", 71) 309 MOW_TO_DOCK_LOCATING = ("mow_to_dock_locating", 72) 310 MOW_TO_DOCK_RECOVERABLE_FAULT = ("mow_to_dock_recoverable_fault", 73) 311 MOW_TO_DOCK_FAULT = ("mow_to_dock_fault", 74) 312 MOW_TO_DOCK_EMERGENCY_STOP = ("mow_to_dock_emergency_stop", 75) 313 MOW_TO_DOCK_CHARGING = ("mow_to_dock_charging", 76) 314 MOW_TO_DOCK_CHARGE_COMPLETED = ("mow_to_dock_charge_completed", 77) 315 MOW_PAUSE = ("mow_pause", 78) 316 317 FREE = ("free", 101) 318 FREE_INITIALIZING = ("free_initializing", 102) 319 FREE_LOCATING = ("free_locating", 103) 320 FREE_DOCK_MANUAL = ("free_dock_manual", 104) 321 FREE_DOCK_MOW_END = ("free_dock_mow_end", 105) 322 FREE_DOCK_PLAN_END = ("free_dock_plan_end", 106) 323 FREE_EMERGENCY_STOP = ("free_emergency_stop", 107) 324 FREE_RECOVERABLE_FAULT = ("free_recoverable_fault", 108) 325 FREE_FAULT = ("free_fault", 109) 326 FREE_BATTERY_HOLD_MODE = ("free_battery_hold_mode", 110) 327 328 CHARGING = ("charging", 151) 329 CHARGE_COMPLETED = ("charge_completed", 152) 330 CHARGE_WAITING = ("charge_waiting", 153) 331 CHARGE_FAULT = ("charge_fault", 154)
Detailed task state reported on DPS 123 and in GET_ROBOT_INFO replies.
123class MowerDockState(MowerEnum): 124 """Return-to-dock state reported by DPS 128.""" 125 126 UNKNOWN = ("unknown", -1) 127 IDLE = ("idle", 0) 128 MOVING_TO_TARGET = ("moving_to_target", 1) 129 DOCKING = ("docking", 2) 130 SUSPENDED = ("suspended", 3)
Return-to-dock state reported by DPS 128.
177class MowerEffMode(MowerEnum): 178 """Reported efficiency mode on DPS 133.""" 179 180 UNKNOWN = ("unknown", 0) 181 DAILY = ("daily", 1) 182 PRECISE = ("precise", 2) 183 FAST = ("fast", 3)
Reported efficiency mode on DPS 133.
37class MowerEnum(RoborockModeEnum): 38 """Base for mower enums.""" 39 40 @classmethod 41 def from_code(cls, code: int | str) -> Self: 42 """Resolve a wire value by name, string value, or integer code.""" 43 if (member := cls.from_any_optional(code)) is not None: 44 return member 45 _LOGGER.debug("Unknown %s code %r; defaulting to UNKNOWN", cls.__name__, code) 46 return cast(Self, cls.UNKNOWN) # type: ignore[attr-defined]
Base for mower enums.
40 @classmethod 41 def from_code(cls, code: int | str) -> Self: 42 """Resolve a wire value by name, string value, or integer code.""" 43 if (member := cls.from_any_optional(code)) is not None: 44 return member 45 _LOGGER.debug("Unknown %s code %r; defaulting to UNKNOWN", cls.__name__, code) 46 return cast(Self, cls.UNKNOWN) # type: ignore[attr-defined]
Resolve a wire value by name, string value, or integer code.
334class MowerErrorCode(MowerEnum): 335 """User-facing error code reported by DPS 120.""" 336 337 UNKNOWN = ("unknown", 0) 338 MAIN_CUTTER_OVER_CURRENT = ("main_cutter_over_current", 1) 339 MAIN_CUTTER_OVER_TEMPERATURE = ("main_cutter_over_temperature", 2) 340 MAIN_CUTTER_DYNAMIC_UNBALANCE = ("main_cutter_dynamic_unbalance", 3) 341 EDGE_CUTTER_OVER_CURRENT = ("edge_cutter_over_current", 4) 342 EDGE_CUTTER_OVER_TEMPERATURE = ("edge_cutter_over_temperature", 5) 343 EDGE_CUTTER_DYNAMIC_UNBALANCE = ("edge_cutter_dynamic_unbalance", 6) 344 HEIGHT_MODULE_ADJUSTING_INCOMPLETE = ("height_module_adjusting_incomplete", 7) 345 TRAVEL_MOTOR_LEFT_FRONT_OVER_CURRENT = ("travel_motor_left_front_over_current", 8) 346 TRAVEL_MOTOR_RIGHT_FRONT_OVER_CURRENT = ("travel_motor_right_front_over_current", 9) 347 TRAVEL_MOTOR_LEFT_REAR_OVER_CURRENT = ("travel_motor_left_rear_over_current", 10) 348 TRAVEL_MOTOR_RIGHT_REAR_OVER_CURRENT = ("travel_motor_right_rear_over_current", 11) 349 TRAVEL_MOTOR_OVER_TEMPERATURE = ("travel_motor_over_temperature", 12) 350 STEERING_MOTOR_LEFT_FRONT_OVER_CURRENT = ("steering_motor_left_front_over_current", 13) 351 STEERING_MOTOR_RIGHT_FRONT_OVER_CURRENT = ("steering_motor_right_front_over_current", 14) 352 STEERING_MOTOR_OVER_TEMPERATURE = ("steering_motor_over_temperature", 15) 353 STOP = ("stop", 16) 354 TILT = ("tilt", 17) 355 LIFT = ("lift", 18) 356 FLIP = ("flip", 19) 357 OUT_OF_BOUND = ("out_of_bound", 20) 358 BUMPER = ("bumper", 21) 359 BATTERY_DISCHARGE_OVER_TEMPERATURE = ("battery_discharge_over_temperature", 22) 360 BATTERY_DISCHARGE_LOW_TEMPERATURE = ("battery_discharge_low_temperature", 23) 361 BATTERY_UNOFFICIAL = ("battery_unofficial", 24) 362 DIRTY_CHARGING_CLIPS = ("dirty_charging_clips", 25) 363 CHARGE_STATION_NO_POWER = ("charge_station_no_power", 26) 364 CAMERA_DIRTY_OR_OBSTRUCTED = ("camera_dirty_or_obstructed", 27) 365 CAMERA_OVER_TEMPERATURE = ("camera_over_temperature", 28) 366 CAMERA_LED_OBSTRUCTED = ("camera_led_obstructed", 29) 367 LIDAR_DIRTY = ("lidar_dirty", 30) 368 LIDAR_OVER_TEMPERATURE = ("lidar_over_temperature", 31) 369 LOCATION_FAILED = ("location_failed", 32) 370 LOCATION_AT_ISLAND = ("location_at_island", 33) 371 LOCATION_AT_NON_COMPLIANT_SLOPE = ("location_at_non_compliant_slope", 34) 372 BE_TRAPPED = ("be_trapped", 35) 373 CHARGE_STATION_OR_RTK_SLIGHT_MOVEMENT_DOCK = ("charge_station_or_rtk_slight_movement_dock", 36) 374 N_RTK_SIGNIFICANT_MOVEMENT = ("n_rtk_significant_movement", 37) 375 RTK_SIGNIFICANT_MOVEMENT = ("rtk_significant_movement", 38) 376 DOCK_CHARGE_STATION_SEARCH_FAIL = ("dock_charge_station_search_fail", 39) 377 DOCK_QRCODE_SCAN_FAIL = ("dock_qrcode_scan_fail", 40) 378 DOCK_ADJUST_ERROR = ("dock_adjust_error", 41) 379 UNDOCK_ERROR = ("undock_error", 42) 380 BATTERY_CHARGE_OVER_TEMPERATURE = ("battery_charge_over_temperature", 43) 381 BATTERY_CHARGE_LOW_TEMPERATURE = ("battery_charge_low_temperature", 44) 382 CAMERA_SEVERELY_DIRTY = ("camera_severely_dirty", 45) 383 NO_PLUGIN_KEY = ("no_plugin_key", 46) 384 CAMERA_REAR_SIDE_DIRTY = ("camera_rear_side_dirty", 48) 385 N_RTK_NETWORK_ERROR = ("n_rtk_network_error", 55) 386 MAIN_CUTTER_FAULT = ("main_cutter_fault", 101) 387 EDGE_CUTTER_FAULT = ("edge_cutter_fault", 102) 388 HEIGHT_MODULE_FAULT = ("height_module_fault", 103) 389 BATTERY_FAULT = ("battery_fault", 104) 390 CAMERA_FAULT = ("camera_fault", 105) 391 CAMERA_LED_FAULT = ("camera_led_fault", 106) 392 MAIN_BOARD_FAULT = ("main_board_fault", 107) 393 LIDAR_FAULT = ("lidar_fault", 108) 394 TRAVEL_MOTOR_LEFT_FRONT_FAULT = ("travel_motor_left_front_fault", 109) 395 TRAVEL_MOTOR_RIGHT_FRONT_FAULT = ("travel_motor_right_front_fault", 110) 396 TRAVEL_MOTOR_LEFT_REAR_FAULT = ("travel_motor_left_rear_fault", 111) 397 TRAVEL_MOTOR_RIGHT_REAR_FAULT = ("travel_motor_right_rear_fault", 112) 398 STEERING_MOTOR_LEFT_FRONT_FAULT = ("steering_motor_left_front_fault", 113) 399 STEERING_MOTOR_RIGHT_FRONT_FAULT = ("steering_motor_right_front_fault", 114) 400 LED_SCREEN_FAULT = ("led_screen_fault", 115) 401 LEFT_SIDE_CAMERA_FAULT = ("left_side_camera_fault", 116) 402 RIGHT_SIDE_CAMERA_FAULT = ("right_side_camera_fault", 117) 403 REAR_SIDE_CAMERA_FAULT = ("rear_side_camera_fault", 118)
User-facing error code reported by DPS 120.
217class MowerFcState(MowerEnum): 218 """Factory or test mode indicator on DPS 141.""" 219 220 UNKNOWN = ("unknown", -1) 221 NOT_FC = ("not_fc", 0) 222 FC = ("fc", 1)
Factory or test mode indicator on DPS 141.
88class MowerMappingState(MowerEnum): 89 """Mapping activity reported by DPS 125.""" 90 91 UNKNOWN = ("unknown", -1) 92 IDLE = ("idle", 0) 93 AUTO_MAPPING = ("auto_mapping", 1) 94 TRACK_ERASE = ("track_erase", 2) 95 SUSPENDED = ("suspended", 3) 96 SAVING_MAP = ("saving_map", 4) 97 REMOTE_WALKING = ("remote_walking", 5) 98 REMOTE_MAPPING = ("remote_mapping", 6)
Mapping activity reported by DPS 125.
75class MowerMappingType(MowerEnum): 76 """Mapping operation reported by DPS 124.""" 77 78 UNKNOWN = ("unknown", -1) 79 NONE = ("none", 0) 80 LAWN_MAPPING = ("lawn_mapping", 1) 81 FORBIDDEN_ZONE_MAPPING = ("forbidden_zone_mapping", 2) 82 CHANNEL_MAPPING = ("channel_mapping", 3) 83 SPLIT_WORKSPACE = ("split_workspace", 4) 84 MERGE_WORKSPACE = ("merge_workspace", 5) 85 BOUNDARY_MODIFY = ("boundary_modify", 6)
Mapping operation reported by DPS 124.
62class MowerMowState(MowerEnum): 63 """Compact mowing state (MowStateDpValue.Type).""" 64 65 UNKNOWN = ("unknown", -1) 66 IDLE = ("idle", 0) 67 ZIGZAG_MOWING = ("zigzag_mowing", 1) 68 EDGE_MOWING = ("edge_mowing", 2) 69 TRANSITION = ("transition", 3) 70 SUSPENDED = ("suspended", 4) 71 REMOTE_WALKING = ("remote_walking", 5) 72 REMOTE_MOWING = ("remote_mowing", 6)
Compact mowing state (MowStateDpValue.Type).
49class MowerMowType(MowerEnum): 50 """Mowing task selection reported by DPS 122.""" 51 52 UNKNOWN = ("unknown", -1) 53 NONE = ("none", 0) 54 GLOBAL = ("global", 1) 55 EDGE = ("edge", 2) 56 SELECTION = ("selection", 3) 57 ZONING = ("zoning", 4) 58 REMOTE = ("remote", 5) 59 RANDOM = ("random", 6)
Mowing task selection reported by DPS 122.
247class MowerNetworkChannel(MowerEnum): 248 """Current network route on DPS 145.""" 249 250 UNKNOWN = ("unknown", 0) 251 WLAN0 = ("wlan0", 1) 252 WLAN1 = ("wlan1", 2) 253 MOBILE_4G = ("mobile_4g", 3)
Current network route on DPS 145.
225class MowerOffDockNoTaskStatus(MowerEnum): 226 """Mower off-dock status without an active task on DPS 143.""" 227 228 UNKNOWN = ("unknown", 0) 229 WAITING = ("waiting", 1) 230 SUSPENDING = ("suspending", 2) 231 DOCKING = ("docking", 3) 232 REMOTING = ("remoting", 4)
Mower off-dock status without an active task on DPS 143.
206class MowerOfflineStatus(MowerEnum): 207 """Shutdown or reboot reason on DPS 138.""" 208 209 UNKNOWN = ("unknown", -1) 210 ONLINE = ("online", 0) 211 MANUAL_SHUTDOWN = ("manual_shutdown", 1) 212 SLEEP_SHUTDOWN = ("sleep_shutdown", 2) 213 LOW_BATTERY_SHUTDOWN = ("low_battery_shutdown", 3) 214 UPGRADE_REBOOT = ("upgrade_reboot", 4)
Shutdown or reboot reason on DPS 138.
101class MowerOtaState(MowerEnum): 102 """Firmware update state reported by DPS 126.""" 103 104 UNKNOWN = ("unknown", -1) 105 IDLE = ("idle", 0) 106 DOWNLOADING = ("downloading", 1) 107 INSTALLING = ("installing", 2) 108 REBOOTING = ("rebooting", 3)
Firmware update state reported by DPS 126.
186class MowerPattern(MowerEnum): 187 """Reported mowing pattern on DPS 136.""" 188 189 UNKNOWN = ("unknown", 0) 190 ZIGZAG = ("zigzag", 1) 191 WELL = ("well", 2) 192 DIAMOND = ("diamond", 3) 193 TRIANGLE = ("triangle", 4) 194 AUTO_DEFLECT = ("auto_deflect", 5) 195 RANDOM = ("random", 6)
Reported mowing pattern on DPS 136.
146class MowerPendType(MowerEnum): 147 """Pause or interruption reason reported by DPS 130.""" 148 149 UNKNOWN = ("unknown", -1) 150 NOT_SUSPENDED = ("not_suspended", 0) 151 APP_PAUSE = ("app_pause", 1) 152 BUTTON_EMERGENCY_STOP = ("button_emergency_stop", 2) 153 FAULT = ("fault", 3) 154 BREAKPOINT_PAUSE = ("breakpoint_pause", 4) 155 OTHER = ("other", 5)
Pause or interruption reason reported by DPS 130.
158class MowerRemoteState(MowerEnum): 159 """Remote control state reported by DPS 131.""" 160 161 UNKNOWN = ("unknown", -1) 162 IDLE = ("idle", 0) 163 VIDEO_REMOTE = ("video_remote", 1) 164 REMOTE_WALKING = ("remote_walking", 2)
Remote control state reported by DPS 131.
167class MowerStartType(MowerEnum): 168 """Task start trigger reported by DPS 132.""" 169 170 UNKNOWN = ("unknown", -1) 171 DEFAULT = ("default", 0) 172 APP_START = ("app_start", 1) 173 BUTTON_START = ("button_start", 2) 174 SCHEDULE_START = ("schedule_start", 3)
Task start trigger reported by DPS 132.