Skip to content

Commit 4b85c2b

Browse files
authored
Merge branch 'main' into roborock-cli-cache
2 parents 82595ee + 3b50cd5 commit 4b85c2b

File tree

3 files changed

+140
-178
lines changed

3 files changed

+140
-178
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "python-roborock"
3-
version = "2.29.0"
3+
version = "2.30.0"
44
description = "A package to control Roborock vacuums."
55
authors = ["humbertogontijo <humbertogontijo@users.noreply.github.com>"]
66
license = "GPL-3.0-only"

roborock/device_features.py

Lines changed: 139 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from __future__ import annotations
22

33
from dataclasses import dataclass, field, fields
4-
from enum import IntEnum
4+
from enum import IntEnum, StrEnum
55
from typing import Any
66

77
from roborock import RoborockProductNickname
@@ -59,6 +59,121 @@ class NewFeatureStrBit(IntEnum):
5959
EGG_DANCE_MODE = 87
6060

6161

62+
class ProductFeatures(StrEnum):
63+
REMOTE_BACK = "remote_back"
64+
CLEANMODE_MAXPLUS = "cleanmode_maxplus"
65+
CLEANMODE_PURECLEANMOP = "cleanmode_purecleanmop"
66+
CLEANMODE_NONE_PURECLEANMOP_WITH_MAXPLUS = "cleanmode_none_purecleanmop_with_maxplus"
67+
MOP_ELECTRONIC_MODULE = "mop_electronic_module"
68+
MOP_SHAKE_MODULE = "mop_shake_module"
69+
MOP_SPIN_MODULE = "mop_spin_module"
70+
DEFAULT_MAP3D = "map3d"
71+
DEFAULT_CLEANMODECUSTOM = "custom_cleanmode"
72+
REALTIMEVIDEO = "realtimevideo"
73+
REALTIMEVIDEO_LIVECALL = "realtimevideo_livecall"
74+
REALTIMEVIDEO_RECORDANDSHORTCUT = "realtimevideo_livecall"
75+
CAMERA_SINGLELINE = "camera_singleline"
76+
CAMERA_DUALLINE = "camera_dualline"
77+
CAMERA_RGB = "camera_rgb"
78+
CAMERA_DOUBLERGB = "camera_doublergb"
79+
AIRECOGNITION_SETTING = "airecognition_setting"
80+
AIRECOGNITION_SCENE = "airecognition_scene"
81+
AIRECOGNITION_PET = "airecognition_pet"
82+
AIRECOGNITION_OBSTACLE = "airecognition_obstacle"
83+
84+
85+
# The following combinations are pulled directly from decompiled source code.
86+
AIRECOGNITION_OBSTACLE = [ProductFeatures.AIRECOGNITION_OBSTACLE]
87+
RGB_CAMERA_FEATURES = [
88+
ProductFeatures.CAMERA_RGB,
89+
ProductFeatures.AIRECOGNITION_SETTING,
90+
ProductFeatures.AIRECOGNITION_SCENE,
91+
ProductFeatures.AIRECOGNITION_PET,
92+
ProductFeatures.AIRECOGNITION_OBSTACLE,
93+
ProductFeatures.REALTIMEVIDEO,
94+
ProductFeatures.REALTIMEVIDEO_LIVECALL,
95+
ProductFeatures.REALTIMEVIDEO_RECORDANDSHORTCUT,
96+
]
97+
DOUBLE_RGB_CAMERA_FEATURES = [
98+
ProductFeatures.CAMERA_DOUBLERGB,
99+
ProductFeatures.AIRECOGNITION_SETTING,
100+
ProductFeatures.AIRECOGNITION_PET,
101+
ProductFeatures.AIRECOGNITION_OBSTACLE,
102+
ProductFeatures.REALTIMEVIDEO,
103+
]
104+
SINGLE_LINE_CAMERA_FEATURES = [
105+
ProductFeatures.CAMERA_SINGLELINE,
106+
ProductFeatures.AIRECOGNITION_SETTING,
107+
ProductFeatures.AIRECOGNITION_OBSTACLE,
108+
]
109+
DUAL_LINE_CAMERA_FEATURES = [
110+
ProductFeatures.CAMERA_DUALLINE,
111+
ProductFeatures.AIRECOGNITION_SETTING,
112+
ProductFeatures.AIRECOGNITION_OBSTACLE,
113+
ProductFeatures.AIRECOGNITION_PET,
114+
]
115+
116+
NEW_DEFAULT_FEATURES = [ProductFeatures.REMOTE_BACK, ProductFeatures.CLEANMODE_MAXPLUS]
117+
118+
119+
PEARL_FEATURES = NEW_DEFAULT_FEATURES + SINGLE_LINE_CAMERA_FEATURES + [ProductFeatures.MOP_SPIN_MODULE]
120+
PEARL_PLUS_FEATURES = NEW_DEFAULT_FEATURES + RGB_CAMERA_FEATURES + [ProductFeatures.MOP_SPIN_MODULE]
121+
ULTRON_FEATURES = NEW_DEFAULT_FEATURES + DUAL_LINE_CAMERA_FEATURES + [ProductFeatures.MOP_SHAKE_MODULE]
122+
ULTRONSV_FEATURES = NEW_DEFAULT_FEATURES + RGB_CAMERA_FEATURES + [ProductFeatures.MOP_SHAKE_MODULE]
123+
TANOSS_FEATURES = NEW_DEFAULT_FEATURES + [ProductFeatures.MOP_SHAKE_MODULE]
124+
TOPAZSPOWER_FEATURES = NEW_DEFAULT_FEATURES + [ProductFeatures.MOP_SHAKE_MODULE]
125+
126+
product_feature_map = {
127+
RoborockProductNickname.PEARL: PEARL_FEATURES,
128+
RoborockProductNickname.PEARLS: PEARL_FEATURES,
129+
RoborockProductNickname.PEARLPLUS: PEARL_PLUS_FEATURES,
130+
RoborockProductNickname.VIVIAN: PEARL_PLUS_FEATURES,
131+
RoborockProductNickname.CORAL: PEARL_PLUS_FEATURES,
132+
RoborockProductNickname.ULTRON: ULTRON_FEATURES,
133+
RoborockProductNickname.ULTRONE: [ProductFeatures.CLEANMODE_NONE_PURECLEANMOP_WITH_MAXPLUS],
134+
RoborockProductNickname.ULTRONSV: ULTRONSV_FEATURES,
135+
RoborockProductNickname.TOPAZSPOWER: TOPAZSPOWER_FEATURES,
136+
RoborockProductNickname.TANOSS: TANOSS_FEATURES,
137+
RoborockProductNickname.PEARLC: PEARL_FEATURES,
138+
RoborockProductNickname.PEARLPLUSS: PEARL_PLUS_FEATURES,
139+
RoborockProductNickname.PEARLSLITE: PEARL_FEATURES,
140+
RoborockProductNickname.PEARLE: PEARL_FEATURES,
141+
RoborockProductNickname.PEARLELITE: PEARL_FEATURES,
142+
RoborockProductNickname.VIVIANC: PEARL_PLUS_FEATURES,
143+
RoborockProductNickname.CORALPRO: PEARL_PLUS_FEATURES,
144+
RoborockProductNickname.ULTRONLITE: SINGLE_LINE_CAMERA_FEATURES
145+
+ [ProductFeatures.CLEANMODE_NONE_PURECLEANMOP_WITH_MAXPLUS, ProductFeatures.MOP_ELECTRONIC_MODULE],
146+
RoborockProductNickname.ULTRONSC: ULTRON_FEATURES,
147+
RoborockProductNickname.ULTRONSE: [
148+
ProductFeatures.CLEANMODE_NONE_PURECLEANMOP_WITH_MAXPLUS,
149+
ProductFeatures.MOP_ELECTRONIC_MODULE,
150+
],
151+
RoborockProductNickname.ULTRONSPLUS: ULTRON_FEATURES,
152+
RoborockProductNickname.VERDELITE: ULTRONSV_FEATURES,
153+
RoborockProductNickname.TOPAZS: NEW_DEFAULT_FEATURES + [ProductFeatures.MOP_SHAKE_MODULE],
154+
RoborockProductNickname.TOPAZSPLUS: NEW_DEFAULT_FEATURES
155+
+ DUAL_LINE_CAMERA_FEATURES
156+
+ [ProductFeatures.MOP_SHAKE_MODULE],
157+
RoborockProductNickname.TOPAZSC: TOPAZSPOWER_FEATURES + SINGLE_LINE_CAMERA_FEATURES,
158+
RoborockProductNickname.TOPAZSV: NEW_DEFAULT_FEATURES + RGB_CAMERA_FEATURES + [ProductFeatures.MOP_SHAKE_MODULE],
159+
RoborockProductNickname.TANOSSPLUS: TANOSS_FEATURES + DUAL_LINE_CAMERA_FEATURES,
160+
RoborockProductNickname.TANOSSLITE: [ProductFeatures.MOP_ELECTRONIC_MODULE],
161+
RoborockProductNickname.TANOSSC: [],
162+
RoborockProductNickname.TANOSSE: [],
163+
RoborockProductNickname.TANOSSMAX: NEW_DEFAULT_FEATURES
164+
+ DUAL_LINE_CAMERA_FEATURES
165+
+ [ProductFeatures.MOP_SHAKE_MODULE],
166+
RoborockProductNickname.TANOS: [ProductFeatures.REMOTE_BACK],
167+
RoborockProductNickname.TANOSE: [ProductFeatures.MOP_ELECTRONIC_MODULE, ProductFeatures.REMOTE_BACK],
168+
RoborockProductNickname.TANOSV: DOUBLE_RGB_CAMERA_FEATURES
169+
+ [ProductFeatures.REMOTE_BACK, ProductFeatures.MOP_ELECTRONIC_MODULE],
170+
RoborockProductNickname.RUBYPLUS: [],
171+
RoborockProductNickname.RUBYSC: [],
172+
RoborockProductNickname.RUBYSE: [],
173+
RoborockProductNickname.RUBYSLITE: [ProductFeatures.MOP_ELECTRONIC_MODULE],
174+
}
175+
176+
62177
@dataclass
63178
class DeviceFeatures:
64179
"""Represents the features supported by a Roborock device."""
@@ -290,6 +405,24 @@ class DeviceFeatures:
290405
)
291406
is_support_mop_back_pwm_set: bool = field(metadata={"model_whitelist": [RoborockProductNickname.PEARL]})
292407
is_collect_dust_mode_supported: bool = field(metadata={"model_blacklist": [RoborockProductNickname.PEARL]})
408+
is_support_water_mode: bool = field(
409+
metadata={
410+
"product_features": [
411+
ProductFeatures.MOP_ELECTRONIC_MODULE,
412+
ProductFeatures.MOP_SHAKE_MODULE,
413+
ProductFeatures.MOP_SPIN_MODULE,
414+
]
415+
}
416+
)
417+
is_pure_clean_mop_supported: bool = field(metadata={"product_features": [ProductFeatures.CLEANMODE_PURECLEANMOP]})
418+
is_new_remote_view_supported: bool = field(metadata={"product_features": [ProductFeatures.REMOTE_BACK]})
419+
is_max_plus_mode_supported: bool = field(metadata={"product_features": [ProductFeatures.CLEANMODE_MAXPLUS]})
420+
is_none_pure_clean_mop_with_max_plus: bool = field(
421+
metadata={"product_features": [ProductFeatures.CLEANMODE_NONE_PURECLEANMOP_WITH_MAXPLUS]}
422+
)
423+
is_clean_route_setting_supported: bool = field(
424+
metadata={"product_features": [ProductFeatures.MOP_SHAKE_MODULE, ProductFeatures.MOP_SPIN_MODULE]}
425+
)
293426

294427
@classmethod
295428
def from_feature_flags(
@@ -357,6 +490,11 @@ def from_feature_flags(
357490
kwargs[f.name] = True
358491
else:
359492
kwargs[f.name] = product_nickname not in blacklist
493+
elif (product_features := f.metadata.get("product_features")) is not None:
494+
if product_nickname is not None:
495+
available_features = product_feature_map.get(product_nickname, [])
496+
if any(feat in available_features for feat in product_features): # type: ignore
497+
kwargs[f.name] = True
360498

361499
return cls(**kwargs)
362500

roborock/roborock_typing.py

Lines changed: 0 additions & 176 deletions
Original file line numberDiff line numberDiff line change
@@ -271,182 +271,6 @@ class RoborockCommand(str, Enum):
271271
APP_GET_ROBOT_SETTING = "app_get_robot_setting"
272272

273273

274-
@dataclass
275-
class CommandInfo:
276-
params: list | dict | int | None = None
277-
278-
279-
CommandInfoMap: dict[RoborockCommand | None, CommandInfo] = {
280-
RoborockCommand.APP_CHARGE: CommandInfo(params=[]),
281-
RoborockCommand.APP_GET_DRYER_SETTING: CommandInfo(params=None),
282-
RoborockCommand.APP_GET_INIT_STATUS: CommandInfo(params=[]),
283-
RoborockCommand.APP_GOTO_TARGET: CommandInfo(params=[25000, 24850]),
284-
RoborockCommand.APP_PAUSE: CommandInfo(params=[]),
285-
RoborockCommand.APP_RC_END: CommandInfo(params=[]),
286-
RoborockCommand.APP_RC_MOVE: CommandInfo(params=None),
287-
RoborockCommand.APP_RC_START: CommandInfo(params=[]),
288-
RoborockCommand.APP_RC_STOP: CommandInfo(params=[]),
289-
RoborockCommand.APP_SEGMENT_CLEAN: CommandInfo(params=[{"segments": 16, "repeat": 2}]),
290-
# RoborockCommand.APP_SEGMENT_CLEAN: CommandInfo(prefix=b"\x00\x00\x00\x87", params=None),
291-
RoborockCommand.APP_SET_DRYER_SETTING: CommandInfo(params=None),
292-
RoborockCommand.APP_SET_SMART_CLIFF_FORBIDDEN: CommandInfo(params={"zones": [], "map_index": 0}),
293-
RoborockCommand.APP_SPOT: CommandInfo(params=[]),
294-
RoborockCommand.APP_START: CommandInfo(params=None),
295-
# RoborockCommand.APP_START: CommandInfo(prefix=b"\x00\x00\x00\x87", params=[{"use_new_map": 1}]),
296-
RoborockCommand.APP_START_COLLECT_DUST: CommandInfo(params=None),
297-
RoborockCommand.APP_START_WASH: CommandInfo(params=None),
298-
RoborockCommand.APP_STAT: CommandInfo(
299-
params=[
300-
{
301-
"ver": "0.1",
302-
"data": [
303-
{
304-
"times": [1682723478],
305-
"data": {
306-
"region": "America/Sao_Paulo",
307-
"pluginVersion": "2820",
308-
"mnc": "*",
309-
"os": "ios",
310-
"osVersion": "16.1",
311-
"mcc": "not-cn",
312-
"language": "en_BR",
313-
"mobileBrand": "*",
314-
"appType": "roborock",
315-
"mobileModel": "iPhone13,1",
316-
},
317-
"type": 2,
318-
}
319-
],
320-
}
321-
],
322-
),
323-
RoborockCommand.APP_STOP: CommandInfo(params=[]),
324-
RoborockCommand.APP_STOP_WASH: CommandInfo(params=None),
325-
RoborockCommand.APP_WAKEUP_ROBOT: CommandInfo(params=[]),
326-
RoborockCommand.APP_ZONED_CLEAN: CommandInfo(params=[[24900, 25100, 26300, 26450, 1]]),
327-
RoborockCommand.CHANGE_SOUND_VOLUME: CommandInfo(params=None),
328-
RoborockCommand.CLOSE_DND_TIMER: CommandInfo(params=[]),
329-
RoborockCommand.CLOSE_VALLEY_ELECTRICITY_TIMER: CommandInfo(params=[]),
330-
RoborockCommand.DNLD_INSTALL_SOUND: CommandInfo(
331-
params={"url": "https://awsusor0.fds.api.xiaomi.com/app/topazsv/voice-pkg/package/en.pkg", "sid": 3, "sver": 5},
332-
),
333-
RoborockCommand.ENABLE_LOG_UPLOAD: CommandInfo(params=[9, 2]),
334-
RoborockCommand.END_EDIT_MAP: CommandInfo(params=[]),
335-
RoborockCommand.FIND_ME: CommandInfo(params=None),
336-
RoborockCommand.GET_CAMERA_STATUS: CommandInfo(params=[]),
337-
RoborockCommand.GET_CARPET_CLEAN_MODE: CommandInfo(params=[]),
338-
RoborockCommand.GET_CARPET_MODE: CommandInfo(params=[]),
339-
RoborockCommand.GET_CHILD_LOCK_STATUS: CommandInfo(params=[]),
340-
RoborockCommand.GET_CLEAN_RECORD: CommandInfo(params=[1682257961]),
341-
RoborockCommand.GET_CLEAN_RECORD_MAP: CommandInfo(params={"start_time": 1682597877}),
342-
RoborockCommand.GET_CLEAN_SEQUENCE: CommandInfo(params=[]),
343-
RoborockCommand.GET_CLEAN_SUMMARY: CommandInfo(params=[]),
344-
RoborockCommand.GET_COLLISION_AVOID_STATUS: CommandInfo(params=[]),
345-
RoborockCommand.GET_CONSUMABLE: CommandInfo(params=[]),
346-
RoborockCommand.GET_CURRENT_SOUND: CommandInfo(params=[]),
347-
RoborockCommand.GET_CUSTOMIZE_CLEAN_MODE: CommandInfo(params=[]),
348-
RoborockCommand.GET_CUSTOM_MODE: CommandInfo(params=None),
349-
RoborockCommand.GET_DEVICE_ICE: CommandInfo(params=[]),
350-
RoborockCommand.GET_DEVICE_SDP: CommandInfo(params=[]),
351-
RoborockCommand.GET_DND_TIMER: CommandInfo(params=[]),
352-
RoborockCommand.GET_DUST_COLLECTION_MODE: CommandInfo(params=None),
353-
RoborockCommand.GET_FLOW_LED_STATUS: CommandInfo(params=[]),
354-
RoborockCommand.GET_HOMESEC_CONNECT_STATUS: CommandInfo(params=[]),
355-
RoborockCommand.GET_IDENTIFY_FURNITURE_STATUS: CommandInfo(params=[]),
356-
RoborockCommand.GET_IDENTIFY_GROUND_MATERIAL_STATUS: CommandInfo(params=[]),
357-
RoborockCommand.GET_LED_STATUS: CommandInfo(params=[]),
358-
RoborockCommand.GET_MAP_V1: CommandInfo(params={}),
359-
RoborockCommand.GET_MOP_TEMPLATE_PARAMS_SUMMARY: CommandInfo(params={}),
360-
RoborockCommand.GET_MULTI_MAP: CommandInfo(params={"map_index": 0}),
361-
RoborockCommand.GET_MULTI_MAPS_LIST: CommandInfo(params=[]),
362-
RoborockCommand.GET_NETWORK_INFO: CommandInfo(params=[]),
363-
RoborockCommand.GET_PROP: CommandInfo(params=["get_status"]),
364-
RoborockCommand.GET_ROOM_MAPPING: CommandInfo(params=[]),
365-
RoborockCommand.GET_SCENES_VALID_TIDS: CommandInfo(params={}),
366-
RoborockCommand.GET_SERIAL_NUMBER: CommandInfo(params=[]),
367-
RoborockCommand.GET_SERVER_TIMER: CommandInfo(params=[]),
368-
RoborockCommand.GET_SMART_WASH_PARAMS: CommandInfo(params=None),
369-
RoborockCommand.GET_SOUND_PROGRESS: CommandInfo(params=[]),
370-
RoborockCommand.GET_SOUND_VOLUME: CommandInfo(params=[]),
371-
RoborockCommand.GET_STATUS: CommandInfo(params=None),
372-
RoborockCommand.GET_TIMEZONE: CommandInfo(params=[]),
373-
RoborockCommand.GET_TURN_SERVER: CommandInfo(params=[]),
374-
RoborockCommand.GET_VALLEY_ELECTRICITY_TIMER: CommandInfo(params=[]),
375-
RoborockCommand.GET_WASH_TOWEL_MODE: CommandInfo(params=None),
376-
RoborockCommand.LOAD_MULTI_MAP: CommandInfo(params=None),
377-
RoborockCommand.NAME_SEGMENT: CommandInfo(params=None),
378-
RoborockCommand.REUNION_SCENES: CommandInfo(params={"data": [{"tid": "1687830208457"}]}),
379-
RoborockCommand.RESET_CONSUMABLE: CommandInfo(params=None),
380-
RoborockCommand.RESUME_SEGMENT_CLEAN: CommandInfo(params=None),
381-
RoborockCommand.RESUME_ZONED_CLEAN: CommandInfo(params=None),
382-
RoborockCommand.RETRY_REQUEST: CommandInfo(params={"retry_id": 439374, "retry_count": 8, "method": "save_map"}),
383-
RoborockCommand.SAVE_MAP: CommandInfo(
384-
params={
385-
"data": [
386-
[1, 25043, 24952, 26167, 24952],
387-
[0, 25043, 25514, 26167, 25514, 26167, 24390, 25043, 24390],
388-
[2, 25038, 26782, 26162, 26782, 26162, 25658, 25038, 25658],
389-
[100, 0],
390-
],
391-
"need_retry": 1,
392-
},
393-
),
394-
RoborockCommand.SEND_ICE_TO_ROBOT: CommandInfo(
395-
params={
396-
"app_ice": "eyJjYW5kaWRhdGUiOiAiY2FuZGlkYXRlOjE1MzE5NzE5NTEgMSB1ZHAgNDE4MTk5MDMgNTQuMTc0LjE4Ni4yNDkgNTQxNzU"
397-
"gdHlwIHJlbGF5IHJhZGRyIDE3Ny4xOC4xMzQuOTkgcnBvcnQgNjQ2OTEgZ2VuZXJhdGlvbiAwIHVmcmFnIDVOMVogbmV0d2"
398-
"9yay1pZCAxIG5ldHdvcmstY29zdCAxMCIsICJzZHBNTGluZUluZGV4IjogMSwgInNkcE1pZCI6ICIxIn0="
399-
},
400-
),
401-
RoborockCommand.SET_APP_TIMEZONE: CommandInfo(params=["America/Sao_Paulo", 2]),
402-
RoborockCommand.SET_CAMERA_STATUS: CommandInfo(params=[3493]),
403-
RoborockCommand.SET_CARPET_CLEAN_MODE: CommandInfo(params={"carpet_clean_mode": 0}),
404-
RoborockCommand.SET_CARPET_MODE: CommandInfo(
405-
params=[{"enable": 1, "current_high": 500, "current_integral": 450, "current_low": 400, "stall_time": 10}],
406-
),
407-
RoborockCommand.SET_CHILD_LOCK_STATUS: CommandInfo(params={"lock_status": 0}),
408-
RoborockCommand.SET_CLEAN_MOTOR_MODE: CommandInfo(
409-
params=[{"fan_power": 106, "mop_mode": 302, "water_box_mode": 204}]
410-
),
411-
RoborockCommand.SET_COLLISION_AVOID_STATUS: CommandInfo(params={"status": 1}),
412-
RoborockCommand.SET_CUSTOMIZE_CLEAN_MODE: CommandInfo(params={"data": [], "need_retry": 1}),
413-
RoborockCommand.SET_CUSTOM_MODE: CommandInfo(params=[108]),
414-
RoborockCommand.SET_DND_TIMER: CommandInfo(params=[22, 0, 8, 0]),
415-
RoborockCommand.SET_DUST_COLLECTION_MODE: CommandInfo(params=None),
416-
RoborockCommand.SET_FDS_ENDPOINT: CommandInfo(params=["awsusor0.fds.api.xiaomi.com"]),
417-
RoborockCommand.SET_FLOW_LED_STATUS: CommandInfo(params={"status": 1}),
418-
RoborockCommand.SET_IDENTIFY_FURNITURE_STATUS: CommandInfo(params={"status": 1}),
419-
RoborockCommand.SET_IDENTIFY_GROUND_MATERIAL_STATUS: CommandInfo(params={"status": 1}),
420-
RoborockCommand.SET_LED_STATUS: CommandInfo(params=[1]),
421-
RoborockCommand.SET_MOP_MODE: CommandInfo(params=None),
422-
RoborockCommand.SET_SCENES_SEGMENTS: CommandInfo(
423-
params={"data": [{"tid": "1687831528786", "segs": [{"sid": 22}, {"sid": 18}]}]}
424-
),
425-
RoborockCommand.SET_SCENES_ZONES: CommandInfo(
426-
params={"data": [{"zones": [{"zid": 0, "range": [27700, 23750, 30850, 26900]}], "tid": "1687831073722"}]}
427-
),
428-
RoborockCommand.SET_SERVER_TIMER: CommandInfo(
429-
params={
430-
"data": [["1687793948482", ["39 12 * * 0,1,2,3,4,5,6", ["start_clean", 106, "0", -1]]]],
431-
"need_retry": 1,
432-
}
433-
),
434-
RoborockCommand.SET_SMART_WASH_PARAMS: CommandInfo(params=None),
435-
RoborockCommand.SET_TIMEZONE: CommandInfo(params=["America/Sao_Paulo"]),
436-
RoborockCommand.SET_VALLEY_ELECTRICITY_TIMER: CommandInfo(params=[0, 0, 8, 0]),
437-
RoborockCommand.SET_WASH_TOWEL_MODE: CommandInfo(params=None),
438-
RoborockCommand.SET_WATER_BOX_CUSTOM_MODE: CommandInfo(params=[203]),
439-
RoborockCommand.START_CAMERA_PREVIEW: CommandInfo(params={"client_id": "443f8636", "quality": "SD"}),
440-
RoborockCommand.START_EDIT_MAP: CommandInfo(params=[]),
441-
RoborockCommand.START_WASH_THEN_CHARGE: CommandInfo(params=None),
442-
RoborockCommand.STOP_CAMERA_PREVIEW: CommandInfo(params={"client_id": "443f8636"}),
443-
RoborockCommand.SWITCH_WATER_MARK: CommandInfo(params={"waterMark": "OFF"}),
444-
RoborockCommand.TEST_SOUND_VOLUME: CommandInfo(params=None),
445-
RoborockCommand.UPD_SERVER_TIMER: CommandInfo(params=[["1687793948482", "off"]]),
446-
RoborockCommand.DEL_SERVER_TIMER: CommandInfo(params=["1687793948482"]),
447-
}
448-
449-
450274
@dataclass
451275
class DockSummary(RoborockBase):
452276
dust_collection_mode: DustCollectionMode | None = None

0 commit comments

Comments
 (0)