Skip to content

Commit aaaf0f0

Browse files
authored
feat: add s8_maxv_ultra info (#202)
1 parent 2702f50 commit aaaf0f0

File tree

5 files changed

+81
-0
lines changed

5 files changed

+81
-0
lines changed

docs/source/api_commands.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ Api commands
22
============
33
This page is still under construction. All of the following are the commands we have reverse engineered. It is not an exhaustive list of all the possible commands.
44

5+
Commands do not immediately make it to this page. You can find more commands [here](https://github.com/humbertogontijo/python-roborock/blob/main/roborock/roborock_typing.py#L18)
6+
57
Commands can have multiple parameters that can change from one model to another.
68

79
* :ref:`app_charge`

roborock/code_mappings.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,12 @@ class RoborockStateCode(RoborockEnum):
6565
segment_cleaning = 18
6666
emptying_the_bin = 22 # on s7+
6767
washing_the_mop = 23 # on a46
68+
washing_the_mop_2 = 25
6869
going_to_wash_the_mop = 26 # on a46
6970
in_call = 28
7071
mapping = 29
7172
egg_attack = 30
73+
patrol = 32
7274
charging_complete = 100
7375
device_offline = 101
7476
locked = 103
@@ -126,6 +128,7 @@ class RoborockErrorCode(RoborockEnum):
126128
side_brush_error = 17
127129
fan_error = 18
128130
dock = 19 # Dock not connected to power
131+
optical_flow_sensor_dirt = 20
129132
vertical_bumper_pressed = 21
130133
dock_locator_error = 22
131134
return_to_dock_fail = 23
@@ -150,7 +153,14 @@ class RoborockErrorCode(RoborockEnum):
150153
clear_brush_exception_2 = 43 # Positioning button error
151154
filter_screen_exception = 44 # Clean the dock water filter
152155
mopping_roller_2 = 45 # Wash roller may be jammed
156+
up_water_exception = 48
157+
drain_water_exception = 49
153158
temperature_protection = 51 # Unit temperature protection
159+
clean_carousel_exception = 52
160+
clean_carousel_water_full = 53
161+
water_carriage_drop = 54
162+
check_clean_carouse = 55
163+
audio_error = 56
154164

155165

156166
class RoborockFanPowerCode(RoborockEnum):
@@ -236,6 +246,14 @@ class RoborockFanSpeedP10(RoborockFanPowerCode):
236246
max_plus = 108
237247

238248

249+
class RoborockFanSpeedS8MaxVUltra(RoborockFanPowerCode):
250+
off = 105
251+
balanced = 102
252+
custom = 106
253+
max_plus = 108
254+
smart_mode = 110
255+
256+
239257
class RoborockMopModeCode(RoborockEnum):
240258
"""Describes the mop mode of the vacuum cleaner."""
241259

@@ -257,6 +275,15 @@ class RoborockMopModeS8ProUltra(RoborockMopModeCode):
257275
custom = 302
258276

259277

278+
class RoborockMopModeS8MaxVUltra(RoborockMopModeCode):
279+
standard = 300
280+
deep = 301
281+
deep_plus = 303
282+
fast = 304
283+
deep_plus_pearl = 305
284+
smart_mode = 306
285+
286+
260287
class RoborockMopIntensityCode(RoborockEnum):
261288
"""Describes the mop intensity of the vacuum cleaner."""
262289

@@ -292,6 +319,14 @@ class RoborockMopIntensityP10(RoborockMopIntensityCode):
292319
custom_water_flow = 207
293320

294321

322+
class RoborockMopIntensityS8MaxVUltra(RoborockMopIntensityCode):
323+
off = 200
324+
low = 201
325+
medium = 202
326+
smart_mode = 209
327+
custom_water_flow = 207
328+
329+
295330
class RoborockMopIntensityS5Max(RoborockMopIntensityCode):
296331
"""Describes the mop intensity of the vacuum cleaner."""
297332

@@ -321,6 +356,7 @@ class RoborockDockErrorCode(RoborockEnum):
321356
duct_blockage = 34
322357
water_empty = 38
323358
waste_water_tank_full = 39
359+
maintenance_brush_jammed = 42
324360
dirty_tank_latch_open = 44
325361
no_dustbin = 46
326362
cleaning_tank_full_or_blocked = 53
@@ -335,6 +371,7 @@ class RoborockDockTypeCode(RoborockEnum):
335371
s7_max_ultra_dock = 6
336372
s8_dock = 7
337373
p10_dock = 8
374+
s8_maxv_ultra_dock = 10
338375

339376

340377
class RoborockDockDustCollectionModeCode(RoborockEnum):

roborock/const.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
ROBOROCK_S8_PRO_ULTRA = "roborock.vacuum.a70"
4444
ROBOROCK_S8 = "roborock.vacuum.a51"
4545
ROBOROCK_P10 = "roborock.vacuum.a75"
46+
ROBOROCK_S8_MAXV_ULTRA = "roborock.vacuum.a97"
4647

4748
ROBOROCK_DYAD_AIR = "roborock.wetdryvac.a107"
4849
ROBOROCK_DYAD_PRO_COMBO = "roborock.wetdryvac.a83"

roborock/containers.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,17 @@
2424
RoborockFanSpeedS6Pure,
2525
RoborockFanSpeedS7,
2626
RoborockFanSpeedS7MaxV,
27+
RoborockFanSpeedS8MaxVUltra,
2728
RoborockMopIntensityCode,
2829
RoborockMopIntensityP10,
2930
RoborockMopIntensityS5Max,
3031
RoborockMopIntensityS6MaxV,
3132
RoborockMopIntensityS7,
33+
RoborockMopIntensityS8MaxVUltra,
3234
RoborockMopIntensityV2,
3335
RoborockMopModeCode,
3436
RoborockMopModeS7,
37+
RoborockMopModeS8MaxVUltra,
3538
RoborockMopModeS8ProUltra,
3639
RoborockStateCode,
3740
)
@@ -52,6 +55,7 @@
5255
ROBOROCK_S7,
5356
ROBOROCK_S7_MAXV,
5457
ROBOROCK_S8,
58+
ROBOROCK_S8_MAXV_ULTRA,
5559
ROBOROCK_S8_PRO_ULTRA,
5660
SENSOR_DIRTY_REPLACE_TIME,
5761
SIDE_BRUSH_REPLACE_TIME,
@@ -550,6 +554,13 @@ class P10Status(Status):
550554
mop_mode: RoborockMopModeS8ProUltra | None = None
551555

552556

557+
@dataclass
558+
class S8MaxvUltraStatus(Status):
559+
fan_power: RoborockFanSpeedS8MaxVUltra | None = None
560+
water_box_mode: RoborockMopIntensityS8MaxVUltra | None = None
561+
mop_mode: RoborockMopModeS8MaxVUltra | None = None
562+
563+
553564
ModelStatus: dict[str, type[Status]] = {
554565
ROBOROCK_S4_MAX: S4MaxStatus,
555566
ROBOROCK_S5_MAX: S5MaxStatus,
@@ -563,6 +574,7 @@ class P10Status(Status):
563574
ROBOROCK_S8_PRO_ULTRA: S8ProUltraStatus,
564575
ROBOROCK_G10S_PRO: S7MaxVStatus,
565576
ROBOROCK_P10: P10Status,
577+
ROBOROCK_S8_MAXV_ULTRA: S8MaxvUltraStatus,
566578
}
567579

568580

roborock/roborock_typing.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,13 @@ class RoborockCommand(str, Enum):
3535
APP_RC_START = "app_rc_start"
3636
APP_RC_STOP = "app_rc_stop"
3737
APP_RESUME_BUILD_MAP = "app_resume_build_map"
38+
APP_RESUME_PATROL = "app_resume_patrol"
3839
APP_SEGMENT_CLEAN = "app_segment_clean"
3940
APP_SET_AMETHYST_STATUS = "app_set_amethyst_status"
4041
APP_SET_CARPET_DEEP_CLEAN_STATUS = "app_set_carpet_deep_clean_status"
42+
APP_SET_CROSS_CARPET_CLEANING_STATUS = "app_set_cross_carpet_cleaning_status"
4143
APP_SET_DOOR_SILL_BLOCKS = "app_set_door_sill_blocks"
44+
APP_SET_DIRTY_REPLENISH_CLEAN_STATUS = "app_set_dirty_replenish_clean_status"
4245
APP_SET_DRYER_SETTING = "app_set_dryer_setting"
4346
APP_SET_DRYER_STATUS = "app_set_dryer_status"
4447
APP_SET_DYNAMIC_CONFIG = "app_set_dynamic_config"
@@ -50,6 +53,8 @@ class RoborockCommand(str, Enum):
5053
APP_START_BUILD_MAP = "app_start_build_map"
5154
APP_START_COLLECT_DUST = "app_start_collect_dust"
5255
APP_START_EASTER_EGG = "app_start_easter_egg"
56+
APP_START_PATROL = "app_start_patrol"
57+
APP_START_PET_PATROL = "app_start_pet_patrol"
5358
APP_START_WASH = "app_start_wash"
5459
APP_STAT = "app_stat"
5560
APP_STOP = "app_stop"
@@ -177,6 +182,7 @@ class RoborockCommand(str, Enum):
177182
SET_CLEAN_FOLLOW_GROUND_MATERIAL_STATUS = "set_clean_follow_ground_material_status"
178183
SET_CLEAN_MOTOR_MODE = "set_clean_motor_mode"
179184
SET_CLEAN_SEQUENCE = "set_clean_sequence"
185+
SET_CLEAN_REPEAT_TIMES = "set_clean_repeat_times"
180186
SET_COLLISION_AVOID_STATUS = "set_collision_avoid_status"
181187
SET_CUSTOM_MODE = "set_custom_mode"
182188
SET_CUSTOMIZE_CLEAN_MODE = "set_customize_clean_mode"
@@ -239,6 +245,29 @@ class RoborockCommand(str, Enum):
239245
USE_NEW_MAP = "use_new_map"
240246
USE_OLD_MAP = "use_old_map"
241247
USER_UPLOAD_LOG = "user_upload_log"
248+
SET_STRETCH_TAG_STATUS = "set_stretch_tag_status"
249+
GET_STRETCH_TAG_STATUS = "get_stretch_tag_status"
250+
SET_RIGHT_BRUSH_STRETCH_STATUS = "set_right_brush_stretch_status"
251+
GET_RIGHT_BRUSH_STRETCH_STATUS = "get_right_brush_stretch_status"
252+
SET_DIRTY_OBJECT_DETECT_STATUS = "set_dirty_object_detect_status"
253+
GET_DIRTY_OBJECT_DETECT_STATUS = "get_dirty_object_detect_status"
254+
SET_WASH_WATER_TEMPERATURE = "set_wash_water_temperature"
255+
GET_WASH_WATER_TEMPERATURE = "get_wash_water_temperature"
256+
APP_EMPTY_RINSE_TANK_WATER = "app_empty_rinse_tank_water"
257+
SET_PET_SUPPLIES_DEEP_CLEAN_STATUS = "set_pet_supplies_deep_clean_status"
258+
GET_PET_SUPPLIES_DEEP_CLEAN_STATUS = "get_pet_supplies_deep_clean_status"
259+
SET_AP_MIC_LED_STATUS = "set_ap_mic_led_status"
260+
GET_AP_MIC_LED_STATUS = "get_ap_mic_led_status"
261+
SET_HANDLE_LEAK_WATER_STATUS = "set_handle_leak_water_status"
262+
GET_HANDLE_LEAK_WATER_STATUS = "get_handle_leak_water_status"
263+
APP_IGNORE_DIRTY_OBJECTS = "app_ignore_dirty_objects"
264+
MATTER_GET_STATUS = "matter.get_status"
265+
MATTER_DNLD_KEY = "matter.dnld_key"
266+
MATTER_RESET = "matter.reset"
267+
SET_GAP_DEEP_CLEAN_STATUS = "set_gap_deep_clean_status"
268+
GET_GAP_DEEP_CLEAN_STATUS = "get_gap_deep_clean_status"
269+
APP_SET_ROBOT_SETTING = "app_set_robot_setting"
270+
APP_GET_ROBOT_SETTING = "app_get_robot_setting"
242271

243272

244273
@dataclass

0 commit comments

Comments
 (0)