roborock-cli 0.1.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. roborock_cli/__init__.py +3 -0
  2. roborock_cli/__main__.py +76 -0
  3. roborock_cli/_vendor/VERSION +6 -0
  4. roborock_cli/_vendor/__init__.py +0 -0
  5. roborock_cli/_vendor/roborock/__init__.py +27 -0
  6. roborock_cli/_vendor/roborock/broadcast_protocol.py +114 -0
  7. roborock_cli/_vendor/roborock/callbacks.py +130 -0
  8. roborock_cli/_vendor/roborock/cli.py +1338 -0
  9. roborock_cli/_vendor/roborock/const.py +84 -0
  10. roborock_cli/_vendor/roborock/data/__init__.py +9 -0
  11. roborock_cli/_vendor/roborock/data/b01_q10/__init__.py +2 -0
  12. roborock_cli/_vendor/roborock/data/b01_q10/b01_q10_code_mappings.py +213 -0
  13. roborock_cli/_vendor/roborock/data/b01_q10/b01_q10_containers.py +102 -0
  14. roborock_cli/_vendor/roborock/data/b01_q7/__init__.py +2 -0
  15. roborock_cli/_vendor/roborock/data/b01_q7/b01_q7_code_mappings.py +303 -0
  16. roborock_cli/_vendor/roborock/data/b01_q7/b01_q7_containers.py +302 -0
  17. roborock_cli/_vendor/roborock/data/code_mappings.py +198 -0
  18. roborock_cli/_vendor/roborock/data/containers.py +530 -0
  19. roborock_cli/_vendor/roborock/data/dyad/__init__.py +2 -0
  20. roborock_cli/_vendor/roborock/data/dyad/dyad_code_mappings.py +102 -0
  21. roborock_cli/_vendor/roborock/data/dyad/dyad_containers.py +28 -0
  22. roborock_cli/_vendor/roborock/data/v1/__init__.py +3 -0
  23. roborock_cli/_vendor/roborock/data/v1/v1_clean_modes.py +192 -0
  24. roborock_cli/_vendor/roborock/data/v1/v1_code_mappings.py +644 -0
  25. roborock_cli/_vendor/roborock/data/v1/v1_containers.py +800 -0
  26. roborock_cli/_vendor/roborock/data/zeo/__init__.py +2 -0
  27. roborock_cli/_vendor/roborock/data/zeo/zeo_code_mappings.py +138 -0
  28. roborock_cli/_vendor/roborock/data/zeo/zeo_containers.py +0 -0
  29. roborock_cli/_vendor/roborock/device_features.py +668 -0
  30. roborock_cli/_vendor/roborock/devices/README.md +41 -0
  31. roborock_cli/_vendor/roborock/devices/__init__.py +11 -0
  32. roborock_cli/_vendor/roborock/devices/cache.py +143 -0
  33. roborock_cli/_vendor/roborock/devices/device.py +240 -0
  34. roborock_cli/_vendor/roborock/devices/device_manager.py +269 -0
  35. roborock_cli/_vendor/roborock/devices/file_cache.py +79 -0
  36. roborock_cli/_vendor/roborock/devices/rpc/__init__.py +14 -0
  37. roborock_cli/_vendor/roborock/devices/rpc/a01_channel.py +94 -0
  38. roborock_cli/_vendor/roborock/devices/rpc/b01_q10_channel.py +57 -0
  39. roborock_cli/_vendor/roborock/devices/rpc/b01_q7_channel.py +101 -0
  40. roborock_cli/_vendor/roborock/devices/rpc/v1_channel.py +457 -0
  41. roborock_cli/_vendor/roborock/devices/traits/__init__.py +28 -0
  42. roborock_cli/_vendor/roborock/devices/traits/a01/__init__.py +191 -0
  43. roborock_cli/_vendor/roborock/devices/traits/b01/__init__.py +12 -0
  44. roborock_cli/_vendor/roborock/devices/traits/b01/q10/__init__.py +76 -0
  45. roborock_cli/_vendor/roborock/devices/traits/b01/q10/command.py +32 -0
  46. roborock_cli/_vendor/roborock/devices/traits/b01/q10/common.py +115 -0
  47. roborock_cli/_vendor/roborock/devices/traits/b01/q10/status.py +32 -0
  48. roborock_cli/_vendor/roborock/devices/traits/b01/q10/vacuum.py +81 -0
  49. roborock_cli/_vendor/roborock/devices/traits/b01/q7/__init__.py +136 -0
  50. roborock_cli/_vendor/roborock/devices/traits/b01/q7/clean_summary.py +75 -0
  51. roborock_cli/_vendor/roborock/devices/traits/traits_mixin.py +64 -0
  52. roborock_cli/_vendor/roborock/devices/traits/v1/__init__.py +344 -0
  53. roborock_cli/_vendor/roborock/devices/traits/v1/child_lock.py +29 -0
  54. roborock_cli/_vendor/roborock/devices/traits/v1/clean_summary.py +83 -0
  55. roborock_cli/_vendor/roborock/devices/traits/v1/command.py +38 -0
  56. roborock_cli/_vendor/roborock/devices/traits/v1/common.py +172 -0
  57. roborock_cli/_vendor/roborock/devices/traits/v1/consumeable.py +48 -0
  58. roborock_cli/_vendor/roborock/devices/traits/v1/device_features.py +74 -0
  59. roborock_cli/_vendor/roborock/devices/traits/v1/do_not_disturb.py +41 -0
  60. roborock_cli/_vendor/roborock/devices/traits/v1/dust_collection_mode.py +13 -0
  61. roborock_cli/_vendor/roborock/devices/traits/v1/flow_led_status.py +29 -0
  62. roborock_cli/_vendor/roborock/devices/traits/v1/home.py +285 -0
  63. roborock_cli/_vendor/roborock/devices/traits/v1/led_status.py +43 -0
  64. roborock_cli/_vendor/roborock/devices/traits/v1/map_content.py +83 -0
  65. roborock_cli/_vendor/roborock/devices/traits/v1/maps.py +80 -0
  66. roborock_cli/_vendor/roborock/devices/traits/v1/network_info.py +55 -0
  67. roborock_cli/_vendor/roborock/devices/traits/v1/rooms.py +105 -0
  68. roborock_cli/_vendor/roborock/devices/traits/v1/routines.py +26 -0
  69. roborock_cli/_vendor/roborock/devices/traits/v1/smart_wash_params.py +13 -0
  70. roborock_cli/_vendor/roborock/devices/traits/v1/status.py +101 -0
  71. roborock_cli/_vendor/roborock/devices/traits/v1/valley_electricity_timer.py +44 -0
  72. roborock_cli/_vendor/roborock/devices/traits/v1/volume.py +27 -0
  73. roborock_cli/_vendor/roborock/devices/traits/v1/wash_towel_mode.py +13 -0
  74. roborock_cli/_vendor/roborock/devices/transport/__init__.py +8 -0
  75. roborock_cli/_vendor/roborock/devices/transport/channel.py +32 -0
  76. roborock_cli/_vendor/roborock/devices/transport/local_channel.py +295 -0
  77. roborock_cli/_vendor/roborock/devices/transport/mqtt_channel.py +118 -0
  78. roborock_cli/_vendor/roborock/diagnostics.py +166 -0
  79. roborock_cli/_vendor/roborock/exceptions.py +95 -0
  80. roborock_cli/_vendor/roborock/map/__init__.py +7 -0
  81. roborock_cli/_vendor/roborock/map/map_parser.py +123 -0
  82. roborock_cli/_vendor/roborock/mqtt/__init__.py +10 -0
  83. roborock_cli/_vendor/roborock/mqtt/health_manager.py +60 -0
  84. roborock_cli/_vendor/roborock/mqtt/roborock_session.py +463 -0
  85. roborock_cli/_vendor/roborock/mqtt/session.py +108 -0
  86. roborock_cli/_vendor/roborock/protocol.py +558 -0
  87. roborock_cli/_vendor/roborock/protocols/__init__.py +3 -0
  88. roborock_cli/_vendor/roborock/protocols/a01_protocol.py +74 -0
  89. roborock_cli/_vendor/roborock/protocols/b01_q10_protocol.py +87 -0
  90. roborock_cli/_vendor/roborock/protocols/b01_q7_protocol.py +81 -0
  91. roborock_cli/_vendor/roborock/protocols/v1_protocol.py +271 -0
  92. roborock_cli/_vendor/roborock/py.typed +0 -0
  93. roborock_cli/_vendor/roborock/roborock_message.py +246 -0
  94. roborock_cli/_vendor/roborock/roborock_typing.py +382 -0
  95. roborock_cli/_vendor/roborock/util.py +54 -0
  96. roborock_cli/_vendor/roborock/web_api.py +761 -0
  97. roborock_cli/cli.py +715 -0
  98. roborock_cli/connection.py +202 -0
  99. roborock_cli/helpers.py +71 -0
  100. roborock_cli/server.py +759 -0
  101. roborock_cli/setup_auth.py +92 -0
  102. roborock_cli-0.1.1.dist-info/METADATA +172 -0
  103. roborock_cli-0.1.1.dist-info/RECORD +106 -0
  104. roborock_cli-0.1.1.dist-info/WHEEL +4 -0
  105. roborock_cli-0.1.1.dist-info/entry_points.txt +2 -0
  106. roborock_cli-0.1.1.dist-info/licenses/LICENSE +674 -0
@@ -0,0 +1,84 @@
1
+ # Total time in seconds consumables have before Roborock recommends replacing
2
+ MAIN_BRUSH_REPLACE_TIME = 1080000
3
+ SIDE_BRUSH_REPLACE_TIME = 720000
4
+ FILTER_REPLACE_TIME = 540000
5
+ SENSOR_DIRTY_REPLACE_TIME = 108000
6
+ MOP_ROLLER_REPLACE_TIME = 1080000
7
+ STRAINER_REPLACE_TIME = 150
8
+ CLEANING_BRUSH_REPLACE_TIME = 300
9
+ DUST_COLLECTION_REPLACE_TIME = 90
10
+ FLOOR_CLEANER_REPLACE_TIME = 300
11
+
12
+
13
+ ROBOROCK_V1 = "ROBOROCK.vacuum.v1"
14
+ ROBOROCK_S4 = "roborock.vacuum.s4"
15
+ ROBOROCK_S4_MAX = "roborock.vacuum.a19"
16
+ ROBOROCK_S5 = "roborock.vacuum.s5"
17
+ ROBOROCK_S5_MAX = "roborock.vacuum.s5e"
18
+ ROBOROCK_S6 = "roborock.vacuum.s6"
19
+ ROBOROCK_T6 = "roborock.vacuum.t6" # cn s6
20
+ ROBOROCK_E4 = "roborock.vacuum.a01"
21
+ ROBOROCK_S6_PURE = "roborock.vacuum.a08"
22
+ ROBOROCK_T7 = "roborock.vacuum.a11" # cn s7
23
+ ROBOROCK_T7S = "roborock.vacuum.a14"
24
+ ROBOROCK_T7SPLUS = "roborock.vacuum.a23"
25
+ ROBOROCK_S7_MAXV = "roborock.vacuum.a27"
26
+ ROBOROCK_S7_MAXV_ULTRA = "roborock.vacuum.a65"
27
+ ROBOROCK_S7_PRO_ULTRA = "roborock.vacuum.a62"
28
+ ROBOROCK_Q5 = "roborock.vacuum.a34"
29
+ ROBOROCK_Q5_PRO = "roborock.vacuum.a72"
30
+ ROBOROCK_Q7 = "roborock.vacuum.a40"
31
+ ROBOROCK_Q7_MAX = "roborock.vacuum.a38"
32
+ ROBOROCK_Q7PLUS = "roborock.vacuum.a40"
33
+ ROBOROCK_QREVO_MASTER = "roborock.vacuum.a117"
34
+ ROBOROCK_QREVO_CURV = "roborock.vacuum.a135"
35
+ ROBOROCK_Q8_MAX = "roborock.vacuum.a73"
36
+ ROBOROCK_Q10 = "roborock.vacuum.ss07"
37
+ ROBOROCK_G10S_PRO = "roborock.vacuum.a26"
38
+ ROBOROCK_G20S_Ultra = "roborock.vacuum.a143" # cn saros_r10
39
+ ROBOROCK_G10S = "roborock.vacuum.a46"
40
+ ROBOROCK_G10 = "roborock.vacuum.a29"
41
+ ROCKROBO_G10_SG = "roborock.vacuum.a30" # Variant of the G10, has similar features as S7
42
+ ROBOROCK_S7 = "roborock.vacuum.a15"
43
+ ROBOROCK_S6_MAXV = "roborock.vacuum.a10"
44
+ ROBOROCK_E2 = "roborock.vacuum.e2"
45
+ ROBOROCK_1S = "roborock.vacuum.m1s"
46
+ ROBOROCK_C1 = "roborock.vacuum.c1"
47
+ ROBOROCK_S8_PRO_ULTRA = "roborock.vacuum.a70"
48
+ ROBOROCK_S8 = "roborock.vacuum.a51"
49
+ ROBOROCK_P10 = "roborock.vacuum.a75" # also known as q_revo
50
+ ROBOROCK_S8_MAXV_ULTRA = "roborock.vacuum.a97"
51
+ ROBOROCK_QREVO_S = "roborock.vacuum.a104"
52
+ ROBOROCK_QREVO_PRO = "roborock.vacuum.a101"
53
+ ROBOROCK_QREVO_MAXV = "roborock.vacuum.a87"
54
+ ROBOROCK_SAROS_10R = "roborock.vacuum.a144"
55
+ ROBOROCK_SAROS_10 = "roborock.vacuum.a147"
56
+
57
+ ROBOROCK_DYAD_AIR = "roborock.wetdryvac.a107"
58
+ ROBOROCK_DYAD_PRO_COMBO = "roborock.wetdryvac.a83"
59
+ ROBOROCK_DYAD_PRO = "roborock.wetdryvac.a56"
60
+
61
+ # These are the devices that show up when you add a device - more could be supported and just not show up
62
+ SUPPORTED_VACUUMS = [
63
+ ROBOROCK_G10,
64
+ ROBOROCK_G10S_PRO,
65
+ ROBOROCK_G20S_Ultra,
66
+ ROBOROCK_Q5,
67
+ ROBOROCK_Q7,
68
+ ROBOROCK_Q7_MAX,
69
+ ROBOROCK_S4,
70
+ ROBOROCK_S5_MAX,
71
+ ROBOROCK_S6,
72
+ ROBOROCK_S6_MAXV,
73
+ ROBOROCK_S6_PURE,
74
+ ROBOROCK_S7_MAXV,
75
+ ROBOROCK_S8_PRO_ULTRA,
76
+ ROBOROCK_S8,
77
+ ROBOROCK_S4_MAX,
78
+ ROBOROCK_S7,
79
+ ROBOROCK_P10,
80
+ ROBOROCK_Q10,
81
+ ROCKROBO_G10_SG,
82
+ ]
83
+
84
+ NO_MAP = 63
@@ -0,0 +1,9 @@
1
+ """This module is meant to hold dataclasses and codemappings for various devices and protocols."""
2
+
3
+ from .b01_q7 import *
4
+ from .b01_q10 import *
5
+ from .code_mappings import *
6
+ from .containers import *
7
+ from .dyad import *
8
+ from .v1 import *
9
+ from .zeo import *
@@ -0,0 +1,2 @@
1
+ from .b01_q10_code_mappings import *
2
+ from .b01_q10_containers import *
@@ -0,0 +1,213 @@
1
+ from ..code_mappings import RoborockModeEnum
2
+
3
+
4
+ class B01_Q10_DP(RoborockModeEnum):
5
+ CLEAN_TIME = ("dpCleanTime", 6)
6
+ CLEAN_AREA = ("dpCleanArea", 7)
7
+ SEEK = ("dpSeek", 11)
8
+ REMOTE = ("dpRemote", 12)
9
+ MAP_RESET = ("dpMapReset", 13)
10
+ REQUEST = ("dpRequest", 16)
11
+ RESET_SIDE_BRUSH = ("dpResetSideBrush", 18)
12
+ RESET_MAIN_BRUSH = ("dpResetMainBrush", 20)
13
+ RESET_FILTER = ("dpResetFilter", 22)
14
+ RAG_LIFE = ("dpRagLife", 23)
15
+ RESET_RAG_LIFE = ("dpResetRagLife", 24)
16
+ NOT_DISTURB = ("dpNotDisturb", 25)
17
+ VOLUME = ("dpVolume", 26)
18
+ BEAK_CLEAN = ("dpBeakClean", 27)
19
+ TOTAL_CLEAN_AREA = ("dpTotalCleanArea", 29)
20
+ TOTAL_CLEAN_COUNT = ("dpTotalCleanCount", 30)
21
+ TOTAL_CLEAN_TIME = ("dpTotalCleanTime", 31)
22
+ TIMER = ("dpTimer", 32)
23
+ NOT_DISTURB_DATA = ("dpNotDisturbData", 33)
24
+ DEVICE_INFO = ("dpDeviceInfo", 34)
25
+ VOICE_PACKAGE = ("dpVoicePackage", 35)
26
+ VOICE_LANGUAGE = ("dpVoiceLanguage", 36)
27
+ DUST_SWITCH = ("dpDustSwitch", 37)
28
+ CUSTOM_MODE = ("dpCustomMode", 39)
29
+ MOP_STATE = ("dpMopState", 40)
30
+ UNIT = ("dpUnit", 42)
31
+ CARPET_CLEAN_PREFER = ("dpCarpetCleanPrefer", 44)
32
+ AUTO_BOOST = ("dpAutoBoost", 45)
33
+ CHILD_LOCK = ("dpChildLock", 47)
34
+ DUST_SETTING = ("dpDustSetting", 50)
35
+ MAP_SAVE_SWITCH = ("dpMapSaveSwitch", 51)
36
+ CLEAN_RECORD = ("dpCleanRecord", 52)
37
+ RECENT_CLEAN_RECORD = ("dpRecentCleanRecord", 53) # NOTE: typo "dpRecendCleanRecord" in source code
38
+ RESTRICTED_ZONE = ("dpRestrictedZone", 54)
39
+ RESTRICTED_ZONE_UP = ("dpRestrictedZoneUp", 55)
40
+ VIRTUAL_WALL = ("dpVirtualWall", 56)
41
+ VIRTUAL_WALL_UP = ("dpVirtualWallUp", 57)
42
+ ZONED = ("dpZoned", 58)
43
+ ZONED_UP = ("dpZonedUp", 59)
44
+ MULTI_MAP_SWITCH = ("dpMultiMapSwitch", 60)
45
+ MULTI_MAP = ("dpMultiMap", 61)
46
+ CUSTOMER_CLEAN = ("dpCustomerClean", 62)
47
+ CUSTOMER_CLEAN_REQUEST = ("dpCustomerCleanRequest", 63)
48
+ GET_CARPET = ("dpGetCarpet", 64)
49
+ CARPET_UP = ("dpCarpetUp", 65)
50
+ SELF_IDENTIFYING_CARPET = ("dpSelfIdentifyingCarpet", 66)
51
+ SENSOR_LIFE = ("dpSensorLife", 67)
52
+ RESET_SENSOR = ("dpResetSensor", 68)
53
+ REQUEST_TIMER = ("dpRequestTimer", 69)
54
+ REMOVE_ZONED = ("dpRemoveZoned", 70)
55
+ REMOVE_ZONED_UP = ("dpRemoveZonedUp", 71)
56
+ ROOM_MERGE = ("dpRoomMerge", 72)
57
+ ROOM_SPLIT = ("dpRoomSplit", 73)
58
+ RESET_ROOM_NAME = ("dpResetRoomName", 74)
59
+ REQUEST_NOT_DISTURB_DATA = ("dpRequestNotDisturbData", 75) # NOTE: typo "dpRequsetNotDisturbData" in source code
60
+ CARPET_CLEAN_TYPE = ("dpCarpetCleanType", 76)
61
+ BUTTON_LIGHT_SWITCH = ("dpButtonLightSwitch", 77)
62
+ CLEAN_LINE = ("dpCleanLine", 78)
63
+ TIME_ZONE = ("dpTimeZone", 79)
64
+ AREA_UNIT = ("dpAreaUnit", 80)
65
+ NET_INFO = ("dpNetInfo", 81)
66
+ CLEAN_ORDER = ("dpCleanOrder", 82)
67
+ ROBOT_TYPE = ("dpRobotType", 83)
68
+ LOG_SWITCH = ("dpLogSwitch", 84)
69
+ FLOOR_MATERIAL = ("dpFloorMaterial", 85)
70
+ LINE_LASER_OBSTACLE_AVOIDANCE = ("dpLineLaserObstacleAvoidance", 86)
71
+ CLEAN_PROGRESS = ("dpCleanProgress", 87) # NOTE: typo "dpCleanProgess" in source code
72
+ GROUND_CLEAN = ("dpGroundClean", 88)
73
+ IGNORE_OBSTACLE = ("dpIgnoreObstacle", 89)
74
+ FAULT = ("dpFault", 90)
75
+ CLEAN_EXPAND = ("dpCleanExpand", 91)
76
+ NOT_DISTURB_EXPAND = ("dpNotDisturbExpand", 92)
77
+ TIMER_TYPE = ("dpTimerType", 93)
78
+ CREATE_MAP_FINISHED = ("dpCreateMapFinished", 94)
79
+ ADD_CLEAN_AREA = ("dpAddCleanArea", 95)
80
+ ADD_CLEAN_STATE = ("dpAddCleanState", 96)
81
+ RESTRICTED_AREA = ("dpRestrictedArea", 97)
82
+ RESTRICTED_AREA_UP = ("dpRestrictedAreaUp", 98)
83
+ SUSPECTED_THRESHOLD = ("dpSuspectedThreshold", 99)
84
+ SUSPECTED_THRESHOLD_UP = ("dpSuspectedThresholdUp", 100)
85
+ COMMON = ("dpCommon", 101)
86
+ JUMP_SCAN = ("dpJumpScan", 101)
87
+ REQUEST_DPS = ("dpRequestDps", 102) # NOTE: typo "dpRequetdps" in source code
88
+ CLIFF_RESTRICTED_AREA = ("dpCliffRestrictedArea", 102)
89
+ CLIFF_RESTRICTED_AREA_UP = ("dpCliffRestrictedAreaUp", 103)
90
+ BREAKPOINT_CLEAN = ("dpBreakpointClean", 104)
91
+ VALLEY_POINT_CHARGING = ("dpValleyPointCharging", 105)
92
+ VALLEY_POINT_CHARGING_DATA_UP = ("dpValleyPointChargingDataUp", 106)
93
+ VALLEY_POINT_CHARGING_DATA = ("dpValleyPointChargingData", 107)
94
+ VOICE_VERSION = ("dpVoiceVersion", 108)
95
+ ROBOT_COUNTRY_CODE = ("dpRobotCountryCode", 109)
96
+ HEARTBEAT = ("dpHeartbeat", 110)
97
+ STATUS = ("dpStatus", 121)
98
+ BATTERY = ("dpBattery", 122)
99
+ FAN_LEVEL = ("dpFanLevel", 123) # NOTE: typo "dpfunLevel" in source code
100
+ WATER_LEVEL = ("dpWaterLevel", 124)
101
+ MAIN_BRUSH_LIFE = ("dpMainBrushLife", 125)
102
+ SIDE_BRUSH_LIFE = ("dpSideBrushLife", 126)
103
+ FILTER_LIFE = ("dpFilterLife", 127)
104
+ TASK_CANCEL_IN_MOTION = ("dpTaskCancelInMotion", 132)
105
+ OFFLINE = ("dpOffline", 135)
106
+ CLEAN_COUNT = ("dpCleanCount", 136)
107
+ CLEAN_MODE = ("dpCleanMode", 137)
108
+ CLEAN_TASK_TYPE = ("dpCleanTaskType", 138)
109
+ BACK_TYPE = ("dpBackType", 139)
110
+ CLEANING_PROGRESS = ("dpCleaningProgress", 141)
111
+ FLEEING_GOODS = ("dpFleeingGoods", 142)
112
+ START_CLEAN = ("dpStartClean", 201)
113
+ START_BACK = ("dpStartBack", 202)
114
+ START_DOCK_TASK = ("dpStartDockTask", 203)
115
+ PAUSE = ("dpPause", 204)
116
+ RESUME = ("dpResume", 205)
117
+ STOP = ("dpStop", 206)
118
+ USER_PLAN = ("dpUserPlan", 207)
119
+
120
+
121
+ class YXFanLevel(RoborockModeEnum):
122
+ UNKNOWN = "unknown", -1
123
+ CLOSE = "close", 0
124
+ QUIET = "quiet", 1
125
+ NORMAL = "normal", 2
126
+ STRONG = "strong", 3
127
+ MAX = "max", 4
128
+ SUPER = "super", 8
129
+
130
+
131
+ class YXWaterLevel(RoborockModeEnum):
132
+ UNKNOWN = "unknown", -1
133
+ CLOSE = "close", 0
134
+ LOW = "low", 1
135
+ MIDDLE = "middle", 2
136
+ HIGH = "high", 3
137
+
138
+
139
+ class YXCleanLine(RoborockModeEnum):
140
+ FAST = "fast", 0
141
+ DAILY = "daily", 1
142
+ FINE = "fine", 2
143
+
144
+
145
+ class YXRoomMaterial(RoborockModeEnum):
146
+ HORIZONTAL_FLOOR_BOARD = "horizontalfloorboard", 0
147
+ VERTICAL_FLOOR_BOARD = "verticalfloorboard", 1
148
+ CERAMIC_TILE = "ceramictile", 2
149
+ OTHER = "other", 255
150
+
151
+
152
+ class YXCleanType(RoborockModeEnum):
153
+ UNKNOWN = "unknown", -1
154
+ BOTH_WORK = "bothwork", 1
155
+ ONLY_SWEEP = "onlysweep", 2
156
+ ONLY_MOP = "onlymop", 3
157
+
158
+
159
+ class YXDeviceState(RoborockModeEnum):
160
+ UNKNOWN = "unknown", -1
161
+ SLEEP_STATE = "sleepstate", 2
162
+ STANDBY_STATE = "standbystate", 3
163
+ CLEANING_STATE = "cleaningstate", 5
164
+ TO_CHARGE_STATE = "tochargestate", 6
165
+ REMOTEING_STATE = "remoteingstate", 7
166
+ CHARGING_STATE = "chargingstate", 8
167
+ PAUSE_STATE = "pausestate", 10
168
+ FAULT_STATE = "faultstate", 12
169
+ UPGRADE_STATE = "upgradestate", 14
170
+ DUSTING = "dusting", 22
171
+ CREATING_MAP_STATE = "creatingmapstate", 29
172
+ MAP_SAVE_STATE = "mapsavestate", 99
173
+ RE_LOCATION_STATE = "relocationstate", 101
174
+ ROBOT_SWEEPING = "robotsweeping", 102
175
+ ROBOT_MOPING = "robotmoping", 103
176
+ ROBOT_SWEEP_AND_MOPING = "robotsweepandmoping", 104
177
+ ROBOT_TRANSITIONING = "robottransitioning", 105
178
+ ROBOT_WAIT_CHARGE = "robotwaitcharge", 108
179
+
180
+
181
+ class YXBackType(RoborockModeEnum):
182
+ UNKNOWN = "unknown", -1
183
+ IDLE = "idle", 0
184
+ BACK_DUSTING = "backdusting", 4
185
+ BACK_CHARGING = "backcharging", 5
186
+
187
+
188
+ class YXDeviceWorkMode(RoborockModeEnum):
189
+ UNKNOWN = "unknown", -1
190
+ BOTH_WORK = "bothwork", 1
191
+ ONLY_SWEEP = "onlysweep", 2
192
+ ONLY_MOP = "onlymop", 3
193
+ CUSTOMIZED = "customized", 4
194
+ SAVE_WORRY = "saveworry", 5
195
+ SWEEP_MOP = "sweepmop", 6
196
+
197
+
198
+ class YXDeviceCleanTask(RoborockModeEnum):
199
+ UNKNOWN = "unknown", -1
200
+ IDLE = "idle", 0
201
+ SMART = "smart", 1
202
+ ELECTORAL = "electoral", 2
203
+ DIVIDE_AREAS = "divideareas", 3
204
+ CREATING_MAP = "creatingmap", 4
205
+ PART = "part", 5
206
+
207
+
208
+ class YXDeviceDustCollectionFrequency(RoborockModeEnum):
209
+ DAILY = "daily", 0
210
+ INTERVAL_15 = "interval_15", 15
211
+ INTERVAL_30 = "interval_30", 30
212
+ INTERVAL_45 = "interval_45", 45
213
+ INTERVAL_60 = "interval_60", 60
@@ -0,0 +1,102 @@
1
+ """Data container classes for Q10 B01 devices.
2
+
3
+ Many of these classes use the `field(metadata={"dps": ...})` convention to map
4
+ dataclass fields to device Data Points (DPS). This metadata is utilized by the
5
+ `update_from_dps` helper in `roborock.devices.traits.b01.q10.common` to
6
+ automatically update objects from raw device responses.
7
+ """
8
+
9
+ from dataclasses import dataclass, field
10
+
11
+ from ..containers import RoborockBase
12
+ from .b01_q10_code_mappings import (
13
+ B01_Q10_DP,
14
+ YXBackType,
15
+ YXDeviceCleanTask,
16
+ YXDeviceState,
17
+ YXDeviceWorkMode,
18
+ YXFanLevel,
19
+ YXWaterLevel,
20
+ )
21
+
22
+
23
+ @dataclass
24
+ class dpCleanRecord(RoborockBase):
25
+ op: str
26
+ result: int
27
+ id: str
28
+ data: list
29
+
30
+
31
+ @dataclass
32
+ class dpMultiMap(RoborockBase):
33
+ op: str
34
+ result: int
35
+ data: list
36
+
37
+
38
+ @dataclass
39
+ class dpGetCarpet(RoborockBase):
40
+ op: str
41
+ result: int
42
+ data: str
43
+
44
+
45
+ @dataclass
46
+ class dpSelfIdentifyingCarpet(RoborockBase):
47
+ op: str
48
+ result: int
49
+ data: str
50
+
51
+
52
+ @dataclass
53
+ class dpNetInfo(RoborockBase):
54
+ wifiName: str
55
+ ipAdress: str
56
+ mac: str
57
+ signal: int
58
+
59
+
60
+ @dataclass
61
+ class dpNotDisturbExpand(RoborockBase):
62
+ disturb_dust_enable: int
63
+ disturb_light: int
64
+ disturb_resume_clean: int
65
+ disturb_voice: int
66
+
67
+
68
+ @dataclass
69
+ class dpCurrentCleanRoomIds(RoborockBase):
70
+ room_id_list: list
71
+
72
+
73
+ @dataclass
74
+ class dpVoiceVersion(RoborockBase):
75
+ version: int
76
+
77
+
78
+ @dataclass
79
+ class dpTimeZone(RoborockBase):
80
+ timeZoneCity: str
81
+ timeZoneSec: int
82
+
83
+
84
+ @dataclass
85
+ class Q10Status(RoborockBase):
86
+ """Status for Q10 devices.
87
+
88
+ Fields are mapped to DPS values using metadata. Objects of this class can be
89
+ automatically updated using the `update_from_dps` helper.
90
+ """
91
+
92
+ clean_time: int | None = field(default=None, metadata={"dps": B01_Q10_DP.CLEAN_TIME})
93
+ clean_area: int | None = field(default=None, metadata={"dps": B01_Q10_DP.CLEAN_AREA})
94
+ battery: int | None = field(default=None, metadata={"dps": B01_Q10_DP.BATTERY})
95
+ status: YXDeviceState | None = field(default=None, metadata={"dps": B01_Q10_DP.STATUS})
96
+ fan_level: YXFanLevel | None = field(default=None, metadata={"dps": B01_Q10_DP.FAN_LEVEL})
97
+ water_level: YXWaterLevel | None = field(default=None, metadata={"dps": B01_Q10_DP.WATER_LEVEL})
98
+ clean_count: int | None = field(default=None, metadata={"dps": B01_Q10_DP.CLEAN_COUNT})
99
+ clean_mode: YXDeviceWorkMode | None = field(default=None, metadata={"dps": B01_Q10_DP.CLEAN_MODE})
100
+ clean_task_type: YXDeviceCleanTask | None = field(default=None, metadata={"dps": B01_Q10_DP.CLEAN_TASK_TYPE})
101
+ back_type: YXBackType | None = field(default=None, metadata={"dps": B01_Q10_DP.BACK_TYPE})
102
+ cleaning_progress: int | None = field(default=None, metadata={"dps": B01_Q10_DP.CLEANING_PROGRESS})
@@ -0,0 +1,2 @@
1
+ from .b01_q7_code_mappings import *
2
+ from .b01_q7_containers import *