Skip to content

Commit 93efc0c

Browse files
Merge remote-tracking branch 'origin/main'
2 parents bf52b44 + f0ac4f7 commit 93efc0c

File tree

1 file changed

+135
-111
lines changed

1 file changed

+135
-111
lines changed

roborock/code_mappings.py

Lines changed: 135 additions & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55

66
class RoborockEnum(str, Enum):
7-
87
def __str__(self):
98
return str(self.value)
109

@@ -29,113 +28,138 @@ def items(cls):
2928
return cls.as_dict().items()
3029

3130

32-
class RoborockCode:
33-
34-
def __new__(cls, name: str, data: dict):
35-
return RoborockEnum(name, {str(key): value for key, value in data.items()})
36-
37-
38-
RoborockStateCode = RoborockCode("RoborockStateCode", {
39-
1: "starting",
40-
2: "charger_disconnected",
41-
3: "idle",
42-
4: "remote_control_active",
43-
5: "cleaning",
44-
6: "returning_home",
45-
7: "manual_mode",
46-
8: "charging",
47-
9: "charging_problem",
48-
10: "paused",
49-
11: "spot_cleaning",
50-
12: "error",
51-
13: "shutting_down",
52-
14: "updating",
53-
15: "docking",
54-
16: "going_to_target",
55-
17: "zoned_cleaning",
56-
18: "segment_cleaning",
57-
22: "emptying_the_bin", # on s7+, see #1189
58-
23: "washing_the_mop", # on a46, #1435
59-
26: "going_to_wash_the_mop", # on a46, #1435
60-
100: "charging_complete",
61-
101: "device_offline",
62-
})
63-
64-
RoborockErrorCode = RoborockCode("RoborockErrorCode", {
65-
0: "none",
66-
1: "lidar_blocked",
67-
2: "bumper_stuck",
68-
3: "wheels_suspended",
69-
4: "cliff_sensor_error",
70-
5: "main_brush_jammed",
71-
6: "side_brush_jammed",
72-
7: "wheels_jammed",
73-
8: "robot_trapped",
74-
9: "no_dustbin",
75-
12: "low_battery",
76-
13: "charging_error",
77-
14: "battery_error",
78-
15: "wall_sensor_dirty",
79-
16: "robot_tilted",
80-
17: "side_brush_error",
81-
18: "fan_error",
82-
21: "vertical_bumper_pressed",
83-
22: "dock_locator_error",
84-
23: "return_to_dock_fail",
85-
24: "no-go_zone_detected",
86-
27: "vibrarise_jammed",
87-
28: "robot_on_carpet",
88-
29: "filter_blocked",
89-
30: "invisible_wall_detected",
90-
31: "cannot_cross_carpet",
91-
32: "internal_error"
92-
})
93-
94-
RoborockFanPowerCode = RoborockCode("RoborockFanPowerCode", {
95-
105: "off",
96-
101: "silent",
97-
102: "balanced",
98-
103: "turbo",
99-
104: "max",
100-
108: "max_plus",
101-
106: "custom",
102-
})
103-
104-
RoborockMopModeCode = RoborockCode("RoborockMopModeCode", {
105-
300: "standard",
106-
301: "deep",
107-
303: "deep_plus",
108-
302: "custom",
109-
})
110-
111-
RoborockMopIntensityCode = RoborockCode("RoborockMopIntensityCode", {
112-
200: "off",
113-
201: "mild",
114-
202: "moderate",
115-
203: "intense",
116-
204: "custom",
117-
})
118-
119-
RoborockDockErrorCode = RoborockCode("RoborockDockErrorCode", {
120-
0: "ok",
121-
38: 'water empty',
122-
39: 'waste water tank full',
123-
})
124-
125-
RoborockDockTypeCode = RoborockCode("RoborockDockTypeCode", {
126-
0: "no_dock",
127-
3: "empty_wash_fill_dock",
128-
})
129-
130-
RoborockDockDustCollectionModeCode = RoborockCode("RoborockDockDustCollectionModeCode", {
131-
0: "smart",
132-
1: "light",
133-
2: "balanced",
134-
4: "max",
135-
})
136-
137-
RoborockDockWashTowelModeCode = RoborockCode("RoborockDockWashTowelModeCode", {
138-
0: "light",
139-
1: "balanced",
140-
2: "deep",
141-
})
31+
def create_code_enum(name: str, data: dict) -> RoborockEnum:
32+
return RoborockEnum(name, {str(key): value for key, value in data.items()})
33+
34+
35+
RoborockStateCode = create_code_enum(
36+
"RoborockStateCode",
37+
{
38+
1: "starting",
39+
2: "charger_disconnected",
40+
3: "idle",
41+
4: "remote_control_active",
42+
5: "cleaning",
43+
6: "returning_home",
44+
7: "manual_mode",
45+
8: "charging",
46+
9: "charging_problem",
47+
10: "paused",
48+
11: "spot_cleaning",
49+
12: "error",
50+
13: "shutting_down",
51+
14: "updating",
52+
15: "docking",
53+
16: "going_to_target",
54+
17: "zoned_cleaning",
55+
18: "segment_cleaning",
56+
22: "emptying_the_bin", # on s7+, see #1189
57+
23: "washing_the_mop", # on a46, #1435
58+
26: "going_to_wash_the_mop", # on a46, #1435
59+
100: "charging_complete",
60+
101: "device_offline",
61+
},
62+
)
63+
64+
RoborockErrorCode = create_code_enum(
65+
"RoborockErrorCode",
66+
{
67+
0: "none",
68+
1: "lidar_blocked",
69+
2: "bumper_stuck",
70+
3: "wheels_suspended",
71+
4: "cliff_sensor_error",
72+
5: "main_brush_jammed",
73+
6: "side_brush_jammed",
74+
7: "wheels_jammed",
75+
8: "robot_trapped",
76+
9: "no_dustbin",
77+
12: "low_battery",
78+
13: "charging_error",
79+
14: "battery_error",
80+
15: "wall_sensor_dirty",
81+
16: "robot_tilted",
82+
17: "side_brush_error",
83+
18: "fan_error",
84+
21: "vertical_bumper_pressed",
85+
22: "dock_locator_error",
86+
23: "return_to_dock_fail",
87+
24: "no-go_zone_detected",
88+
27: "vibrarise_jammed",
89+
28: "robot_on_carpet",
90+
29: "filter_blocked",
91+
30: "invisible_wall_detected",
92+
31: "cannot_cross_carpet",
93+
32: "internal_error",
94+
},
95+
)
96+
97+
RoborockFanPowerCode = create_code_enum(
98+
"RoborockFanPowerCode",
99+
{
100+
105: "off",
101+
101: "silent",
102+
102: "balanced",
103+
103: "turbo",
104+
104: "max",
105+
108: "max_plus",
106+
106: "custom",
107+
},
108+
)
109+
110+
RoborockMopModeCode = create_code_enum(
111+
"RoborockMopModeCode",
112+
{
113+
300: "standard",
114+
301: "deep",
115+
303: "deep_plus",
116+
302: "custom",
117+
},
118+
)
119+
120+
RoborockMopIntensityCode = create_code_enum(
121+
"RoborockMopIntensityCode",
122+
{
123+
200: "off",
124+
201: "mild",
125+
202: "moderate",
126+
203: "intense",
127+
204: "custom",
128+
},
129+
)
130+
131+
RoborockDockErrorCode = create_code_enum(
132+
"RoborockDockErrorCode",
133+
{
134+
0: "ok",
135+
38: "water empty",
136+
39: "waste water tank full",
137+
},
138+
)
139+
140+
RoborockDockTypeCode = create_code_enum(
141+
"RoborockDockTypeCode",
142+
{
143+
0: "no_dock",
144+
3: "empty_wash_fill_dock",
145+
},
146+
)
147+
148+
RoborockDockDustCollectionModeCode = create_code_enum(
149+
"RoborockDockDustCollectionModeCode",
150+
{
151+
0: "smart",
152+
1: "light",
153+
2: "balanced",
154+
4: "max",
155+
},
156+
)
157+
158+
RoborockDockWashTowelModeCode = create_code_enum(
159+
"RoborockDockWashTowelModeCode",
160+
{
161+
0: "light",
162+
1: "balanced",
163+
2: "deep",
164+
},
165+
)

0 commit comments

Comments
 (0)