python-roborock 3.6.0__tar.gz → 3.7.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.
- {python_roborock-3.6.0 → python_roborock-3.7.0}/PKG-INFO +1 -1
- {python_roborock-3.6.0 → python_roborock-3.7.0}/pyproject.toml +1 -1
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/device_manager.py +1 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/traits/v1/__init__.py +9 -0
- python_roborock-3.7.0/roborock/devices/traits/v1/routines.py +26 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/web_api.py +8 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/.gitignore +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/LICENSE +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/README.md +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/__init__.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/api.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/broadcast_protocol.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/callbacks.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/cli.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/cloud_api.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/command_cache.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/const.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/data/__init__.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/data/b01_q10/__init__.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/data/b01_q10/b01_q10_code_mappings.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/data/b01_q10/b01_q10_containers.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/data/b01_q7/__init__.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/data/b01_q7/b01_q7_code_mappings.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/data/b01_q7/b01_q7_containers.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/data/code_mappings.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/data/containers.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/data/dyad/__init__.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/data/dyad/dyad_code_mappings.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/data/dyad/dyad_containers.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/data/v1/__init__.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/data/v1/v1_clean_modes.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/data/v1/v1_code_mappings.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/data/v1/v1_containers.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/data/zeo/__init__.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/data/zeo/zeo_code_mappings.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/data/zeo/zeo_containers.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/device_features.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/README.md +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/__init__.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/a01_channel.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/b01_channel.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/cache.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/channel.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/device.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/local_channel.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/mqtt_channel.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/traits/__init__.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/traits/a01/__init__.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/traits/b01/__init__.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/traits/traits_mixin.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/traits/v1/child_lock.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/traits/v1/clean_summary.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/traits/v1/command.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/traits/v1/common.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/traits/v1/consumeable.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/traits/v1/device_features.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/traits/v1/do_not_disturb.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/traits/v1/dust_collection_mode.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/traits/v1/flow_led_status.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/traits/v1/home.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/traits/v1/led_status.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/traits/v1/map_content.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/traits/v1/maps.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/traits/v1/network_info.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/traits/v1/rooms.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/traits/v1/smart_wash_params.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/traits/v1/status.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/traits/v1/valley_electricity_timer.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/traits/v1/volume.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/traits/v1/wash_towel_mode.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/v1_channel.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/v1_rpc_channel.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/exceptions.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/map/__init__.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/map/map_parser.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/mqtt/__init__.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/mqtt/roborock_session.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/mqtt/session.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/protocol.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/protocols/a01_protocol.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/protocols/b01_protocol.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/protocols/v1_protocol.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/py.typed +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/roborock_future.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/roborock_message.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/roborock_typing.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/util.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/version_1_apis/__init__.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/version_1_apis/roborock_client_v1.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/version_1_apis/roborock_local_client_v1.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/version_1_apis/roborock_mqtt_client_v1.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/version_a01_apis/__init__.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/version_a01_apis/roborock_client_a01.py +0 -0
- {python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/version_a01_apis/roborock_mqtt_client_a01.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-roborock
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.7.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 = "3.
|
|
3
|
+
version = "3.7.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"
|
|
@@ -40,6 +40,7 @@ from roborock.devices.cache import Cache
|
|
|
40
40
|
from roborock.devices.traits import Trait
|
|
41
41
|
from roborock.devices.v1_rpc_channel import V1RpcChannel
|
|
42
42
|
from roborock.map.map_parser import MapParserConfig
|
|
43
|
+
from roborock.web_api import UserWebApiClient
|
|
43
44
|
|
|
44
45
|
from .child_lock import ChildLockTrait
|
|
45
46
|
from .clean_summary import CleanSummaryTrait
|
|
@@ -56,6 +57,7 @@ from .map_content import MapContentTrait
|
|
|
56
57
|
from .maps import MapsTrait
|
|
57
58
|
from .network_info import NetworkInfoTrait
|
|
58
59
|
from .rooms import RoomsTrait
|
|
60
|
+
from .routines import RoutinesTrait
|
|
59
61
|
from .smart_wash_params import SmartWashParamsTrait
|
|
60
62
|
from .status import StatusTrait
|
|
61
63
|
from .valley_electricity_timer import ValleyElectricityTimerTrait
|
|
@@ -85,6 +87,7 @@ __all__ = [
|
|
|
85
87
|
"WashTowelModeTrait",
|
|
86
88
|
"SmartWashParamsTrait",
|
|
87
89
|
"NetworkInfoTrait",
|
|
90
|
+
"RoutinesTrait",
|
|
88
91
|
]
|
|
89
92
|
|
|
90
93
|
|
|
@@ -108,6 +111,7 @@ class PropertiesApi(Trait):
|
|
|
108
111
|
home: HomeTrait
|
|
109
112
|
device_features: DeviceFeaturesTrait
|
|
110
113
|
network_info: NetworkInfoTrait
|
|
114
|
+
routines: RoutinesTrait
|
|
111
115
|
|
|
112
116
|
# Optional features that may not be supported on all devices
|
|
113
117
|
child_lock: ChildLockTrait | None = None
|
|
@@ -126,6 +130,7 @@ class PropertiesApi(Trait):
|
|
|
126
130
|
rpc_channel: V1RpcChannel,
|
|
127
131
|
mqtt_rpc_channel: V1RpcChannel,
|
|
128
132
|
map_rpc_channel: V1RpcChannel,
|
|
133
|
+
web_api: UserWebApiClient,
|
|
129
134
|
cache: Cache,
|
|
130
135
|
map_parser_config: MapParserConfig | None = None,
|
|
131
136
|
) -> None:
|
|
@@ -134,6 +139,7 @@ class PropertiesApi(Trait):
|
|
|
134
139
|
self._rpc_channel = rpc_channel
|
|
135
140
|
self._mqtt_rpc_channel = mqtt_rpc_channel
|
|
136
141
|
self._map_rpc_channel = map_rpc_channel
|
|
142
|
+
self._web_api = web_api
|
|
137
143
|
self._cache = cache
|
|
138
144
|
|
|
139
145
|
self.status = StatusTrait(product)
|
|
@@ -144,6 +150,7 @@ class PropertiesApi(Trait):
|
|
|
144
150
|
self.home = HomeTrait(self.status, self.maps, self.map_content, self.rooms, cache)
|
|
145
151
|
self.device_features = DeviceFeaturesTrait(product.product_nickname, cache)
|
|
146
152
|
self.network_info = NetworkInfoTrait(device_uid, cache)
|
|
153
|
+
self.routines = RoutinesTrait(device_uid, web_api)
|
|
147
154
|
|
|
148
155
|
# Dynamically create any traits that need to be populated
|
|
149
156
|
for item in fields(self):
|
|
@@ -267,6 +274,7 @@ def create(
|
|
|
267
274
|
rpc_channel: V1RpcChannel,
|
|
268
275
|
mqtt_rpc_channel: V1RpcChannel,
|
|
269
276
|
map_rpc_channel: V1RpcChannel,
|
|
277
|
+
web_api: UserWebApiClient,
|
|
270
278
|
cache: Cache,
|
|
271
279
|
map_parser_config: MapParserConfig | None = None,
|
|
272
280
|
) -> PropertiesApi:
|
|
@@ -278,6 +286,7 @@ def create(
|
|
|
278
286
|
rpc_channel,
|
|
279
287
|
mqtt_rpc_channel,
|
|
280
288
|
map_rpc_channel,
|
|
289
|
+
web_api,
|
|
281
290
|
cache,
|
|
282
291
|
map_parser_config,
|
|
283
292
|
)
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"""Routines trait for V1 devices."""
|
|
2
|
+
|
|
3
|
+
from roborock.data.containers import HomeDataScene
|
|
4
|
+
from roborock.web_api import UserWebApiClient
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class RoutinesTrait:
|
|
8
|
+
"""Trait for interacting with routines."""
|
|
9
|
+
|
|
10
|
+
def __init__(self, device_id: str, web_api: UserWebApiClient) -> None:
|
|
11
|
+
"""Initialize the routines trait."""
|
|
12
|
+
self._device_id = device_id
|
|
13
|
+
self._web_api = web_api
|
|
14
|
+
|
|
15
|
+
async def get_routines(self) -> list[HomeDataScene]:
|
|
16
|
+
"""Get available routines."""
|
|
17
|
+
return await self._web_api.get_routines(self._device_id)
|
|
18
|
+
|
|
19
|
+
async def execute_routine(self, routine_id: int) -> None:
|
|
20
|
+
"""Execute a routine by its ID.
|
|
21
|
+
|
|
22
|
+
Technically, routines are per-device, but the API does not
|
|
23
|
+
require the device ID to execute them. This can execute a
|
|
24
|
+
routine for any device but it is exposed here for convenience.
|
|
25
|
+
"""
|
|
26
|
+
await self._web_api.execute_routine(routine_id)
|
|
@@ -725,3 +725,11 @@ class UserWebApiClient:
|
|
|
725
725
|
async def get_home_data(self) -> HomeData:
|
|
726
726
|
"""Fetch home data using the API client."""
|
|
727
727
|
return await self._web_api.get_home_data_v3(self._user_data)
|
|
728
|
+
|
|
729
|
+
async def get_routines(self, device_id: str) -> list[HomeDataScene]:
|
|
730
|
+
"""Fetch routines (scenes) for a specific device."""
|
|
731
|
+
return await self._web_api.get_scenes(self._user_data, device_id)
|
|
732
|
+
|
|
733
|
+
async def execute_routine(self, scene_id: int) -> None:
|
|
734
|
+
"""Execute a specific routine (scene) by its ID."""
|
|
735
|
+
await self._web_api.execute_scene(self._user_data, scene_id)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/data/b01_q10/b01_q10_code_mappings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/data/b01_q7/b01_q7_code_mappings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/traits/v1/device_features.py
RENAMED
|
File without changes
|
{python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/traits/v1/do_not_disturb.py
RENAMED
|
File without changes
|
{python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/traits/v1/dust_collection_mode.py
RENAMED
|
File without changes
|
{python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/traits/v1/flow_led_status.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/traits/v1/smart_wash_params.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/devices/traits/v1/wash_towel_mode.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/version_1_apis/roborock_client_v1.py
RENAMED
|
File without changes
|
{python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/version_1_apis/roborock_local_client_v1.py
RENAMED
|
File without changes
|
{python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/version_1_apis/roborock_mqtt_client_v1.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_roborock-3.6.0 → python_roborock-3.7.0}/roborock/version_a01_apis/roborock_client_a01.py
RENAMED
|
File without changes
|
|
File without changes
|