python-roborock 2.11.2__tar.gz → 2.12.0__tar.gz

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 (28) hide show
  1. {python_roborock-2.11.2 → python_roborock-2.12.0}/PKG-INFO +3 -3
  2. {python_roborock-2.11.2 → python_roborock-2.12.0}/pyproject.toml +1 -1
  3. {python_roborock-2.11.2 → python_roborock-2.12.0}/roborock/cli.py +26 -1
  4. {python_roborock-2.11.2 → python_roborock-2.12.0}/roborock/code_mappings.py +5 -1
  5. {python_roborock-2.11.2 → python_roborock-2.12.0}/LICENSE +0 -0
  6. {python_roborock-2.11.2 → python_roborock-2.12.0}/README.md +0 -0
  7. {python_roborock-2.11.2 → python_roborock-2.12.0}/roborock/__init__.py +0 -0
  8. {python_roborock-2.11.2 → python_roborock-2.12.0}/roborock/api.py +0 -0
  9. {python_roborock-2.11.2 → python_roborock-2.12.0}/roborock/cloud_api.py +0 -0
  10. {python_roborock-2.11.2 → python_roborock-2.12.0}/roborock/command_cache.py +0 -0
  11. {python_roborock-2.11.2 → python_roborock-2.12.0}/roborock/const.py +0 -0
  12. {python_roborock-2.11.2 → python_roborock-2.12.0}/roborock/containers.py +0 -0
  13. {python_roborock-2.11.2 → python_roborock-2.12.0}/roborock/exceptions.py +0 -0
  14. {python_roborock-2.11.2 → python_roborock-2.12.0}/roborock/local_api.py +0 -0
  15. {python_roborock-2.11.2 → python_roborock-2.12.0}/roborock/protocol.py +0 -0
  16. {python_roborock-2.11.2 → python_roborock-2.12.0}/roborock/py.typed +0 -0
  17. {python_roborock-2.11.2 → python_roborock-2.12.0}/roborock/roborock_future.py +0 -0
  18. {python_roborock-2.11.2 → python_roborock-2.12.0}/roborock/roborock_message.py +0 -0
  19. {python_roborock-2.11.2 → python_roborock-2.12.0}/roborock/roborock_typing.py +0 -0
  20. {python_roborock-2.11.2 → python_roborock-2.12.0}/roborock/util.py +0 -0
  21. {python_roborock-2.11.2 → python_roborock-2.12.0}/roborock/version_1_apis/__init__.py +0 -0
  22. {python_roborock-2.11.2 → python_roborock-2.12.0}/roborock/version_1_apis/roborock_client_v1.py +0 -0
  23. {python_roborock-2.11.2 → python_roborock-2.12.0}/roborock/version_1_apis/roborock_local_client_v1.py +0 -0
  24. {python_roborock-2.11.2 → python_roborock-2.12.0}/roborock/version_1_apis/roborock_mqtt_client_v1.py +0 -0
  25. {python_roborock-2.11.2 → python_roborock-2.12.0}/roborock/version_a01_apis/__init__.py +0 -0
  26. {python_roborock-2.11.2 → python_roborock-2.12.0}/roborock/version_a01_apis/roborock_client_a01.py +0 -0
  27. {python_roborock-2.11.2 → python_roborock-2.12.0}/roborock/version_a01_apis/roborock_mqtt_client_a01.py +0 -0
  28. {python_roborock-2.11.2 → python_roborock-2.12.0}/roborock/web_api.py +0 -0
@@ -1,7 +1,8 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.1
2
2
  Name: python-roborock
3
- Version: 2.11.2
3
+ Version: 2.12.0
4
4
  Summary: A package to control Roborock vacuums.
5
+ Home-page: https://github.com/humbertogontijo/python-roborock
5
6
  License: GPL-3.0-only
6
7
  Keywords: roborock,vacuum,homeassistant
7
8
  Author: humbertogontijo
@@ -15,7 +16,6 @@ Classifier: Operating System :: OS Independent
15
16
  Classifier: Programming Language :: Python :: 3
16
17
  Classifier: Programming Language :: Python :: 3.11
17
18
  Classifier: Programming Language :: Python :: 3.12
18
- Classifier: Programming Language :: Python :: 3.13
19
19
  Classifier: Topic :: Software Development :: Libraries
20
20
  Requires-Dist: aiohttp (>=3.8.2,<4.0.0)
21
21
  Requires-Dist: async-timeout
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "python-roborock"
3
- version = "2.11.2"
3
+ version = "2.12.0"
4
4
  description = "A package to control Roborock vacuums."
5
5
  authors = ["humbertogontijo <humbertogontijo@users.noreply.github.com>"]
6
6
  license = "GPL-3.0-only"
@@ -11,9 +11,10 @@ from pyshark.capture.live_capture import LiveCapture, UnknownInterfaceException
11
11
  from pyshark.packet.packet import Packet # type: ignore
12
12
 
13
13
  from roborock import RoborockException
14
- from roborock.containers import DeviceData, LoginData
14
+ from roborock.containers import DeviceData, HomeDataProduct, LoginData
15
15
  from roborock.protocol import MessageParser
16
16
  from roborock.util import run_sync
17
+ from roborock.version_1_apis.roborock_local_client_v1 import RoborockLocalClientV1
17
18
  from roborock.version_1_apis.roborock_mqtt_client_v1 import RoborockMqttClientV1
18
19
  from roborock.web_api import RoborockApiClient
19
20
 
@@ -145,6 +146,29 @@ async def execute_scene(ctx, scene_id):
145
146
  await client.execute_scene(login_data.user_data, scene_id)
146
147
 
147
148
 
149
+ @click.command()
150
+ @click.option("--device_id", required=True)
151
+ @click.pass_context
152
+ @run_sync()
153
+ async def status(ctx, device_id):
154
+ context: RoborockContext = ctx.obj
155
+ login_data = context.login_data()
156
+ if not login_data.home_data:
157
+ await _discover(ctx)
158
+ login_data = context.login_data()
159
+ home_data = login_data.home_data
160
+ devices = home_data.devices + home_data.received_devices
161
+ device = next(device for device in devices if device.duid == device_id)
162
+ product_info: dict[str, HomeDataProduct] = {product.id: product for product in home_data.products}
163
+ device_data = DeviceData(device, product_info[device.product_id].model)
164
+ mqtt_client = RoborockMqttClientV1(login_data.user_data, device_data)
165
+ networking = await mqtt_client.get_networking()
166
+ local_device_data = DeviceData(device, product_info[device.product_id].model, networking.ip)
167
+ local_client = RoborockLocalClientV1(local_device_data)
168
+ status = await local_client.get_status()
169
+ click.echo(json.dumps(status.as_dict(), indent=4))
170
+
171
+
148
172
  @click.command()
149
173
  @click.option("--device_id", required=True)
150
174
  @click.option("--cmd", required=True)
@@ -226,6 +250,7 @@ cli.add_command(discover)
226
250
  cli.add_command(list_devices)
227
251
  cli.add_command(list_scenes)
228
252
  cli.add_command(execute_scene)
253
+ cli.add_command(status)
229
254
  cli.add_command(command)
230
255
  cli.add_command(parser)
231
256
 
@@ -259,7 +259,9 @@ class RoborockFanSpeedQRevoCurv(RoborockFanPowerCode):
259
259
  balanced = 102
260
260
  turbo = 103
261
261
  max = 104
262
- max_plus = 105
262
+ off = 105
263
+ custom = 106
264
+ max_plus = 108
263
265
  smart_mode = 110
264
266
 
265
267
 
@@ -291,6 +293,7 @@ class RoborockMopModeCode(RoborockEnum):
291
293
  class RoborockMopModeQRevoCurv(RoborockMopModeCode):
292
294
  standard = 300
293
295
  deep = 301
296
+ custom = 302
294
297
  deep_plus = 303
295
298
  fast = 304
296
299
  smart_mode = 306
@@ -373,6 +376,7 @@ class RoborockMopIntensityQRevoCurv(RoborockMopIntensityCode):
373
376
  low = 201
374
377
  medium = 202
375
378
  high = 203
379
+ custom = 204
376
380
  custom_water_flow = 207
377
381
  smart_mode = 209
378
382