python-roborock 4.7.2__tar.gz → 4.9.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 (94) hide show
  1. {python_roborock-4.7.2 → python_roborock-4.9.0}/PKG-INFO +1 -1
  2. {python_roborock-4.7.2 → python_roborock-4.9.0}/pyproject.toml +1 -1
  3. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/data/b01_q7/b01_q7_containers.py +4 -2
  4. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/traits/b01/q10/__init__.py +5 -3
  5. python_roborock-4.9.0/roborock/devices/traits/b01/q10/vacuum.py +56 -0
  6. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/traits/b01/q7/__init__.py +5 -0
  7. {python_roborock-4.7.2 → python_roborock-4.9.0}/.gitignore +0 -0
  8. {python_roborock-4.7.2 → python_roborock-4.9.0}/LICENSE +0 -0
  9. {python_roborock-4.7.2 → python_roborock-4.9.0}/README.md +0 -0
  10. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/__init__.py +0 -0
  11. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/broadcast_protocol.py +0 -0
  12. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/callbacks.py +0 -0
  13. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/cli.py +0 -0
  14. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/const.py +0 -0
  15. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/data/__init__.py +0 -0
  16. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/data/b01_q10/__init__.py +0 -0
  17. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/data/b01_q10/b01_q10_code_mappings.py +0 -0
  18. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/data/b01_q10/b01_q10_containers.py +0 -0
  19. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/data/b01_q7/__init__.py +0 -0
  20. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/data/b01_q7/b01_q7_code_mappings.py +0 -0
  21. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/data/code_mappings.py +0 -0
  22. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/data/containers.py +0 -0
  23. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/data/dyad/__init__.py +0 -0
  24. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/data/dyad/dyad_code_mappings.py +0 -0
  25. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/data/dyad/dyad_containers.py +0 -0
  26. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/data/v1/__init__.py +0 -0
  27. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/data/v1/v1_clean_modes.py +0 -0
  28. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/data/v1/v1_code_mappings.py +0 -0
  29. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/data/v1/v1_containers.py +0 -0
  30. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/data/zeo/__init__.py +0 -0
  31. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/data/zeo/zeo_code_mappings.py +0 -0
  32. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/data/zeo/zeo_containers.py +0 -0
  33. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/device_features.py +0 -0
  34. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/README.md +0 -0
  35. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/__init__.py +0 -0
  36. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/cache.py +0 -0
  37. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/device.py +0 -0
  38. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/device_manager.py +0 -0
  39. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/file_cache.py +0 -0
  40. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/rpc/__init__.py +0 -0
  41. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/rpc/a01_channel.py +0 -0
  42. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/rpc/b01_q10_channel.py +0 -0
  43. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/rpc/b01_q7_channel.py +0 -0
  44. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/rpc/v1_channel.py +0 -0
  45. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/traits/__init__.py +0 -0
  46. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/traits/a01/__init__.py +0 -0
  47. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/traits/b01/__init__.py +0 -0
  48. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/traits/b01/q10/command.py +0 -0
  49. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/traits/traits_mixin.py +0 -0
  50. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/traits/v1/__init__.py +0 -0
  51. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/traits/v1/child_lock.py +0 -0
  52. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/traits/v1/clean_summary.py +0 -0
  53. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/traits/v1/command.py +0 -0
  54. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/traits/v1/common.py +0 -0
  55. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/traits/v1/consumeable.py +0 -0
  56. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/traits/v1/device_features.py +0 -0
  57. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/traits/v1/do_not_disturb.py +0 -0
  58. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/traits/v1/dust_collection_mode.py +0 -0
  59. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/traits/v1/flow_led_status.py +0 -0
  60. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/traits/v1/home.py +0 -0
  61. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/traits/v1/led_status.py +0 -0
  62. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/traits/v1/map_content.py +0 -0
  63. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/traits/v1/maps.py +0 -0
  64. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/traits/v1/network_info.py +0 -0
  65. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/traits/v1/rooms.py +0 -0
  66. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/traits/v1/routines.py +0 -0
  67. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/traits/v1/smart_wash_params.py +0 -0
  68. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/traits/v1/status.py +0 -0
  69. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/traits/v1/valley_electricity_timer.py +0 -0
  70. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/traits/v1/volume.py +0 -0
  71. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/traits/v1/wash_towel_mode.py +0 -0
  72. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/transport/__init__.py +0 -0
  73. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/transport/channel.py +0 -0
  74. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/transport/local_channel.py +0 -0
  75. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/devices/transport/mqtt_channel.py +0 -0
  76. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/diagnostics.py +0 -0
  77. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/exceptions.py +0 -0
  78. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/map/__init__.py +0 -0
  79. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/map/map_parser.py +0 -0
  80. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/mqtt/__init__.py +0 -0
  81. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/mqtt/health_manager.py +0 -0
  82. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/mqtt/roborock_session.py +0 -0
  83. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/mqtt/session.py +0 -0
  84. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/protocol.py +0 -0
  85. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/protocols/__init__.py +0 -0
  86. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/protocols/a01_protocol.py +0 -0
  87. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/protocols/b01_q10_protocol.py +0 -0
  88. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/protocols/b01_q7_protocol.py +0 -0
  89. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/protocols/v1_protocol.py +0 -0
  90. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/py.typed +0 -0
  91. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/roborock_message.py +0 -0
  92. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/roborock_typing.py +0 -0
  93. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/util.py +0 -0
  94. {python_roborock-4.7.2 → python_roborock-4.9.0}/roborock/web_api.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-roborock
3
- Version: 4.7.2
3
+ Version: 4.9.0
4
4
  Summary: A package to control Roborock vacuums.
5
5
  Project-URL: Repository, https://github.com/humbertogontijo/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 = "4.7.2"
3
+ version = "4.9.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"
@@ -3,7 +3,9 @@ from dataclasses import dataclass, field
3
3
  from ..containers import RoborockBase
4
4
  from .b01_q7_code_mappings import (
5
5
  B01Fault,
6
+ CleanTypeMapping,
6
7
  SCWindMapping,
8
+ WaterLevelMapping,
7
9
  WorkModeMapping,
8
10
  WorkStatusMapping,
9
11
  )
@@ -77,8 +79,8 @@ class B01Props(RoborockBase):
77
79
  status: WorkStatusMapping | None = None
78
80
  fault: B01Fault | None = None
79
81
  wind: SCWindMapping | None = None
80
- water: int | None = None
81
- mode: int | None = None
82
+ water: WaterLevelMapping | None = None
83
+ mode: CleanTypeMapping | None = None
82
84
  quantity: int | None = None
83
85
  alarm: int | None = None
84
86
  volume: int | None = None
@@ -1,12 +1,10 @@
1
1
  """Traits for Q10 B01 devices."""
2
2
 
3
- from typing import Any
4
-
5
- from roborock.devices.rpc.b01_q7_channel import send_decoded_command
6
3
  from roborock.devices.traits import Trait
7
4
  from roborock.devices.transport.mqtt_channel import MqttChannel
8
5
 
9
6
  from .command import CommandTrait
7
+ from .vacuum import VacuumTrait
10
8
 
11
9
  __all__ = [
12
10
  "Q10PropertiesApi",
@@ -19,9 +17,13 @@ class Q10PropertiesApi(Trait):
19
17
  command: CommandTrait
20
18
  """Trait for sending commands to Q10 devices."""
21
19
 
20
+ vacuum: VacuumTrait
21
+ """Trait for sending vacuum related commands to Q10 devices."""
22
+
22
23
  def __init__(self, channel: MqttChannel) -> None:
23
24
  """Initialize the B01Props API."""
24
25
  self.command = CommandTrait(channel)
26
+ self.vacuum = VacuumTrait(self.command)
25
27
 
26
28
 
27
29
  def create(channel: MqttChannel) -> Q10PropertiesApi:
@@ -0,0 +1,56 @@
1
+ """Traits for Q10 B01 devices."""
2
+
3
+ from roborock.data.b01_q10.b01_q10_code_mappings import B01_Q10_DP
4
+
5
+ from .command import CommandTrait
6
+
7
+
8
+ class VacuumTrait:
9
+ """Trait for sending vacuum commands.
10
+
11
+ This is a wrapper around the CommandTrait for sending vacuum related
12
+ commands to Q10 devices.
13
+ """
14
+
15
+ def __init__(self, command: CommandTrait) -> None:
16
+ """Initialize the VacuumTrait."""
17
+ self._command = command
18
+
19
+ async def start_clean(self) -> None:
20
+ """Start cleaning."""
21
+ await self._command.send(
22
+ command=B01_Q10_DP.START_CLEAN,
23
+ # TODO: figure out other commands
24
+ # 1 = start cleaning
25
+ # 2 = "electoral" clean, also has "clean_parameters"
26
+ # 4 = fast create map
27
+ params={"cmd": 1},
28
+ )
29
+
30
+ async def pause_clean(self) -> None:
31
+ """Pause cleaning."""
32
+ await self._command.send(
33
+ command=B01_Q10_DP.PAUSE,
34
+ params={},
35
+ )
36
+
37
+ async def resume_clean(self) -> None:
38
+ """Resume cleaning."""
39
+ await self._command.send(
40
+ command=B01_Q10_DP.RESUME,
41
+ params={},
42
+ )
43
+
44
+ async def stop_clean(self) -> None:
45
+ """Stop cleaning."""
46
+ await self._command.send(
47
+ command=B01_Q10_DP.STOP,
48
+ params={},
49
+ )
50
+
51
+ async def return_to_dock(self) -> None:
52
+ """Return to dock."""
53
+ await self._command.send(
54
+ command=B01_Q10_DP.START_DOCK_TASK,
55
+ params={},
56
+ )
@@ -6,6 +6,7 @@ from typing import Any
6
6
  from roborock import B01Props
7
7
  from roborock.data.b01_q7.b01_q7_code_mappings import (
8
8
  CleanTaskTypeMapping,
9
+ CleanTypeMapping,
9
10
  SCDeviceCleanParam,
10
11
  SCWindMapping,
11
12
  WaterLevelMapping,
@@ -54,6 +55,10 @@ class Q7PropertiesApi(Trait):
54
55
  """Set the water level (water)."""
55
56
  await self.set_prop(RoborockB01Props.WATER, water_level.code)
56
57
 
58
+ async def set_mode(self, mode: CleanTypeMapping) -> None:
59
+ """Set the cleaning mode (vacuum, mop, or vacuum and mop)."""
60
+ await self.set_prop(RoborockB01Props.MODE, mode.code)
61
+
57
62
  async def start_clean(self) -> None:
58
63
  """Start cleaning."""
59
64
  await self.send(
File without changes