python-roborock 5.12.0__tar.gz → 5.14.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 (104) hide show
  1. {python_roborock-5.12.0 → python_roborock-5.14.0}/PKG-INFO +1 -1
  2. {python_roborock-5.12.0 → python_roborock-5.14.0}/pyproject.toml +1 -1
  3. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/data/b01_q10/b01_q10_code_mappings.py +10 -0
  4. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/b01/q10/__init__.py +5 -1
  5. python_roborock-5.14.0/roborock/devices/traits/b01/q10/remote.py +43 -0
  6. {python_roborock-5.12.0 → python_roborock-5.14.0}/.gitignore +0 -0
  7. {python_roborock-5.12.0 → python_roborock-5.14.0}/LICENSE +0 -0
  8. {python_roborock-5.12.0 → python_roborock-5.14.0}/README.md +0 -0
  9. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/__init__.py +0 -0
  10. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/broadcast_protocol.py +0 -0
  11. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/callbacks.py +0 -0
  12. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/cli.py +0 -0
  13. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/const.py +0 -0
  14. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/data/__init__.py +0 -0
  15. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/data/b01_q10/__init__.py +0 -0
  16. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/data/b01_q10/b01_q10_containers.py +0 -0
  17. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/data/b01_q7/__init__.py +0 -0
  18. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/data/b01_q7/b01_q7_code_mappings.py +0 -0
  19. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/data/b01_q7/b01_q7_containers.py +0 -0
  20. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/data/code_mappings.py +0 -0
  21. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/data/containers.py +0 -0
  22. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/data/dyad/__init__.py +0 -0
  23. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/data/dyad/dyad_code_mappings.py +0 -0
  24. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/data/dyad/dyad_containers.py +0 -0
  25. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/data/v1/__init__.py +0 -0
  26. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/data/v1/v1_clean_modes.py +0 -0
  27. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/data/v1/v1_code_mappings.py +0 -0
  28. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/data/v1/v1_containers.py +0 -0
  29. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/data/zeo/__init__.py +0 -0
  30. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/data/zeo/zeo_code_mappings.py +0 -0
  31. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/data/zeo/zeo_containers.py +0 -0
  32. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/device_features.py +0 -0
  33. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/README.md +0 -0
  34. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/__init__.py +0 -0
  35. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/cache.py +0 -0
  36. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/device.py +0 -0
  37. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/device_manager.py +0 -0
  38. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/file_cache.py +0 -0
  39. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/rpc/__init__.py +0 -0
  40. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/rpc/a01_channel.py +0 -0
  41. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/rpc/b01_q10_channel.py +0 -0
  42. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/rpc/b01_q7_channel.py +0 -0
  43. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/rpc/v1_channel.py +0 -0
  44. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/__init__.py +0 -0
  45. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/a01/__init__.py +0 -0
  46. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/b01/__init__.py +0 -0
  47. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/b01/q10/command.py +0 -0
  48. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/b01/q10/status.py +0 -0
  49. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/b01/q10/vacuum.py +0 -0
  50. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/b01/q7/__init__.py +0 -0
  51. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/b01/q7/clean_summary.py +0 -0
  52. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/b01/q7/map.py +0 -0
  53. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/b01/q7/map_content.py +0 -0
  54. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/common.py +0 -0
  55. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/traits_mixin.py +0 -0
  56. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/v1/__init__.py +0 -0
  57. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/v1/child_lock.py +0 -0
  58. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/v1/clean_summary.py +0 -0
  59. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/v1/command.py +0 -0
  60. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/v1/common.py +0 -0
  61. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/v1/consumeable.py +0 -0
  62. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/v1/device_features.py +0 -0
  63. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/v1/do_not_disturb.py +0 -0
  64. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/v1/dust_collection_mode.py +0 -0
  65. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/v1/flow_led_status.py +0 -0
  66. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/v1/home.py +0 -0
  67. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/v1/led_status.py +0 -0
  68. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/v1/map_content.py +0 -0
  69. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/v1/maps.py +0 -0
  70. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/v1/network_info.py +0 -0
  71. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/v1/rooms.py +0 -0
  72. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/v1/routines.py +0 -0
  73. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/v1/smart_wash_params.py +0 -0
  74. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/v1/status.py +0 -0
  75. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/v1/valley_electricity_timer.py +0 -0
  76. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/v1/volume.py +0 -0
  77. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/traits/v1/wash_towel_mode.py +0 -0
  78. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/transport/__init__.py +0 -0
  79. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/transport/channel.py +0 -0
  80. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/transport/local_channel.py +0 -0
  81. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/devices/transport/mqtt_channel.py +0 -0
  82. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/diagnostics.py +0 -0
  83. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/exceptions.py +0 -0
  84. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/map/__init__.py +0 -0
  85. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/map/b01_map_parser.py +0 -0
  86. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/map/map_parser.py +0 -0
  87. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/map/proto/__init__.py +0 -0
  88. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/map/proto/b01_scmap.proto +0 -0
  89. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/map/proto/b01_scmap_pb2.py +0 -0
  90. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/mqtt/__init__.py +0 -0
  91. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/mqtt/health_manager.py +0 -0
  92. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/mqtt/roborock_session.py +0 -0
  93. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/mqtt/session.py +0 -0
  94. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/protocol.py +0 -0
  95. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/protocols/__init__.py +0 -0
  96. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/protocols/a01_protocol.py +0 -0
  97. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/protocols/b01_q10_protocol.py +0 -0
  98. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/protocols/b01_q7_protocol.py +0 -0
  99. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/protocols/v1_protocol.py +0 -0
  100. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/py.typed +0 -0
  101. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/roborock_message.py +0 -0
  102. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/roborock_typing.py +0 -0
  103. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/util.py +0 -0
  104. {python_roborock-5.12.0 → python_roborock-5.14.0}/roborock/web_api.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-roborock
3
- Version: 5.12.0
3
+ Version: 5.14.0
4
4
  Summary: A package to control Roborock vacuums.
5
5
  Project-URL: Repository, https://github.com/python-roborock/python-roborock
6
6
  Project-URL: Documentation, https://python-roborock.readthedocs.io/
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "python-roborock"
3
- version = "5.12.0"
3
+ version = "5.14.0"
4
4
  description = "A package to control Roborock vacuums."
5
5
  authors = [{ name = "humbertogontijo", email = "humbertogontijo@users.noreply.github.com" }, {name="Lash-L"}, {name="allenporter"}]
6
6
  requires-python = ">=3.11, <4"
@@ -1,3 +1,5 @@
1
+ from enum import IntEnum
2
+
1
3
  from ..code_mappings import RoborockModeEnum
2
4
 
3
5
 
@@ -217,3 +219,11 @@ class YXDeviceDustCollectionFrequency(RoborockModeEnum):
217
219
  INTERVAL_30 = "interval_30", 30
218
220
  INTERVAL_45 = "interval_45", 45
219
221
  INTERVAL_60 = "interval_60", 60
222
+
223
+
224
+ class RemoteCommand(IntEnum):
225
+ FORWARD = 0
226
+ LEFT = 2
227
+ RIGHT = 3
228
+ STOP = 4
229
+ EXIT = 5
@@ -2,7 +2,6 @@
2
2
 
3
3
  import asyncio
4
4
  import logging
5
- from typing import Any
6
5
 
7
6
  from roborock.data.b01_q10.b01_q10_code_mappings import B01_Q10_DP
8
7
  from roborock.devices.rpc.b01_q10_channel import stream_decoded_responses
@@ -10,6 +9,7 @@ from roborock.devices.traits import Trait
10
9
  from roborock.devices.transport.mqtt_channel import MqttChannel
11
10
 
12
11
  from .command import CommandTrait
12
+ from .remote import RemoteTrait
13
13
  from .status import StatusTrait
14
14
  from .vacuum import VacuumTrait
15
15
 
@@ -32,11 +32,15 @@ class Q10PropertiesApi(Trait):
32
32
  vacuum: VacuumTrait
33
33
  """Trait for sending vacuum related commands to Q10 devices."""
34
34
 
35
+ remote: RemoteTrait
36
+ """Trait for sending remote control related commands to Q10 devices."""
37
+
35
38
  def __init__(self, channel: MqttChannel) -> None:
36
39
  """Initialize the B01Props API."""
37
40
  self._channel = channel
38
41
  self.command = CommandTrait(channel)
39
42
  self.vacuum = VacuumTrait(self.command)
43
+ self.remote = RemoteTrait(self.command)
40
44
  self.status = StatusTrait()
41
45
  self._subscribe_task: asyncio.Task[None] | None = None
42
46
 
@@ -0,0 +1,43 @@
1
+ """Traits for Q10 B01 devices."""
2
+
3
+ from roborock.data.b01_q10.b01_q10_code_mappings import (
4
+ B01_Q10_DP,
5
+ RemoteCommand,
6
+ )
7
+
8
+ from .command import CommandTrait
9
+
10
+
11
+ class RemoteTrait:
12
+ """Trait for sending vacuum commands.
13
+
14
+ This is a wrapper around the CommandTrait for sending remote related
15
+ commands to Q10 devices.
16
+ """
17
+
18
+ def __init__(self, command: CommandTrait) -> None:
19
+ """Initialize the RemoteTrait."""
20
+ self._command = command
21
+
22
+ async def _send_remote(self, action: RemoteCommand) -> None:
23
+ await self._command.send(B01_Q10_DP.COMMON, params={B01_Q10_DP.REMOTE: action.value})
24
+
25
+ async def forward(self) -> None:
26
+ """Move forward."""
27
+ await self._send_remote(RemoteCommand.FORWARD)
28
+
29
+ async def left(self) -> None:
30
+ """Turn left."""
31
+ await self._send_remote(RemoteCommand.LEFT)
32
+
33
+ async def right(self) -> None:
34
+ """Turn right."""
35
+ await self._send_remote(RemoteCommand.RIGHT)
36
+
37
+ async def stop(self) -> None:
38
+ """Stop last moving command or start remote control."""
39
+ await self._send_remote(RemoteCommand.STOP)
40
+
41
+ async def exit_remote(self) -> None:
42
+ """Exit remote control."""
43
+ await self._send_remote(RemoteCommand.EXIT)