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,92 @@
1
+ """
2
+ 首次认证脚本
3
+
4
+ 通过交互式输入邮箱验证码完成认证,将 UserData 缓存到本地 JSON 文件。
5
+ """
6
+
7
+ import json
8
+ import os
9
+ import ssl
10
+ from pathlib import Path
11
+
12
+ import aiohttp
13
+ import certifi
14
+ from roborock_cli._vendor.roborock.web_api import RoborockApiClient
15
+
16
+
17
+ CACHE_DIR = Path.home() / ".cache" / "roborock-cli"
18
+ TOKEN_FILE = CACHE_DIR / "user_data.json"
19
+
20
+
21
+ async def setup():
22
+ """交互式认证流程"""
23
+ print("=" * 50)
24
+ print(" Roborock CLI 首次认证")
25
+ print("=" * 50)
26
+
27
+ email = input("\n请输入 Roborock 账户邮箱: ").strip()
28
+ if not email:
29
+ print("错误:邮箱不能为空")
30
+ return
31
+
32
+ ssl_ctx = ssl.create_default_context(cafile=certifi.where())
33
+ connector = aiohttp.TCPConnector(ssl=ssl_ctx)
34
+ session = aiohttp.ClientSession(connector=connector)
35
+
36
+ try:
37
+ web_api = RoborockApiClient(username=email, session=session)
38
+
39
+ print(f"\n正在向 {email} 发送验证码...")
40
+ try:
41
+ await web_api.request_code_v4()
42
+ except Exception as e:
43
+ print(f"发送验证码失败: {e}")
44
+ return
45
+
46
+ print("验证码已发送,请查收邮件")
47
+
48
+ code = input("\n请输入收到的验证码: ").strip()
49
+ if not code:
50
+ print("错误:验证码不能为空")
51
+ return
52
+
53
+ print("正在验证...")
54
+ try:
55
+ user_data = await web_api.code_login_v4(code)
56
+ except Exception as e:
57
+ print(f"验证失败: {e}")
58
+ return
59
+ finally:
60
+ await session.close()
61
+
62
+ # 保存缓存(不保存 base_url,让 SDK 自动发现)
63
+ CACHE_DIR.mkdir(parents=True, exist_ok=True)
64
+ data = {
65
+ "email": email,
66
+ "user_data": user_data.as_dict(),
67
+ }
68
+ fd = os.open(TOKEN_FILE, os.O_WRONLY | os.O_CREAT | os.O_TRUNC, 0o600)
69
+ with os.fdopen(fd, "w") as f:
70
+ json.dump(data, f, indent=2)
71
+
72
+ print(f"\n认证成功!")
73
+ print(f"缓存已保存到: {TOKEN_FILE}")
74
+ print("\n现在可以使用 CLI 了:")
75
+ print(" roborock-cli devices")
76
+
77
+
78
+ def main():
79
+ import sys
80
+ import anyio
81
+
82
+ if sys.platform == "win32":
83
+ import asyncio
84
+ backend_options = {"loop_factory": asyncio.SelectorEventLoop}
85
+ else:
86
+ backend_options = {}
87
+
88
+ anyio.run(setup, backend_options=backend_options)
89
+
90
+
91
+ if __name__ == "__main__":
92
+ main()
@@ -0,0 +1,172 @@
1
+ Metadata-Version: 2.4
2
+ Name: roborock-cli
3
+ Version: 0.1.1
4
+ Summary: Roborock 扫地机 CLI 控制工具
5
+ License-Expression: GPL-3.0-only
6
+ License-File: LICENSE
7
+ Requires-Python: >=3.12
8
+ Requires-Dist: aiohttp<4,>=3.8.2
9
+ Requires-Dist: aiomqtt<3,>=2.5.0
10
+ Requires-Dist: certifi
11
+ Requires-Dist: click-shell~=2.1
12
+ Requires-Dist: click>=8
13
+ Requires-Dist: construct<3,>=2.10.57
14
+ Requires-Dist: mcp[cli]>=1.6.0
15
+ Requires-Dist: paho-mqtt<3.0.0,>=1.6.1
16
+ Requires-Dist: pycryptodomex~=3.18; sys_platform == 'darwin'
17
+ Requires-Dist: pycryptodome~=3.18
18
+ Requires-Dist: pyrate-limiter<5,>=4.0.0
19
+ Requires-Dist: vacuum-map-parser-roborock
20
+ Description-Content-Type: text/markdown
21
+
22
+ # roborock-cli
23
+
24
+ Roborock 扫地机 CLI 控制工具,也可作为 MCP 服务器使用。
25
+
26
+ ## 功能
27
+
28
+ 提供 15 个 CLI 命令,支持多设备(通过设备名称模糊匹配选择目标设备)。
29
+
30
+ ### 查询命令(5 个)
31
+
32
+ | 命令 | 说明 |
33
+ |------|------|
34
+ | `roborock-cli devices` | 列出所有设备(名称、型号、DUID、固件版本) |
35
+ | `roborock-cli status` | 设备精简状态(电量、清洁进度、耗材、房间列表等) |
36
+ | `roborock-cli map` | 获取地图元数据和图片 |
37
+ | `roborock-cli routines` | 列出智能场景 |
38
+ | `roborock-cli auth` | 交互式认证(需要 TTY) |
39
+
40
+ ### 控制命令(10 个)
41
+
42
+ | 命令 | 说明 |
43
+ |------|------|
44
+ | `roborock-cli start-clean` | 开始清洁(全屋或指定房间) |
45
+ | `roborock-cli stop-clean` | 停止清洁 |
46
+ | `roborock-cli pause-clean` | 暂停清洁 |
47
+ | `roborock-cli resume-clean` | 恢复清洁 |
48
+ | `roborock-cli go-home` | 回充电座 |
49
+ | `roborock-cli find-robot` | 寻找机器人(发出声音) |
50
+ | `roborock-cli dock-action` | 基座操作(集尘/洗拖布) |
51
+ | `roborock-cli set-volume` | 设置音量(0-100) |
52
+ | `roborock-cli set-dnd` | 设置勿扰模式 |
53
+ | `roborock-cli execute-routine` | 执行智能场景 |
54
+
55
+ ## 安装使用
56
+
57
+ ### 前置:安装 uv
58
+
59
+ 本项目通过 `uvx` 运行,需要先安装 [uv](https://docs.astral.sh/uv/):
60
+
61
+ **macOS / Linux**
62
+
63
+ ```bash
64
+ curl -LsSf https://astral.sh/uv/install.sh | sh
65
+ ```
66
+
67
+ **Windows**
68
+
69
+ ```powershell
70
+ powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
71
+ ```
72
+
73
+ 安装后终端输入 `uvx --version` 验证。
74
+
75
+ ### 通过 uvx(推荐)
76
+
77
+ **1. 首次认证**
78
+
79
+ ```bash
80
+ uvx roborock-cli auth
81
+ ```
82
+
83
+ 按提示输入 Roborock 账户邮箱和验证码,认证信息保存在 `~/.cache/roborock-cli/`。
84
+
85
+ **2. 使用 CLI**
86
+
87
+ ```bash
88
+ # 列出设备
89
+ roborock-cli devices
90
+
91
+ # 查看状态
92
+ roborock-cli status
93
+
94
+ # 开始全屋清洁
95
+ roborock-cli start-clean
96
+
97
+ # 开始房间清洁(房间 ID 通过 status 命令获取)
98
+ roborock-cli start-clean -s 1 2 3
99
+
100
+ # 回充电座
101
+ roborock-cli go-home
102
+ ```
103
+
104
+ ### 作为 MCP 服务器使用
105
+
106
+ roborock-cli 也可以作为 MCP 服务器运行,供 Claude Desktop/Code 等客户端使用:
107
+
108
+ ```bash
109
+ roborock-cli mcp
110
+ ```
111
+
112
+ **配置 Claude Code**
113
+
114
+ 在项目目录创建 `.mcp.json`:
115
+
116
+ ```json
117
+ {
118
+ "mcpServers": {
119
+ "roborock": {
120
+ "command": "uvx",
121
+ "args": ["roborock-cli@latest", "mcp"]
122
+ }
123
+ }
124
+ }
125
+ ```
126
+
127
+ ### 开发模式
128
+
129
+ ```bash
130
+ # 需要先 clone python-roborock 到 ./python-roborock/
131
+ uv venv --python 3.12
132
+ source .venv/bin/activate
133
+ uv pip install -e .
134
+
135
+ roborock-cli --help # CLI 帮助
136
+ roborock-cli auth # 认证
137
+ roborock-cli mcp # 启动 MCP server
138
+ ```
139
+
140
+ ## 输出格式
141
+
142
+ CLI 命令默认输出 JSON 格式,便于程序解析:
143
+
144
+ ```json
145
+ {
146
+ "count": 2,
147
+ "devices": [
148
+ {"name": "客厅扫地机", "duid": "abc123", "model": "roborock.vacuum.a75", "firmware": "02.00.01"},
149
+ {"name": "卧室扫地机", "duid": "def456", "model": "roborock.vacuum.s8", "firmware": "02.00.02"}
150
+ ]
151
+ }
152
+ ```
153
+
154
+ ## 错误退出码
155
+
156
+ | 退出码 | 含义 |
157
+ |--------|------|
158
+ | 0 | 成功 |
159
+ | 1 | 通用业务错误 |
160
+ | 2 | 认证错误(需重新运行 `roborock-cli auth`) |
161
+ | 3 | 设备错误 |
162
+ | 4 | 参数无效 |
163
+ | 5 | 内部错误 |
164
+
165
+ ## 要求
166
+
167
+ - Python >= 3.12
168
+ - Roborock 账户(国际版,邮箱注册)
169
+
170
+ ## 许可证
171
+
172
+ GPL-3.0-only(由于 vendoring 了 [python-roborock](https://github.com/humbertogontijo/python-roborock))
@@ -0,0 +1,106 @@
1
+ roborock_cli/__init__.py,sha256=ayAazwsLSEnfhY8YCsuZ8lVAxN_0CecUC-qmRkOBXsk,105
2
+ roborock_cli/__main__.py,sha256=OvJF3tHA7F2f9PhSYanm5QEL3Wxo2mQnb5K3QSAKzqc,2251
3
+ roborock_cli/cli.py,sha256=586avjeqPqKdVL5-yuJH62uoxDR7-RJYl1NMjqVe3ec,24906
4
+ roborock_cli/connection.py,sha256=HS0kL0DJWzvA0iprStwDVRIE4xJYz7IRXaC5MIy3Kng,6286
5
+ roborock_cli/helpers.py,sha256=c6y9UEOlVzDumypfKS5a6arazAJr6VRfJYhYqwVdmF8,2728
6
+ roborock_cli/server.py,sha256=xZzxv8fjtIiF_BIX0IRmi6EH8L7VT7bAfhWy3_D5-Eg,26484
7
+ roborock_cli/setup_auth.py,sha256=0E7PdV88cZzMnOZmnJwDDbzdvFMJRauo4oFvxWwOFbQ,2384
8
+ roborock_cli/_vendor/VERSION,sha256=QAgfL2MjIY7_o7gq388X1jBewQ2622k5qaogMkUVaSM,229
9
+ roborock_cli/_vendor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
+ roborock_cli/_vendor/roborock/__init__.py,sha256=DVel3ZT0hJQR1Zg1UNykEx7ab4RNm_I5p-1CxjiT-40,438
11
+ roborock_cli/_vendor/roborock/broadcast_protocol.py,sha256=KPhgIJTueSjXf1g1g_0HfXs4trp3r5jDhaSvSoR8LHE,4114
12
+ roborock_cli/_vendor/roborock/callbacks.py,sha256=ftPsPk1lcHMyRuFFy2OX9RTdpjp9KSHi13KIcv_pRwg,4277
13
+ roborock_cli/_vendor/roborock/cli.py,sha256=G6-VwaKRsD2gmzuQDh_s1nttPQvqYPvY7m0VyiY2LqQ,49457
14
+ roborock_cli/_vendor/roborock/const.py,sha256=fWpgUPrCgLnaXmncgjCLZET-t7wHWQlpyzV8qHtTjb4,2860
15
+ roborock_cli/_vendor/roborock/device_features.py,sha256=9GaNAktQMXXFlbOBtXrGs0fZqsSuzuTo3twReNnqvQ8,35982
16
+ roborock_cli/_vendor/roborock/diagnostics.py,sha256=DpsFiGAoPGSVTkavwA1Yed61NYWehBUiOcchjAomTXg,5136
17
+ roborock_cli/_vendor/roborock/exceptions.py,sha256=bP6_h_YMxM82bC9VGAPzbcjaJ8aHvwwcL1ioVAxNQQE,2644
18
+ roborock_cli/_vendor/roborock/protocol.py,sha256=zoWvb0wKYBzSQjl-Y5kCBp7EA7a9vWAJ0O6pTwFSrfk,20313
19
+ roborock_cli/_vendor/roborock/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
+ roborock_cli/_vendor/roborock/roborock_message.py,sha256=ftRgd9MP3pOh1J61jIRmyt0qyvP6z5MyNGnwJSGROL0,6518
21
+ roborock_cli/_vendor/roborock/roborock_typing.py,sha256=z8XrUY7btaDWLtjRq-SoYUb2K27iMVrzh4yYntagTKY,17152
22
+ roborock_cli/_vendor/roborock/util.py,sha256=nwSH5ZGnqUgVrVC-Iejc3YzlP9ufhv31VKq16GivdT8,1707
23
+ roborock_cli/_vendor/roborock/web_api.py,sha256=U-z4o8a52yosG9IAsmi0g6ixoOy01krBssE0HgWLduE,33651
24
+ roborock_cli/_vendor/roborock/data/__init__.py,sha256=DikqaVM7VPVddkBNkHSss5zb1_iKB7GYmc2GiHoMAkA,257
25
+ roborock_cli/_vendor/roborock/data/code_mappings.py,sha256=1xejDPDbOZciZ9lBJUp_tZJOXQqW7BL4MwYcQ_dyY50,7741
26
+ roborock_cli/_vendor/roborock/data/containers.py,sha256=tCq2b1iG9lQzNhZyt0g-zbyO3ae68fQ0VHnhzdyLWlc,15831
27
+ roborock_cli/_vendor/roborock/data/b01_q10/__init__.py,sha256=E4lwJcz4AI1z92FcYOJ-cY3fcfHSoXqvYVgfA-TgaRk,71
28
+ roborock_cli/_vendor/roborock/data/b01_q10/b01_q10_code_mappings.py,sha256=UUSLHVyxHR5-BSXM265JoJOloIx4ttzvO6tdm3MNylY,7730
29
+ roborock_cli/_vendor/roborock/data/b01_q10/b01_q10_containers.py,sha256=ycHqetaQdZ2yrroxtXJ8prgYmeyufaSJUZo2cMx8O7k,2755
30
+ roborock_cli/_vendor/roborock/data/b01_q7/__init__.py,sha256=D-Cd8eB0njf1PQPM6Exl_9A0AhpzIjrL0hapGOCEkkA,69
31
+ roborock_cli/_vendor/roborock/data/b01_q7/b01_q7_code_mappings.py,sha256=EHSCZSv_Os049NcenKo4tkPjDOB4vpmQ2p2Psr9FRCc,10698
32
+ roborock_cli/_vendor/roborock/data/b01_q7/b01_q7_containers.py,sha256=nP0fuPaFLjHsHJi3GLzncafpzuLZxWn9cNj7UjwHNBs,9290
33
+ roborock_cli/_vendor/roborock/data/dyad/__init__.py,sha256=Ksx7Ri1alsAYAyILOpj9iNbCC_6sF7xvETFRnTO4rdM,65
34
+ roborock_cli/_vendor/roborock/data/dyad/dyad_code_mappings.py,sha256=MVhAuQaI2TcDBMQKQcbRk4MbFObx_5XEXTc3n4uAeWc,2836
35
+ roborock_cli/_vendor/roborock/data/dyad/dyad_containers.py,sha256=klJD2wV-2McjAoSN8Bthuyeid59L7M8nzSvc3MtmqOI,434
36
+ roborock_cli/_vendor/roborock/data/v1/__init__.py,sha256=Lx_D6baZrCMxp57D0NcdiA8rssJ5NnInZwUwrT79XOI,91
37
+ roborock_cli/_vendor/roborock/data/v1/v1_clean_modes.py,sha256=jfW4ZkleG_Vkt6DILI9-jn1P6QKPJCdAEKZln3iyHc8,7215
38
+ roborock_cli/_vendor/roborock/data/v1/v1_code_mappings.py,sha256=fchsvYjv0Q4Q8XnU8LDBTVoy1kT7VWrzkS8l7F96Wsw,14406
39
+ roborock_cli/_vendor/roborock/data/v1/v1_containers.py,sha256=5GACj0249Ibn4Ba8DrmGZO93RKnkmpJ-8v05SIEHpHY,25017
40
+ roborock_cli/_vendor/roborock/data/zeo/__init__.py,sha256=VxG5qG4M24DGOq2YAaxownWp6bEfj9DEOgOMHmTpcqY,63
41
+ roborock_cli/_vendor/roborock/data/zeo/zeo_code_mappings.py,sha256=aj-TBjLWzxSBzpBESOtwNeFwD2rv-Jj95RZidO28szA,2319
42
+ roborock_cli/_vendor/roborock/data/zeo/zeo_containers.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
+ roborock_cli/_vendor/roborock/devices/README.md,sha256=zjssyRIlFWTgQz8hLdsJC9_stlHdUQybz7r2af_8q1k,2186
44
+ roborock_cli/_vendor/roborock/devices/__init__.py,sha256=yOWuncnp5wwKPLzcnblsBMGD0v8hcDDDC_x7YdSrN70,129
45
+ roborock_cli/_vendor/roborock/devices/cache.py,sha256=Qzqs-ST6gDiCGozTqCsk5_xLJ5JUh4VeFgpW_q-ZM4w,4675
46
+ roborock_cli/_vendor/roborock/devices/device.py,sha256=0nmRG8aj2Vn-TJ66VzbZV61GAbzBUz2b-c3Pkq-P6Vw,9094
47
+ roborock_cli/_vendor/roborock/devices/device_manager.py,sha256=oEl-LPgTiJVx7RqnWbctjDQsDlx_ORZOEf1Q6KA8TmA,10836
48
+ roborock_cli/_vendor/roborock/devices/file_cache.py,sha256=Qc4k9-tOOC9rzvJD8Jv0JSu8MiAPMGksfzQmqEZ8wUI,2805
49
+ roborock_cli/_vendor/roborock/devices/rpc/__init__.py,sha256=MDtZovvHi3F4Wbgyzu6gyjAjkZ6xYGU1LRQmtiIapuU,561
50
+ roborock_cli/_vendor/roborock/devices/rpc/a01_channel.py,sha256=16cSwjNCSNC1Tpth0Ez8S_bHLAtSMfIbL94qvnXqW9I,3434
51
+ roborock_cli/_vendor/roborock/devices/rpc/b01_q10_channel.py,sha256=WyBEZc9pHjWt9z8yBw03oPZjG3drUDosT2mpgw8VPoY,1858
52
+ roborock_cli/_vendor/roborock/devices/rpc/b01_q7_channel.py,sha256=2nsT_zGy06_qB6VfL2ZP6TlLmg3VkHj2rOQ29Tgu018,3953
53
+ roborock_cli/_vendor/roborock/devices/rpc/v1_channel.py,sha256=HXmK2maW9GFs6sHp8pvCgq21w7aM2yjM637JAexevQM,19471
54
+ roborock_cli/_vendor/roborock/devices/traits/__init__.py,sha256=YaL9qoxG6IBG0XXDP0HMTvoc0Jkmq7AF6iH2oYWNtcg,765
55
+ roborock_cli/_vendor/roborock/devices/traits/traits_mixin.py,sha256=7t15l_Ty1cN-3-fKNtRH1XR6-mfadPnTBCQRZP4rAtc,2092
56
+ roborock_cli/_vendor/roborock/devices/traits/a01/__init__.py,sha256=YMhSidQcYkFw_TXfsG5a-uCgq9eNw-CGpWDvrP6izp0,8251
57
+ roborock_cli/_vendor/roborock/devices/traits/b01/__init__.py,sha256=pGN6wEocE6Fr2BTasG8Z_75crD6OdTwpju59Vw7eTDk,202
58
+ roborock_cli/_vendor/roborock/devices/traits/b01/q10/__init__.py,sha256=scApTeuyydJ348tQVMDRCQQt5zkzsOfYBu9vy1dSV8o,2725
59
+ roborock_cli/_vendor/roborock/devices/traits/b01/q10/command.py,sha256=pPPlgh1v0kBYg8w0xizmcIHj1Kxcs-QbH6b1J5fd77U,1390
60
+ roborock_cli/_vendor/roborock/devices/traits/b01/q10/common.py,sha256=F4jG7B-dOOvKwklbHb8AcDqmTgtlELkbNe5mp8UWKwM,4559
61
+ roborock_cli/_vendor/roborock/devices/traits/b01/q10/status.py,sha256=Z4ofpVpEuOCyiTnOjuAyraRhZCkBKaAcWMiRLwcycc0,1153
62
+ roborock_cli/_vendor/roborock/devices/traits/b01/q10/vacuum.py,sha256=vUOEDjXqVGqaXRGtGyGtsXsm-zTABPDi_84K6a4elH8,2301
63
+ roborock_cli/_vendor/roborock/devices/traits/b01/q7/__init__.py,sha256=x-hGa-Ak-OIWrAmB0QLZ6dlBawNPAB9uHpGPGcCYvT4,4970
64
+ roborock_cli/_vendor/roborock/devices/traits/b01/q7/clean_summary.py,sha256=zGi7Cr41xzYURFwJM05GT5SsxC3Rg9SHnMUmEwLcmPc,3099
65
+ roborock_cli/_vendor/roborock/devices/traits/v1/__init__.py,sha256=NSPvyoZaMid-h1X_0jRnszXnOTdEMGqQrPv0kbt9S80,13949
66
+ roborock_cli/_vendor/roborock/devices/traits/v1/child_lock.py,sha256=A4T-E6_BK6O6V0kOiX0PsHnGXsQxEJaE7RGjhEWiqqM,1167
67
+ roborock_cli/_vendor/roborock/devices/traits/v1/clean_summary.py,sha256=sNcpp-0oR5DpDjxzbYI9aXCjSIif35hW2nHlKwmrgUM,4037
68
+ roborock_cli/_vendor/roborock/devices/traits/v1/command.py,sha256=4Tv1bf9tlXMVkBRCnCf746k7pXXftlKE-98y4c0ApsU,1536
69
+ roborock_cli/_vendor/roborock/devices/traits/v1/common.py,sha256=oqDABXZpJ8rG6uMobCzxEtCVU9icqMEdMVwRG8XqKxA,6519
70
+ roborock_cli/_vendor/roborock/devices/traits/v1/consumeable.py,sha256=wRS5V4g52Sz2JBKVe0kD03tpr32toxxP7FXY224FOQQ,1593
71
+ roborock_cli/_vendor/roborock/devices/traits/v1/device_features.py,sha256=8hMhq8RkvddzktkpWwmGOO70tgrIsPJfRMquoUzD-RY,3563
72
+ roborock_cli/_vendor/roborock/devices/traits/v1/do_not_disturb.py,sha256=SXDqxca96NZXqcOSheFdnwsYFNgzI7Ax41aWOmKb3nE,1674
73
+ roborock_cli/_vendor/roborock/devices/traits/v1/dust_collection_mode.py,sha256=iKGWfBcK58_uvaDNzUI0DGgMeLiVSnFGwPZx0bxHyPI,529
74
+ roborock_cli/_vendor/roborock/devices/traits/v1/flow_led_status.py,sha256=v1caj_puSCkFyKm2FsEEzmwVCiOfl5tTvzylinXAB8g,1168
75
+ roborock_cli/_vendor/roborock/devices/traits/v1/home.py,sha256=gBug0towW6OxT5Zdlj0POCxQkp0LvxhzMUy_ifzd3Po,13136
76
+ roborock_cli/_vendor/roborock/devices/traits/v1/led_status.py,sha256=6nfCc-8VUJqouoaH13UI0WHV-dVei4TzZPJUQ3ZAW9o,1703
77
+ roborock_cli/_vendor/roborock/devices/traits/v1/map_content.py,sha256=wQsJ0fR_vfCAVSljueuaNdGO25pPdIsUTjBJk2xXuDU,2969
78
+ roborock_cli/_vendor/roborock/devices/traits/v1/maps.py,sha256=bBzutV9y19GqIB8d7QngSTIxMOQ-i0vSMCezKKsPOm4,3403
79
+ roborock_cli/_vendor/roborock/devices/traits/v1/network_info.py,sha256=cjd4G3x26tBI6geUo8QcpLKvM5RO_d3Oc9WH31toqcw,2252
80
+ roborock_cli/_vendor/roborock/devices/traits/v1/rooms.py,sha256=-eEkSTEnKfbOf01LtYSrjgUXW_74GqrgWLDs5-0Two8,4242
81
+ roborock_cli/_vendor/roborock/devices/traits/v1/routines.py,sha256=CBnBnYqvH-XehpRn7JxgKUGLqzf-SBuJ7UIJr2dO1rM,973
82
+ roborock_cli/_vendor/roborock/devices/traits/v1/smart_wash_params.py,sha256=Hga_d3xEE7xy6Nwm0KqMTVLj5N7sKGu4gucUqsbkqyw,531
83
+ roborock_cli/_vendor/roborock/devices/traits/v1/status.py,sha256=iKEAZR_033_w4NUkTiqU2qsUky7xwIj54lqAIqNJucI,3562
84
+ roborock_cli/_vendor/roborock/devices/traits/v1/valley_electricity_timer.py,sha256=UB_69bv4_cfcZ3JkuViE4mXGfkybAaQ-3YsxyTgmmMU,1862
85
+ roborock_cli/_vendor/roborock/devices/traits/v1/volume.py,sha256=Y7GzjAjJanIxCZQL9eoUmBX72i8ussymBCMRr1fWn9A,1010
86
+ roborock_cli/_vendor/roborock/devices/traits/v1/wash_towel_mode.py,sha256=TY_wHiJE-HujIlgBSEARmRKRcVG5VSHDX4xeonNM4sY,511
87
+ roborock_cli/_vendor/roborock/devices/transport/__init__.py,sha256=6_vMJ7BFAX_I56-Y0MT3TKhOXT4Qv5q_eT5dZLaUNqU,288
88
+ roborock_cli/_vendor/roborock/devices/transport/channel.py,sha256=9J13gp8uwNCXHHN1SYG8vP_nzX5T_elrZCajyRZPRzk,1002
89
+ roborock_cli/_vendor/roborock/devices/transport/local_channel.py,sha256=CFJBXoGImH1SHe2FVMQZCTZ3MQ6QKpCW5NZmz3KCQLc,11737
90
+ roborock_cli/_vendor/roborock/devices/transport/mqtt_channel.py,sha256=KU50bdPugEWNT4zqlDGiHX38JygLG2Ad5hO9hJYGktA,4779
91
+ roborock_cli/_vendor/roborock/map/__init__.py,sha256=L3WHujuxUHCTTPaOElkJsTN_FkYhw01drfR-W4blgFc,146
92
+ roborock_cli/_vendor/roborock/map/map_parser.py,sha256=l_IJ0bkLWK7Ox9rxZoEI5VrE9v3nXSE865gBMuPS7Fs,4075
93
+ roborock_cli/_vendor/roborock/mqtt/__init__.py,sha256=Lplt5aS3lCJW09KX34tf2r6NHU8penM-R07FI56Z5CE,415
94
+ roborock_cli/_vendor/roborock/mqtt/health_manager.py,sha256=i_3vbslHMebVd0VNBWalPaEnZi8gcRI3IcKPt2wlQF8,2208
95
+ roborock_cli/_vendor/roborock/mqtt/roborock_session.py,sha256=QA-DKgZgVZ_hv4nTUNhMlqkjRUChf_34CwzeTOV35Es,20862
96
+ roborock_cli/_vendor/roborock/mqtt/session.py,sha256=1LtyDvMCMw2cOwxSFo1IVjEhTSq7mIF7yXvHZzTl-Tk,3436
97
+ roborock_cli/_vendor/roborock/protocols/__init__.py,sha256=1ems3I1_KUQoMf2Hf6ZYDKFhu5Gnsc0PbfD-dkQJ7vA,82
98
+ roborock_cli/_vendor/roborock/protocols/a01_protocol.py,sha256=qgQkjIJ8C6aFA6NDhqWcDN06COm_m9-RP3oJzagQGqY,2438
99
+ roborock_cli/_vendor/roborock/protocols/b01_q10_protocol.py,sha256=_bPfq_Arw3rHSisJAmDqq2CXxtAh0JqE-gya85MQQyQ,3470
100
+ roborock_cli/_vendor/roborock/protocols/b01_q7_protocol.py,sha256=14SZrj7TTbyysyXpI0MiETZwNDQ6NK7RldCiEitfnfQ,2885
101
+ roborock_cli/_vendor/roborock/protocols/v1_protocol.py,sha256=I5bjnVbhYbpGnaR8Ly_ZO1W7RANPlt1l3rBjRL8QTOc,9761
102
+ roborock_cli-0.1.1.dist-info/METADATA,sha256=2kTDmIAcW-XCMQUKE41LrbklWL6LbzEwVOSazsUrACI,4138
103
+ roborock_cli-0.1.1.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
104
+ roborock_cli-0.1.1.dist-info/entry_points.txt,sha256=KBO4vEBgnWWnthvGj-N2IkGIeAC_Yp192Zf7LL8sIpM,60
105
+ roborock_cli-0.1.1.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
106
+ roborock_cli-0.1.1.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.29.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ roborock-cli = roborock_cli.__main__:main