roborock.data.v1.v1_code_mappings

  1from enum import StrEnum
  2from typing import Self
  3
  4from ..code_mappings import RoborockEnum
  5
  6
  7class RoborockFinishReason(RoborockEnum):
  8    manual_interrupt = 21  # Cleaning interrupted by user
  9    cleanup_interrupted = 24  # Cleanup interrupted
 10    manual_interrupt_2 = 21
 11    manual_interrupt_12 = (29, "manual_interrupt")
 12    breakpoint = 32  # Could not continue cleaning
 13    breakpoint_2 = (33, "breakpoint")
 14    cleanup_interrupted_2 = (34, "cleanup_interrupted")
 15    manual_interrupt_3 = (35, "manual_interrupt")
 16    manual_interrupt_4 = (36, "manual_interrupt")
 17    manual_interrupt_5 = (37, "manual_interrupt")
 18    manual_interrupt_6 = (43, "manual_interrupt")
 19    locate_fail = 45  # Positioning Failed
 20    cleanup_interrupted_3 = (64, "cleanup_interrupted")
 21    locate_fail_2 = (65, "locate_fail")
 22    manual_interrupt_7 = (48, "manual_interrupt")
 23    manual_interrupt_8 = (49, "manual_interrupt")
 24    manual_interrupt_9 = (50, "manual_interrupt")
 25    cleanup_interrupted_4 = (51, "cleanup_interrupted")
 26    finished_cleaning = 52  # Finished cleaning
 27    finished_cleaning_2 = (54, "finished_cleaning")
 28    finished_cleaning_3 = (55, "finished_cleaning")
 29    finished_cleaning_4 = (56, "finished_cleaning")
 30    finished_clenaing_5 = (57, "finished_cleaning")
 31    manual_interrupt_10 = (60, "manual_interrupt")
 32    area_unreachable = 61  # Area unreachable
 33    area_unreachable_2 = (62, "area_unreachable")
 34    washing_error = 67  # Washing error
 35    back_to_wash_failure = 68  # Failed to return to the dock
 36    cleanup_interrupted_5 = (101, "cleanup_interrupted")
 37    breakpoint_4 = (102, "breakpoint")
 38    manual_interrupt_11 = (103, "manual_interrupt")
 39    cleanup_interrupted_6 = (104, "cleanup_interrupted")
 40    cleanup_interrupted_7 = (105, "cleanup_interrupted")
 41    cleanup_interrupted_8 = (106, "cleanup_interrupted")
 42    cleanup_interrupted_9 = (107, "cleanup_interrupted")
 43    cleanup_interrupted_10 = (109, "cleanup_interrupted")
 44    cleanup_interrupted_11 = (110, "cleanup_interrupted")
 45    patrol_success = 114  # Cruise completed
 46    patrol_fail = 115  # Cruise failed
 47    pet_patrol_success = 116  # Pet found
 48    pet_patrol_fail = 117  # Pet found failed
 49
 50
 51class RoborockInCleaning(RoborockEnum):
 52    complete = 0
 53    global_clean_not_complete = 1
 54    zone_clean_not_complete = 2
 55    segment_clean_not_complete = 3
 56
 57
 58class RoborockCleanType(RoborockEnum):
 59    all_zone = 1
 60    draw_zone = 2
 61    select_zone = 3
 62    quick_build = 4
 63    video_patrol = 5
 64    pet_patrol = 6
 65
 66
 67class RoborockChargeStatus(RoborockEnum):
 68    """Describes the charging status of the device."""
 69
 70    unknown = -1
 71    charge_waiting = 0
 72    charging = 1
 73
 74
 75class RoborockDockState(StrEnum):
 76    """Synthesized high-level dock and power state of the device.
 77
 78    This enum represents a unified "UI-level" state that combines multiple raw
 79    device data points (`state`, `charge_status`, `battery`) into a single,
 80    human-readable status that accurately reflects what the vacuum is doing
 81    relative to the dock.
 82
 83    It is highly recommended for consumers of this API
 84    to use this synthesized state to determine if the vacuum is charging or
 85    docked, rather than attempting to parse the raw integer data points, as
 86    this safely handles backward compatibility for older models that lack
 87    explicit off-peak schedule reporting.
 88    """
 89
 90    unknown = "unknown"
 91    """The dock state could not be determined or is unmapped."""
 92
 93    idle = "idle"
 94    """The vacuum is away from the dock (e.g., cleaning, paused, or errored).
 95    In the official app, this state presents the 'Return to Dock' or 'Recharge' action."""
 96
 97    returning = "returning"
 98    """The vacuum is actively navigating its way back to the dock.
 99    In the official app, this state presents the 'Stop' or 'Pause' action."""
100
101    charging = "charging"
102    """The vacuum is on the dock and actively receiving electricity.
103    In the official app, this state is displayed as 'Charging'."""
104
105    off_peak_waiting = "off_peak_waiting"
106    """The vacuum is on the dock but charging is paused. It is waiting for the
107    user's scheduled 'Valley Electricity' off-peak hours to begin before
108    drawing power.
109    In the official app, this state is displayed as 'Charging paused during peak hours'."""
110
111    full = "full"
112    """The vacuum is on the dock and the battery is at 100% capacity.
113    In the official app, this state is displayed as 'Fully charged'."""
114
115    dusting = "dusting"
116    """The vacuum is on the dock and is currently being evacuated by the
117    auto-empty base.
118    In the official app, this state is displayed as 'Emptying dustbin'."""
119
120
121class RoborockStartType(RoborockEnum):
122    button = 1
123    app = 2
124    schedule = 3
125    mi_home = 4
126    quick_start = 5
127    voice_control = 13
128    routines = 101
129    alexa = 801
130    google = 802
131    ifttt = 803
132    yandex = 804
133    homekit = 805
134    xiaoai = 806
135    tmall_genie = 807
136    duer = 808
137    dingdong = 809
138    siri = 810
139    clova = 811
140    wechat = 901
141    alipay = 902
142    aqara = 903
143    hisense = 904
144    huawei = 905
145    widget_launch = 820
146    smart_watch = 821
147
148
149class RoborockDssCodes(RoborockEnum):
150    @classmethod
151    def _missing_(cls: type[Self], key) -> Self:
152        # If the calculated value is not provided, then it should be viewed as okay.
153        # As the math will sometimes result in you getting numbers that don't matter.
154        return cls.okay  # type: ignore
155
156
157class ClearWaterBoxStatus(RoborockDssCodes):
158    """Status of the clear water box."""
159
160    okay = 0
161    out_of_water = 1
162    out_of_water_2 = (38, "out_of_water")
163    refill_error = 48
164
165
166class DirtyWaterBoxStatus(RoborockDssCodes):
167    """Status of the dirty water box."""
168
169    okay = 0
170    full_not_installed = 1
171    full_not_installed_2 = (39, "full_not_installed")
172    drain_error = 49
173
174
175class DustBagStatus(RoborockDssCodes):
176    """Status of the dust bag."""
177
178    okay = 0
179    not_installed = 1
180    full = 34
181
182
183class CleanFluidStatus(RoborockDssCodes):
184    """Status of the cleaning fluid container."""
185
186    empty_not_installed = 1
187    okay = 2
188
189
190class RoborockErrorCode(RoborockEnum):
191    none = 0
192    lidar_blocked = 1
193    bumper_stuck = 2
194    wheels_suspended = 3
195    cliff_sensor_error = 4
196    main_brush_jammed = 5
197    side_brush_jammed = 6
198    wheels_jammed = 7
199    robot_trapped = 8
200    no_dustbin = 9
201    strainer_error = 10  # Filter is wet or blocked
202    compass_error = 11  # Strong magnetic field detected
203    low_battery = 12
204    charging_error = 13
205    battery_error = 14
206    wall_sensor_dirty = 15
207    robot_tilted = 16
208    side_brush_error = 17
209    fan_error = 18
210    dock = 19  # Dock not connected to power
211    optical_flow_sensor_dirt = 20
212    vertical_bumper_pressed = 21
213    dock_locator_error = 22
214    return_to_dock_fail = 23
215    nogo_zone_detected = 24
216    visual_sensor = 25  # Camera error
217    light_touch = 26  # Wall sensor error
218    vibrarise_jammed = 27
219    robot_on_carpet = 28
220    filter_blocked = 29
221    invisible_wall_detected = 30
222    cannot_cross_carpet = 31
223    internal_error = 32
224    collect_dust_error_3 = 34  # Clean auto-empty dock
225    collect_dust_error_4 = 35  # Auto empty dock voltage error
226    mopping_roller_1 = 36  # Wash roller may be jammed
227    mopping_roller_error_2 = 37  # wash roller not lowered properly
228    clear_water_box_hoare = 38  # Check the clean water tank
229    dirty_water_box_hoare = 39  # Check the dirty water tank
230    sink_strainer_hoare = 40  # Reinstall the water filter
231    clear_water_box_exception = 41  # Clean water tank empty
232    clear_brush_exception = 42  # Check that the water filter has been correctly installed
233    clear_brush_exception_2 = 43  # Positioning button error
234    filter_screen_exception = 44  # Clean the dock water filter
235    mopping_roller_2 = (45, "mopping_roller_1")  # Wash roller may be jammed
236    up_water_exception = 48
237    drain_water_exception = 49
238    temperature_protection = 51  # Unit temperature protection
239    clean_carousel_exception = 52
240    clean_carousel_water_full = 53
241    water_carriage_drop = 54
242    check_clean_carouse = 55
243    audio_error = 56
244
245
246class RoborockFanPowerCode(RoborockEnum):
247    """Describes the fan power of the vacuum cleaner."""
248
249    # Fan speeds should have the first letter capitalized - as there is no way to change the name in translations as
250    # far as I am aware
251
252
253class RoborockFanSpeedV1(RoborockFanPowerCode):
254    silent = 38
255    standard = 60
256    medium = 77
257    turbo = 90
258
259
260class RoborockFanSpeedV2(RoborockFanPowerCode):
261    silent = 101
262    balanced = 102
263    turbo = 103
264    max = 104
265    gentle = 105
266    auto = 106
267
268
269class RoborockFanSpeedV3(RoborockFanPowerCode):
270    silent = 38
271    standard = 60
272    medium = 75
273    turbo = 100
274
275
276class RoborockFanSpeedE2(RoborockFanPowerCode):
277    gentle = 41
278    silent = 50
279    standard = 68
280    medium = 79
281    turbo = 100
282
283
284class RoborockMopIntensityCode(RoborockEnum):
285    """Describes the mop intensity of the vacuum cleaner."""
286
287
288class RoborockMopIntensityV2(RoborockMopIntensityCode):
289    """Describes the mop intensity of the vacuum cleaner."""
290
291    off = 200
292    low = 201
293    medium = 202
294    high = 203
295    custom = 207
296
297
298class RoborockDockErrorCode(RoborockEnum):
299    """Describes the error code of the dock."""
300
301    ok = 0
302    """No error condition."""
303
304    no_dustbin_or_filter = 32
305    """No dock dustbin or filter installed.
306
307    This error message applies to auto-empty docks.
308    """
309
310    auto_empty_dock_fan_error = 33
311    """Auto-Empty Dock fan error: Dock dustbin or filter out of place."""
312
313    duct_blockage = 34
314    """Auto-Empty Dock jammed: Dock dustbin, filter, or air duct jammed, check and clean it."""
315
316    auto_empty_dock_voltage_error = 35
317    """Auto-Empty Dock voltage error: Unable to empty the dustbin."""
318
319    water_empty = 38
320    """Clean water tank empty: Check tank placement or refill as required."""
321
322    waste_water_tank_full = 39
323    """Check the dirty water tank: Check tank placement or empty as required."""
324
325    maintenance_brush_jammed = 42
326    """Self-cleaning roller error: Maintenance brush jammed. Remove and clean."""
327
328    dirty_tank_latch_open = 44
329    """Water filter blocked: Clean and reinstall.
330
331    Make sure that the dirty water tank cover is closed and the latch is secured.
332    """
333
334    no_dustbin = 46
335    """Dustbin not installed (Standard error for missing dustbin).
336
337    This error message applies to larger wash docks.
338    """
339
340    cleaning_tank_full_or_blocked = 53
341    """Cleaning tank full or blocked (Water filter or sink strainer blocked/not installed)."""
342
343
344class RoborockDockTypeCode(RoborockEnum):
345    unknown = -9999
346    o0_dock = 0
347    o1_dock = 1
348    o2_dock = 2
349    o3_dock = 3
350    oc_dock = 5
351    o3_plus_dock = 6
352    o4_dock = 7
353    pearl_dock = 8
354    pearl_plus_dock = 9
355    o5_dock = 10
356    shell_2s_dock = 11
357    couple_dock = 13
358    shell_3_dock = 14
359    shell_2c_dock = 15
360    shell_3s_dock = 16
361    k1_dock = 17
362    o6_dock = 18
363    k1c_dock = 19
364    k1s_dock = 20
365    shell_e_dock = 21
366    shell_2e_dock = 22
367    shell_3c_dock = 23
368    hera_dock = 24
369    k1s_pro_dock = 26
370    type_27_dock = 27
371    k1c_lite_dock = 28
372    k1r_dock = 29
373    shell_2e_lite_dock = 30
374    shell_4rc_dock = 31
375    shell_4r_dock = 32
376    shell_4p_dock = 33
377    shell_4s_dock = 34
378    o7_dock = 35
379    k1d_dock = 37
380    shell_3p_dock = 38
381    shell_4d_dock = 39
382    shell_2e_heat_dock = 40
383    f1_dock = 41
384    f1r_dock = 42
385    f2r_dock = 43
386    f1s_dock = 44
387    o7h_dock = 45
388    f1c_dock = 46
389
390
391class RoborockDockDustCollectionModeCode(RoborockEnum):
392    """Describes the dust collection mode of the vacuum cleaner."""
393
394    # TODO: Get the correct values for various different docks
395    unknown = -9999
396    smart = 0
397    light = 1
398    balanced = 2
399    max = 4
400
401
402class RoborockStateCode(RoborockEnum):
403    unknown = 0
404    starting = 1
405    charger_disconnected = 2
406    idle = 3
407    remote_control_active = 4
408    cleaning = 5
409    returning_home = 6
410    manual_mode = 7
411    charging = 8
412    charging_problem = 9
413    paused = 10
414    spot_cleaning = 11
415    error = 12
416    shutting_down = 13
417    updating = 14
418    docking = 15
419    going_to_target = 16
420    zoned_cleaning = 17
421    segment_cleaning = 18
422    emptying_the_bin = 22  # on s7+
423    washing_the_mop = 23  # on a46
424    washing_the_mop_2 = (25, "washing_the_mop")
425    going_to_wash_the_mop = 26  # on a46
426    in_call = 28
427    mapping = 29
428    egg_attack = 30
429    patrol = 32
430    attaching_the_mop = 33  # on g20s ultra
431    detaching_the_mop = 34  # on g20s ultra
432    charging_complete = 100
433    device_offline = 101
434    locked = 103
435    air_drying_stopping = 202
436    robot_status_mopping = 6301
437    clean_mop_cleaning = 6302
438    clean_mop_mopping = 6303
439    segment_mopping = 6304
440    segment_clean_mop_cleaning = 6305
441    segment_clean_mop_mopping = 6306
442    zoned_mopping = 6307
443    zoned_clean_mop_cleaning = 6308
444    zoned_clean_mop_mopping = 6309
445    back_to_dock_washing_duster = 6310
class RoborockFinishReason(roborock.data.code_mappings.RoborockEnum):
 8class RoborockFinishReason(RoborockEnum):
 9    manual_interrupt = 21  # Cleaning interrupted by user
10    cleanup_interrupted = 24  # Cleanup interrupted
11    manual_interrupt_2 = 21
12    manual_interrupt_12 = (29, "manual_interrupt")
13    breakpoint = 32  # Could not continue cleaning
14    breakpoint_2 = (33, "breakpoint")
15    cleanup_interrupted_2 = (34, "cleanup_interrupted")
16    manual_interrupt_3 = (35, "manual_interrupt")
17    manual_interrupt_4 = (36, "manual_interrupt")
18    manual_interrupt_5 = (37, "manual_interrupt")
19    manual_interrupt_6 = (43, "manual_interrupt")
20    locate_fail = 45  # Positioning Failed
21    cleanup_interrupted_3 = (64, "cleanup_interrupted")
22    locate_fail_2 = (65, "locate_fail")
23    manual_interrupt_7 = (48, "manual_interrupt")
24    manual_interrupt_8 = (49, "manual_interrupt")
25    manual_interrupt_9 = (50, "manual_interrupt")
26    cleanup_interrupted_4 = (51, "cleanup_interrupted")
27    finished_cleaning = 52  # Finished cleaning
28    finished_cleaning_2 = (54, "finished_cleaning")
29    finished_cleaning_3 = (55, "finished_cleaning")
30    finished_cleaning_4 = (56, "finished_cleaning")
31    finished_clenaing_5 = (57, "finished_cleaning")
32    manual_interrupt_10 = (60, "manual_interrupt")
33    area_unreachable = 61  # Area unreachable
34    area_unreachable_2 = (62, "area_unreachable")
35    washing_error = 67  # Washing error
36    back_to_wash_failure = 68  # Failed to return to the dock
37    cleanup_interrupted_5 = (101, "cleanup_interrupted")
38    breakpoint_4 = (102, "breakpoint")
39    manual_interrupt_11 = (103, "manual_interrupt")
40    cleanup_interrupted_6 = (104, "cleanup_interrupted")
41    cleanup_interrupted_7 = (105, "cleanup_interrupted")
42    cleanup_interrupted_8 = (106, "cleanup_interrupted")
43    cleanup_interrupted_9 = (107, "cleanup_interrupted")
44    cleanup_interrupted_10 = (109, "cleanup_interrupted")
45    cleanup_interrupted_11 = (110, "cleanup_interrupted")
46    patrol_success = 114  # Cruise completed
47    patrol_fail = 115  # Cruise failed
48    pet_patrol_success = 116  # Pet found
49    pet_patrol_fail = 117  # Pet found failed

Roborock Enum for codes with int values

manual_interrupt = <RoborockFinishReason.manual_interrupt: 21>
cleanup_interrupted = <RoborockFinishReason.cleanup_interrupted: 24>
manual_interrupt_2 = <RoborockFinishReason.manual_interrupt: 21>
manual_interrupt_12 = <RoborockFinishReason.manual_interrupt_12: 29>
breakpoint = <RoborockFinishReason.breakpoint: 32>
breakpoint_2 = <RoborockFinishReason.breakpoint_2: 33>
cleanup_interrupted_2 = <RoborockFinishReason.cleanup_interrupted_2: 34>
manual_interrupt_3 = <RoborockFinishReason.manual_interrupt_3: 35>
manual_interrupt_4 = <RoborockFinishReason.manual_interrupt_4: 36>
manual_interrupt_5 = <RoborockFinishReason.manual_interrupt_5: 37>
manual_interrupt_6 = <RoborockFinishReason.manual_interrupt_6: 43>
locate_fail = <RoborockFinishReason.locate_fail: 45>
cleanup_interrupted_3 = <RoborockFinishReason.cleanup_interrupted_3: 64>
locate_fail_2 = <RoborockFinishReason.locate_fail_2: 65>
manual_interrupt_7 = <RoborockFinishReason.manual_interrupt_7: 48>
manual_interrupt_8 = <RoborockFinishReason.manual_interrupt_8: 49>
manual_interrupt_9 = <RoborockFinishReason.manual_interrupt_9: 50>
cleanup_interrupted_4 = <RoborockFinishReason.cleanup_interrupted_4: 51>
finished_cleaning = <RoborockFinishReason.finished_cleaning: 52>
finished_cleaning_2 = <RoborockFinishReason.finished_cleaning_2: 54>
finished_cleaning_3 = <RoborockFinishReason.finished_cleaning_3: 55>
finished_cleaning_4 = <RoborockFinishReason.finished_cleaning_4: 56>
finished_clenaing_5 = <RoborockFinishReason.finished_clenaing_5: 57>
manual_interrupt_10 = <RoborockFinishReason.manual_interrupt_10: 60>
area_unreachable = <RoborockFinishReason.area_unreachable: 61>
area_unreachable_2 = <RoborockFinishReason.area_unreachable_2: 62>
washing_error = <RoborockFinishReason.washing_error: 67>
back_to_wash_failure = <RoborockFinishReason.back_to_wash_failure: 68>
cleanup_interrupted_5 = <RoborockFinishReason.cleanup_interrupted_5: 101>
breakpoint_4 = <RoborockFinishReason.breakpoint_4: 102>
manual_interrupt_11 = <RoborockFinishReason.manual_interrupt_11: 103>
cleanup_interrupted_6 = <RoborockFinishReason.cleanup_interrupted_6: 104>
cleanup_interrupted_7 = <RoborockFinishReason.cleanup_interrupted_7: 105>
cleanup_interrupted_8 = <RoborockFinishReason.cleanup_interrupted_8: 106>
cleanup_interrupted_9 = <RoborockFinishReason.cleanup_interrupted_9: 107>
cleanup_interrupted_10 = <RoborockFinishReason.cleanup_interrupted_10: 109>
cleanup_interrupted_11 = <RoborockFinishReason.cleanup_interrupted_11: 110>
patrol_success = <RoborockFinishReason.patrol_success: 114>
patrol_fail = <RoborockFinishReason.patrol_fail: 115>
pet_patrol_success = <RoborockFinishReason.pet_patrol_success: 116>
pet_patrol_fail = <RoborockFinishReason.pet_patrol_fail: 117>
class RoborockInCleaning(roborock.data.code_mappings.RoborockEnum):
52class RoborockInCleaning(RoborockEnum):
53    complete = 0
54    global_clean_not_complete = 1
55    zone_clean_not_complete = 2
56    segment_clean_not_complete = 3

Roborock Enum for codes with int values

complete = <RoborockInCleaning.complete: 0>
global_clean_not_complete = <RoborockInCleaning.global_clean_not_complete: 1>
zone_clean_not_complete = <RoborockInCleaning.zone_clean_not_complete: 2>
segment_clean_not_complete = <RoborockInCleaning.segment_clean_not_complete: 3>
class RoborockCleanType(roborock.data.code_mappings.RoborockEnum):
59class RoborockCleanType(RoborockEnum):
60    all_zone = 1
61    draw_zone = 2
62    select_zone = 3
63    quick_build = 4
64    video_patrol = 5
65    pet_patrol = 6

Roborock Enum for codes with int values

all_zone = <RoborockCleanType.all_zone: 1>
draw_zone = <RoborockCleanType.draw_zone: 2>
select_zone = <RoborockCleanType.select_zone: 3>
quick_build = <RoborockCleanType.quick_build: 4>
video_patrol = <RoborockCleanType.video_patrol: 5>
pet_patrol = <RoborockCleanType.pet_patrol: 6>
class RoborockChargeStatus(roborock.data.code_mappings.RoborockEnum):
68class RoborockChargeStatus(RoborockEnum):
69    """Describes the charging status of the device."""
70
71    unknown = -1
72    charge_waiting = 0
73    charging = 1

Describes the charging status of the device.

charge_waiting = <RoborockChargeStatus.charge_waiting: 0>
class RoborockDockState(enum.StrEnum):
 76class RoborockDockState(StrEnum):
 77    """Synthesized high-level dock and power state of the device.
 78
 79    This enum represents a unified "UI-level" state that combines multiple raw
 80    device data points (`state`, `charge_status`, `battery`) into a single,
 81    human-readable status that accurately reflects what the vacuum is doing
 82    relative to the dock.
 83
 84    It is highly recommended for consumers of this API
 85    to use this synthesized state to determine if the vacuum is charging or
 86    docked, rather than attempting to parse the raw integer data points, as
 87    this safely handles backward compatibility for older models that lack
 88    explicit off-peak schedule reporting.
 89    """
 90
 91    unknown = "unknown"
 92    """The dock state could not be determined or is unmapped."""
 93
 94    idle = "idle"
 95    """The vacuum is away from the dock (e.g., cleaning, paused, or errored).
 96    In the official app, this state presents the 'Return to Dock' or 'Recharge' action."""
 97
 98    returning = "returning"
 99    """The vacuum is actively navigating its way back to the dock.
100    In the official app, this state presents the 'Stop' or 'Pause' action."""
101
102    charging = "charging"
103    """The vacuum is on the dock and actively receiving electricity.
104    In the official app, this state is displayed as 'Charging'."""
105
106    off_peak_waiting = "off_peak_waiting"
107    """The vacuum is on the dock but charging is paused. It is waiting for the
108    user's scheduled 'Valley Electricity' off-peak hours to begin before
109    drawing power.
110    In the official app, this state is displayed as 'Charging paused during peak hours'."""
111
112    full = "full"
113    """The vacuum is on the dock and the battery is at 100% capacity.
114    In the official app, this state is displayed as 'Fully charged'."""
115
116    dusting = "dusting"
117    """The vacuum is on the dock and is currently being evacuated by the
118    auto-empty base.
119    In the official app, this state is displayed as 'Emptying dustbin'."""

Synthesized high-level dock and power state of the device.

This enum represents a unified "UI-level" state that combines multiple raw device data points (state, charge_status, battery) into a single, human-readable status that accurately reflects what the vacuum is doing relative to the dock.

It is highly recommended for consumers of this API to use this synthesized state to determine if the vacuum is charging or docked, rather than attempting to parse the raw integer data points, as this safely handles backward compatibility for older models that lack explicit off-peak schedule reporting.

unknown = <RoborockDockState.unknown: 'unknown'>

The dock state could not be determined or is unmapped.

idle = <RoborockDockState.idle: 'idle'>

The vacuum is away from the dock (e.g., cleaning, paused, or errored). In the official app, this state presents the 'Return to Dock' or 'Recharge' action.

returning = <RoborockDockState.returning: 'returning'>

The vacuum is actively navigating its way back to the dock. In the official app, this state presents the 'Stop' or 'Pause' action.

charging = <RoborockDockState.charging: 'charging'>

The vacuum is on the dock and actively receiving electricity. In the official app, this state is displayed as 'Charging'.

off_peak_waiting = <RoborockDockState.off_peak_waiting: 'off_peak_waiting'>

The vacuum is on the dock but charging is paused. It is waiting for the user's scheduled 'Valley Electricity' off-peak hours to begin before drawing power. In the official app, this state is displayed as 'Charging paused during peak hours'.

full = <RoborockDockState.full: 'full'>

The vacuum is on the dock and the battery is at 100% capacity. In the official app, this state is displayed as 'Fully charged'.

dusting = <RoborockDockState.dusting: 'dusting'>

The vacuum is on the dock and is currently being evacuated by the auto-empty base. In the official app, this state is displayed as 'Emptying dustbin'.

class RoborockStartType(roborock.data.code_mappings.RoborockEnum):
122class RoborockStartType(RoborockEnum):
123    button = 1
124    app = 2
125    schedule = 3
126    mi_home = 4
127    quick_start = 5
128    voice_control = 13
129    routines = 101
130    alexa = 801
131    google = 802
132    ifttt = 803
133    yandex = 804
134    homekit = 805
135    xiaoai = 806
136    tmall_genie = 807
137    duer = 808
138    dingdong = 809
139    siri = 810
140    clova = 811
141    wechat = 901
142    alipay = 902
143    aqara = 903
144    hisense = 904
145    huawei = 905
146    widget_launch = 820
147    smart_watch = 821

Roborock Enum for codes with int values

button = <RoborockStartType.button: 1>
schedule = <RoborockStartType.schedule: 3>
mi_home = <RoborockStartType.mi_home: 4>
quick_start = <RoborockStartType.quick_start: 5>
voice_control = <RoborockStartType.voice_control: 13>
routines = <RoborockStartType.routines: 101>
alexa = <RoborockStartType.alexa: 801>
google = <RoborockStartType.google: 802>
ifttt = <RoborockStartType.ifttt: 803>
yandex = <RoborockStartType.yandex: 804>
homekit = <RoborockStartType.homekit: 805>
xiaoai = <RoborockStartType.xiaoai: 806>
tmall_genie = <RoborockStartType.tmall_genie: 807>
duer = <RoborockStartType.duer: 808>
dingdong = <RoborockStartType.dingdong: 809>
siri = <RoborockStartType.siri: 810>
clova = <RoborockStartType.clova: 811>
wechat = <RoborockStartType.wechat: 901>
alipay = <RoborockStartType.alipay: 902>
aqara = <RoborockStartType.aqara: 903>
hisense = <RoborockStartType.hisense: 904>
huawei = <RoborockStartType.huawei: 905>
widget_launch = <RoborockStartType.widget_launch: 820>
smart_watch = <RoborockStartType.smart_watch: 821>
class RoborockDssCodes(roborock.data.code_mappings.RoborockEnum):
150class RoborockDssCodes(RoborockEnum):
151    @classmethod
152    def _missing_(cls: type[Self], key) -> Self:
153        # If the calculated value is not provided, then it should be viewed as okay.
154        # As the math will sometimes result in you getting numbers that don't matter.
155        return cls.okay  # type: ignore

Roborock Enum for codes with int values

class ClearWaterBoxStatus(RoborockDssCodes):
158class ClearWaterBoxStatus(RoborockDssCodes):
159    """Status of the clear water box."""
160
161    okay = 0
162    out_of_water = 1
163    out_of_water_2 = (38, "out_of_water")
164    refill_error = 48

Status of the clear water box.

out_of_water = <ClearWaterBoxStatus.out_of_water: 1>
out_of_water_2 = <ClearWaterBoxStatus.out_of_water_2: 38>
refill_error = <ClearWaterBoxStatus.refill_error: 48>
class DirtyWaterBoxStatus(RoborockDssCodes):
167class DirtyWaterBoxStatus(RoborockDssCodes):
168    """Status of the dirty water box."""
169
170    okay = 0
171    full_not_installed = 1
172    full_not_installed_2 = (39, "full_not_installed")
173    drain_error = 49

Status of the dirty water box.

full_not_installed = <DirtyWaterBoxStatus.full_not_installed: 1>
full_not_installed_2 = <DirtyWaterBoxStatus.full_not_installed_2: 39>
drain_error = <DirtyWaterBoxStatus.drain_error: 49>
class DustBagStatus(RoborockDssCodes):
176class DustBagStatus(RoborockDssCodes):
177    """Status of the dust bag."""
178
179    okay = 0
180    not_installed = 1
181    full = 34

Status of the dust bag.

okay = <DustBagStatus.okay: 0>
not_installed = <DustBagStatus.not_installed: 1>
full = <DustBagStatus.full: 34>
class CleanFluidStatus(RoborockDssCodes):
184class CleanFluidStatus(RoborockDssCodes):
185    """Status of the cleaning fluid container."""
186
187    empty_not_installed = 1
188    okay = 2

Status of the cleaning fluid container.

empty_not_installed = <CleanFluidStatus.empty_not_installed: 1>
okay = <CleanFluidStatus.okay: 2>
class RoborockErrorCode(roborock.data.code_mappings.RoborockEnum):
191class RoborockErrorCode(RoborockEnum):
192    none = 0
193    lidar_blocked = 1
194    bumper_stuck = 2
195    wheels_suspended = 3
196    cliff_sensor_error = 4
197    main_brush_jammed = 5
198    side_brush_jammed = 6
199    wheels_jammed = 7
200    robot_trapped = 8
201    no_dustbin = 9
202    strainer_error = 10  # Filter is wet or blocked
203    compass_error = 11  # Strong magnetic field detected
204    low_battery = 12
205    charging_error = 13
206    battery_error = 14
207    wall_sensor_dirty = 15
208    robot_tilted = 16
209    side_brush_error = 17
210    fan_error = 18
211    dock = 19  # Dock not connected to power
212    optical_flow_sensor_dirt = 20
213    vertical_bumper_pressed = 21
214    dock_locator_error = 22
215    return_to_dock_fail = 23
216    nogo_zone_detected = 24
217    visual_sensor = 25  # Camera error
218    light_touch = 26  # Wall sensor error
219    vibrarise_jammed = 27
220    robot_on_carpet = 28
221    filter_blocked = 29
222    invisible_wall_detected = 30
223    cannot_cross_carpet = 31
224    internal_error = 32
225    collect_dust_error_3 = 34  # Clean auto-empty dock
226    collect_dust_error_4 = 35  # Auto empty dock voltage error
227    mopping_roller_1 = 36  # Wash roller may be jammed
228    mopping_roller_error_2 = 37  # wash roller not lowered properly
229    clear_water_box_hoare = 38  # Check the clean water tank
230    dirty_water_box_hoare = 39  # Check the dirty water tank
231    sink_strainer_hoare = 40  # Reinstall the water filter
232    clear_water_box_exception = 41  # Clean water tank empty
233    clear_brush_exception = 42  # Check that the water filter has been correctly installed
234    clear_brush_exception_2 = 43  # Positioning button error
235    filter_screen_exception = 44  # Clean the dock water filter
236    mopping_roller_2 = (45, "mopping_roller_1")  # Wash roller may be jammed
237    up_water_exception = 48
238    drain_water_exception = 49
239    temperature_protection = 51  # Unit temperature protection
240    clean_carousel_exception = 52
241    clean_carousel_water_full = 53
242    water_carriage_drop = 54
243    check_clean_carouse = 55
244    audio_error = 56

Roborock Enum for codes with int values

lidar_blocked = <RoborockErrorCode.lidar_blocked: 1>
bumper_stuck = <RoborockErrorCode.bumper_stuck: 2>
wheels_suspended = <RoborockErrorCode.wheels_suspended: 3>
cliff_sensor_error = <RoborockErrorCode.cliff_sensor_error: 4>
main_brush_jammed = <RoborockErrorCode.main_brush_jammed: 5>
side_brush_jammed = <RoborockErrorCode.side_brush_jammed: 6>
wheels_jammed = <RoborockErrorCode.wheels_jammed: 7>
robot_trapped = <RoborockErrorCode.robot_trapped: 8>
no_dustbin = <RoborockErrorCode.no_dustbin: 9>
strainer_error = <RoborockErrorCode.strainer_error: 10>
compass_error = <RoborockErrorCode.compass_error: 11>
low_battery = <RoborockErrorCode.low_battery: 12>
charging_error = <RoborockErrorCode.charging_error: 13>
battery_error = <RoborockErrorCode.battery_error: 14>
wall_sensor_dirty = <RoborockErrorCode.wall_sensor_dirty: 15>
robot_tilted = <RoborockErrorCode.robot_tilted: 16>
side_brush_error = <RoborockErrorCode.side_brush_error: 17>
fan_error = <RoborockErrorCode.fan_error: 18>
dock = <RoborockErrorCode.dock: 19>
optical_flow_sensor_dirt = <RoborockErrorCode.optical_flow_sensor_dirt: 20>
vertical_bumper_pressed = <RoborockErrorCode.vertical_bumper_pressed: 21>
dock_locator_error = <RoborockErrorCode.dock_locator_error: 22>
return_to_dock_fail = <RoborockErrorCode.return_to_dock_fail: 23>
nogo_zone_detected = <RoborockErrorCode.nogo_zone_detected: 24>
visual_sensor = <RoborockErrorCode.visual_sensor: 25>
light_touch = <RoborockErrorCode.light_touch: 26>
vibrarise_jammed = <RoborockErrorCode.vibrarise_jammed: 27>
robot_on_carpet = <RoborockErrorCode.robot_on_carpet: 28>
filter_blocked = <RoborockErrorCode.filter_blocked: 29>
invisible_wall_detected = <RoborockErrorCode.invisible_wall_detected: 30>
cannot_cross_carpet = <RoborockErrorCode.cannot_cross_carpet: 31>
internal_error = <RoborockErrorCode.internal_error: 32>
collect_dust_error_3 = <RoborockErrorCode.collect_dust_error_3: 34>
collect_dust_error_4 = <RoborockErrorCode.collect_dust_error_4: 35>
mopping_roller_1 = <RoborockErrorCode.mopping_roller_1: 36>
mopping_roller_error_2 = <RoborockErrorCode.mopping_roller_error_2: 37>
clear_water_box_hoare = <RoborockErrorCode.clear_water_box_hoare: 38>
dirty_water_box_hoare = <RoborockErrorCode.dirty_water_box_hoare: 39>
sink_strainer_hoare = <RoborockErrorCode.sink_strainer_hoare: 40>
clear_water_box_exception = <RoborockErrorCode.clear_water_box_exception: 41>
clear_brush_exception = <RoborockErrorCode.clear_brush_exception: 42>
clear_brush_exception_2 = <RoborockErrorCode.clear_brush_exception_2: 43>
filter_screen_exception = <RoborockErrorCode.filter_screen_exception: 44>
mopping_roller_2 = <RoborockErrorCode.mopping_roller_2: 45>
up_water_exception = <RoborockErrorCode.up_water_exception: 48>
drain_water_exception = <RoborockErrorCode.drain_water_exception: 49>
temperature_protection = <RoborockErrorCode.temperature_protection: 51>
water_carriage_drop = <RoborockErrorCode.water_carriage_drop: 54>
check_clean_carouse = <RoborockErrorCode.check_clean_carouse: 55>
audio_error = <RoborockErrorCode.audio_error: 56>
class RoborockFanPowerCode(roborock.data.code_mappings.RoborockEnum):
247class RoborockFanPowerCode(RoborockEnum):
248    """Describes the fan power of the vacuum cleaner."""
249
250    # Fan speeds should have the first letter capitalized - as there is no way to change the name in translations as
251    # far as I am aware

Describes the fan power of the vacuum cleaner.

class RoborockFanSpeedV1(RoborockFanPowerCode):
254class RoborockFanSpeedV1(RoborockFanPowerCode):
255    silent = 38
256    standard = 60
257    medium = 77
258    turbo = 90

Describes the fan power of the vacuum cleaner.

silent = <RoborockFanSpeedV1.silent: 38>
standard = <RoborockFanSpeedV1.standard: 60>
medium = <RoborockFanSpeedV1.medium: 77>
turbo = <RoborockFanSpeedV1.turbo: 90>
class RoborockFanSpeedV2(RoborockFanPowerCode):
261class RoborockFanSpeedV2(RoborockFanPowerCode):
262    silent = 101
263    balanced = 102
264    turbo = 103
265    max = 104
266    gentle = 105
267    auto = 106

Describes the fan power of the vacuum cleaner.

silent = <RoborockFanSpeedV2.silent: 101>
balanced = <RoborockFanSpeedV2.balanced: 102>
turbo = <RoborockFanSpeedV2.turbo: 103>
max = <RoborockFanSpeedV2.max: 104>
gentle = <RoborockFanSpeedV2.gentle: 105>
auto = <RoborockFanSpeedV2.auto: 106>
class RoborockFanSpeedV3(RoborockFanPowerCode):
270class RoborockFanSpeedV3(RoborockFanPowerCode):
271    silent = 38
272    standard = 60
273    medium = 75
274    turbo = 100

Describes the fan power of the vacuum cleaner.

silent = <RoborockFanSpeedV3.silent: 38>
standard = <RoborockFanSpeedV3.standard: 60>
medium = <RoborockFanSpeedV3.medium: 75>
turbo = <RoborockFanSpeedV3.turbo: 100>
class RoborockFanSpeedE2(RoborockFanPowerCode):
277class RoborockFanSpeedE2(RoborockFanPowerCode):
278    gentle = 41
279    silent = 50
280    standard = 68
281    medium = 79
282    turbo = 100

Describes the fan power of the vacuum cleaner.

gentle = <RoborockFanSpeedE2.gentle: 41>
silent = <RoborockFanSpeedE2.silent: 50>
standard = <RoborockFanSpeedE2.standard: 68>
medium = <RoborockFanSpeedE2.medium: 79>
turbo = <RoborockFanSpeedE2.turbo: 100>
class RoborockMopIntensityCode(roborock.data.code_mappings.RoborockEnum):
285class RoborockMopIntensityCode(RoborockEnum):
286    """Describes the mop intensity of the vacuum cleaner."""

Describes the mop intensity of the vacuum cleaner.

class RoborockMopIntensityV2(RoborockMopIntensityCode):
289class RoborockMopIntensityV2(RoborockMopIntensityCode):
290    """Describes the mop intensity of the vacuum cleaner."""
291
292    off = 200
293    low = 201
294    medium = 202
295    high = 203
296    custom = 207

Describes the mop intensity of the vacuum cleaner.

class RoborockDockErrorCode(roborock.data.code_mappings.RoborockEnum):
299class RoborockDockErrorCode(RoborockEnum):
300    """Describes the error code of the dock."""
301
302    ok = 0
303    """No error condition."""
304
305    no_dustbin_or_filter = 32
306    """No dock dustbin or filter installed.
307
308    This error message applies to auto-empty docks.
309    """
310
311    auto_empty_dock_fan_error = 33
312    """Auto-Empty Dock fan error: Dock dustbin or filter out of place."""
313
314    duct_blockage = 34
315    """Auto-Empty Dock jammed: Dock dustbin, filter, or air duct jammed, check and clean it."""
316
317    auto_empty_dock_voltage_error = 35
318    """Auto-Empty Dock voltage error: Unable to empty the dustbin."""
319
320    water_empty = 38
321    """Clean water tank empty: Check tank placement or refill as required."""
322
323    waste_water_tank_full = 39
324    """Check the dirty water tank: Check tank placement or empty as required."""
325
326    maintenance_brush_jammed = 42
327    """Self-cleaning roller error: Maintenance brush jammed. Remove and clean."""
328
329    dirty_tank_latch_open = 44
330    """Water filter blocked: Clean and reinstall.
331
332    Make sure that the dirty water tank cover is closed and the latch is secured.
333    """
334
335    no_dustbin = 46
336    """Dustbin not installed (Standard error for missing dustbin).
337
338    This error message applies to larger wash docks.
339    """
340
341    cleaning_tank_full_or_blocked = 53
342    """Cleaning tank full or blocked (Water filter or sink strainer blocked/not installed)."""

Describes the error code of the dock.

No error condition.

no_dustbin_or_filter = <RoborockDockErrorCode.no_dustbin_or_filter: 32>

No dock dustbin or filter installed.

This error message applies to auto-empty docks.

auto_empty_dock_fan_error = <RoborockDockErrorCode.auto_empty_dock_fan_error: 33>

Auto-Empty Dock fan error: Dock dustbin or filter out of place.

duct_blockage = <RoborockDockErrorCode.duct_blockage: 34>

Auto-Empty Dock jammed: Dock dustbin, filter, or air duct jammed, check and clean it.

auto_empty_dock_voltage_error = <RoborockDockErrorCode.auto_empty_dock_voltage_error: 35>

Auto-Empty Dock voltage error: Unable to empty the dustbin.

water_empty = <RoborockDockErrorCode.water_empty: 38>

Clean water tank empty: Check tank placement or refill as required.

waste_water_tank_full = <RoborockDockErrorCode.waste_water_tank_full: 39>

Check the dirty water tank: Check tank placement or empty as required.

maintenance_brush_jammed = <RoborockDockErrorCode.maintenance_brush_jammed: 42>

Self-cleaning roller error: Maintenance brush jammed. Remove and clean.

dirty_tank_latch_open = <RoborockDockErrorCode.dirty_tank_latch_open: 44>

Water filter blocked: Clean and reinstall.

Make sure that the dirty water tank cover is closed and the latch is secured.

Dustbin not installed (Standard error for missing dustbin).

This error message applies to larger wash docks.

cleaning_tank_full_or_blocked = <RoborockDockErrorCode.cleaning_tank_full_or_blocked: 53>

Cleaning tank full or blocked (Water filter or sink strainer blocked/not installed).

class RoborockDockTypeCode(roborock.data.code_mappings.RoborockEnum):
345class RoborockDockTypeCode(RoborockEnum):
346    unknown = -9999
347    o0_dock = 0
348    o1_dock = 1
349    o2_dock = 2
350    o3_dock = 3
351    oc_dock = 5
352    o3_plus_dock = 6
353    o4_dock = 7
354    pearl_dock = 8
355    pearl_plus_dock = 9
356    o5_dock = 10
357    shell_2s_dock = 11
358    couple_dock = 13
359    shell_3_dock = 14
360    shell_2c_dock = 15
361    shell_3s_dock = 16
362    k1_dock = 17
363    o6_dock = 18
364    k1c_dock = 19
365    k1s_dock = 20
366    shell_e_dock = 21
367    shell_2e_dock = 22
368    shell_3c_dock = 23
369    hera_dock = 24
370    k1s_pro_dock = 26
371    type_27_dock = 27
372    k1c_lite_dock = 28
373    k1r_dock = 29
374    shell_2e_lite_dock = 30
375    shell_4rc_dock = 31
376    shell_4r_dock = 32
377    shell_4p_dock = 33
378    shell_4s_dock = 34
379    o7_dock = 35
380    k1d_dock = 37
381    shell_3p_dock = 38
382    shell_4d_dock = 39
383    shell_2e_heat_dock = 40
384    f1_dock = 41
385    f1r_dock = 42
386    f2r_dock = 43
387    f1s_dock = 44
388    o7h_dock = 45
389    f1c_dock = 46

Roborock Enum for codes with int values

unknown = <RoborockDockTypeCode.unknown: -9999>
o3_plus_dock = <RoborockDockTypeCode.o3_plus_dock: 6>
pearl_plus_dock = <RoborockDockTypeCode.pearl_plus_dock: 9>
shell_2s_dock = <RoborockDockTypeCode.shell_2s_dock: 11>
couple_dock = <RoborockDockTypeCode.couple_dock: 13>
shell_3_dock = <RoborockDockTypeCode.shell_3_dock: 14>
shell_2c_dock = <RoborockDockTypeCode.shell_2c_dock: 15>
shell_3s_dock = <RoborockDockTypeCode.shell_3s_dock: 16>
shell_e_dock = <RoborockDockTypeCode.shell_e_dock: 21>
shell_2e_dock = <RoborockDockTypeCode.shell_2e_dock: 22>
shell_3c_dock = <RoborockDockTypeCode.shell_3c_dock: 23>
hera_dock = <RoborockDockTypeCode.hera_dock: 24>
k1s_pro_dock = <RoborockDockTypeCode.k1s_pro_dock: 26>
type_27_dock = <RoborockDockTypeCode.type_27_dock: 27>
k1c_lite_dock = <RoborockDockTypeCode.k1c_lite_dock: 28>
shell_2e_lite_dock = <RoborockDockTypeCode.shell_2e_lite_dock: 30>
shell_4rc_dock = <RoborockDockTypeCode.shell_4rc_dock: 31>
shell_4r_dock = <RoborockDockTypeCode.shell_4r_dock: 32>
shell_4p_dock = <RoborockDockTypeCode.shell_4p_dock: 33>
shell_4s_dock = <RoborockDockTypeCode.shell_4s_dock: 34>
shell_3p_dock = <RoborockDockTypeCode.shell_3p_dock: 38>
shell_4d_dock = <RoborockDockTypeCode.shell_4d_dock: 39>
shell_2e_heat_dock = <RoborockDockTypeCode.shell_2e_heat_dock: 40>
class RoborockDockDustCollectionModeCode(roborock.data.code_mappings.RoborockEnum):
392class RoborockDockDustCollectionModeCode(RoborockEnum):
393    """Describes the dust collection mode of the vacuum cleaner."""
394
395    # TODO: Get the correct values for various different docks
396    unknown = -9999
397    smart = 0
398    light = 1
399    balanced = 2
400    max = 4

Describes the dust collection mode of the vacuum cleaner.

class RoborockStateCode(roborock.data.code_mappings.RoborockEnum):
403class RoborockStateCode(RoborockEnum):
404    unknown = 0
405    starting = 1
406    charger_disconnected = 2
407    idle = 3
408    remote_control_active = 4
409    cleaning = 5
410    returning_home = 6
411    manual_mode = 7
412    charging = 8
413    charging_problem = 9
414    paused = 10
415    spot_cleaning = 11
416    error = 12
417    shutting_down = 13
418    updating = 14
419    docking = 15
420    going_to_target = 16
421    zoned_cleaning = 17
422    segment_cleaning = 18
423    emptying_the_bin = 22  # on s7+
424    washing_the_mop = 23  # on a46
425    washing_the_mop_2 = (25, "washing_the_mop")
426    going_to_wash_the_mop = 26  # on a46
427    in_call = 28
428    mapping = 29
429    egg_attack = 30
430    patrol = 32
431    attaching_the_mop = 33  # on g20s ultra
432    detaching_the_mop = 34  # on g20s ultra
433    charging_complete = 100
434    device_offline = 101
435    locked = 103
436    air_drying_stopping = 202
437    robot_status_mopping = 6301
438    clean_mop_cleaning = 6302
439    clean_mop_mopping = 6303
440    segment_mopping = 6304
441    segment_clean_mop_cleaning = 6305
442    segment_clean_mop_mopping = 6306
443    zoned_mopping = 6307
444    zoned_clean_mop_cleaning = 6308
445    zoned_clean_mop_mopping = 6309
446    back_to_dock_washing_duster = 6310

Roborock Enum for codes with int values

unknown = <RoborockStateCode.unknown: 0>
starting = <RoborockStateCode.starting: 1>
charger_disconnected = <RoborockStateCode.charger_disconnected: 2>
remote_control_active = <RoborockStateCode.remote_control_active: 4>
cleaning = <RoborockStateCode.cleaning: 5>
returning_home = <RoborockStateCode.returning_home: 6>
manual_mode = <RoborockStateCode.manual_mode: 7>
charging = <RoborockStateCode.charging: 8>
charging_problem = <RoborockStateCode.charging_problem: 9>
paused = <RoborockStateCode.paused: 10>
spot_cleaning = <RoborockStateCode.spot_cleaning: 11>
error = <RoborockStateCode.error: 12>
shutting_down = <RoborockStateCode.shutting_down: 13>
updating = <RoborockStateCode.updating: 14>
docking = <RoborockStateCode.docking: 15>
going_to_target = <RoborockStateCode.going_to_target: 16>
zoned_cleaning = <RoborockStateCode.zoned_cleaning: 17>
segment_cleaning = <RoborockStateCode.segment_cleaning: 18>
emptying_the_bin = <RoborockStateCode.emptying_the_bin: 22>
washing_the_mop = <RoborockStateCode.washing_the_mop: 23>
washing_the_mop_2 = <RoborockStateCode.washing_the_mop_2: 25>
going_to_wash_the_mop = <RoborockStateCode.going_to_wash_the_mop: 26>
in_call = <RoborockStateCode.in_call: 28>
mapping = <RoborockStateCode.mapping: 29>
egg_attack = <RoborockStateCode.egg_attack: 30>
patrol = <RoborockStateCode.patrol: 32>
attaching_the_mop = <RoborockStateCode.attaching_the_mop: 33>
detaching_the_mop = <RoborockStateCode.detaching_the_mop: 34>
charging_complete = <RoborockStateCode.charging_complete: 100>
device_offline = <RoborockStateCode.device_offline: 101>
locked = <RoborockStateCode.locked: 103>
air_drying_stopping = <RoborockStateCode.air_drying_stopping: 202>
robot_status_mopping = <RoborockStateCode.robot_status_mopping: 6301>
clean_mop_cleaning = <RoborockStateCode.clean_mop_cleaning: 6302>
clean_mop_mopping = <RoborockStateCode.clean_mop_mopping: 6303>
segment_mopping = <RoborockStateCode.segment_mopping: 6304>
segment_clean_mop_cleaning = <RoborockStateCode.segment_clean_mop_cleaning: 6305>
segment_clean_mop_mopping = <RoborockStateCode.segment_clean_mop_mopping: 6306>
zoned_mopping = <RoborockStateCode.zoned_mopping: 6307>
zoned_clean_mop_cleaning = <RoborockStateCode.zoned_clean_mop_cleaning: 6308>
zoned_clean_mop_mopping = <RoborockStateCode.zoned_clean_mop_mopping: 6309>
back_to_dock_washing_duster = <RoborockStateCode.back_to_dock_washing_duster: 6310>