python-roborock 2.12.2__tar.gz → 2.13.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.12.2 → python_roborock-2.13.0}/PKG-INFO +1 -1
  2. {python_roborock-2.12.2 → python_roborock-2.13.0}/pyproject.toml +1 -1
  3. {python_roborock-2.12.2 → python_roborock-2.13.0}/roborock/containers.py +1 -1
  4. {python_roborock-2.12.2 → python_roborock-2.13.0}/roborock/web_api.py +21 -1
  5. {python_roborock-2.12.2 → python_roborock-2.13.0}/LICENSE +0 -0
  6. {python_roborock-2.12.2 → python_roborock-2.13.0}/README.md +0 -0
  7. {python_roborock-2.12.2 → python_roborock-2.13.0}/roborock/__init__.py +0 -0
  8. {python_roborock-2.12.2 → python_roborock-2.13.0}/roborock/api.py +0 -0
  9. {python_roborock-2.12.2 → python_roborock-2.13.0}/roborock/cli.py +0 -0
  10. {python_roborock-2.12.2 → python_roborock-2.13.0}/roborock/cloud_api.py +0 -0
  11. {python_roborock-2.12.2 → python_roborock-2.13.0}/roborock/code_mappings.py +0 -0
  12. {python_roborock-2.12.2 → python_roborock-2.13.0}/roborock/command_cache.py +0 -0
  13. {python_roborock-2.12.2 → python_roborock-2.13.0}/roborock/const.py +0 -0
  14. {python_roborock-2.12.2 → python_roborock-2.13.0}/roborock/exceptions.py +0 -0
  15. {python_roborock-2.12.2 → python_roborock-2.13.0}/roborock/local_api.py +0 -0
  16. {python_roborock-2.12.2 → python_roborock-2.13.0}/roborock/protocol.py +0 -0
  17. {python_roborock-2.12.2 → python_roborock-2.13.0}/roborock/py.typed +0 -0
  18. {python_roborock-2.12.2 → python_roborock-2.13.0}/roborock/roborock_future.py +0 -0
  19. {python_roborock-2.12.2 → python_roborock-2.13.0}/roborock/roborock_message.py +0 -0
  20. {python_roborock-2.12.2 → python_roborock-2.13.0}/roborock/roborock_typing.py +0 -0
  21. {python_roborock-2.12.2 → python_roborock-2.13.0}/roborock/util.py +0 -0
  22. {python_roborock-2.12.2 → python_roborock-2.13.0}/roborock/version_1_apis/__init__.py +0 -0
  23. {python_roborock-2.12.2 → python_roborock-2.13.0}/roborock/version_1_apis/roborock_client_v1.py +0 -0
  24. {python_roborock-2.12.2 → python_roborock-2.13.0}/roborock/version_1_apis/roborock_local_client_v1.py +0 -0
  25. {python_roborock-2.12.2 → python_roborock-2.13.0}/roborock/version_1_apis/roborock_mqtt_client_v1.py +0 -0
  26. {python_roborock-2.12.2 → python_roborock-2.13.0}/roborock/version_a01_apis/__init__.py +0 -0
  27. {python_roborock-2.12.2 → python_roborock-2.13.0}/roborock/version_a01_apis/roborock_client_a01.py +0 -0
  28. {python_roborock-2.12.2 → python_roborock-2.13.0}/roborock/version_a01_apis/roborock_mqtt_client_a01.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: python-roborock
3
- Version: 2.12.2
3
+ Version: 2.13.0
4
4
  Summary: A package to control Roborock vacuums.
5
5
  Home-page: https://github.com/humbertogontijo/python-roborock
6
6
  License: GPL-3.0-only
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "python-roborock"
3
- version = "2.12.2"
3
+ version = "2.13.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"
@@ -226,6 +226,7 @@ class RRiot(RoborockBase):
226
226
 
227
227
  @dataclass
228
228
  class UserData(RoborockBase):
229
+ rriot: RRiot
229
230
  uid: int | None = None
230
231
  tokentype: str | None = None
231
232
  token: str | None = None
@@ -234,7 +235,6 @@ class UserData(RoborockBase):
234
235
  countrycode: str | None = None
235
236
  country: str | None = None
236
237
  nickname: str | None = None
237
- rriot: RRiot | None = None
238
238
  tuya_device_state: int | None = None
239
239
  avatarurl: str | None = None
240
240
 
@@ -285,7 +285,7 @@ class RoborockApiClient:
285
285
  )
286
286
  raise RoborockException(f"{home_id_response.get('msg')} - response code: {home_id_response.get('code')}")
287
287
 
288
- return home_id_response["data"].get("rrHomeId")
288
+ return home_id_response["data"]["rrHomeId"]
289
289
 
290
290
  async def get_home_data(self, user_data: UserData) -> HomeData:
291
291
  rriot = user_data.rriot
@@ -332,6 +332,26 @@ class RoborockApiClient:
332
332
  else:
333
333
  raise RoborockException("home_response result was an unexpected type")
334
334
 
335
+ async def get_home_data_v3(self, user_data: UserData) -> HomeData:
336
+ """This is the same as get_home_data, but uses a different endpoint and includes non-robotic vacuums."""
337
+ rriot = user_data.rriot
338
+ home_id = await self._get_home_id(user_data)
339
+ if rriot.r.a is None:
340
+ raise RoborockException("Missing field 'a' in rriot reference")
341
+ home_request = PreparedRequest(
342
+ rriot.r.a,
343
+ {
344
+ "Authorization": self._get_hawk_authentication(rriot, "/v3/user/homes/" + home_id),
345
+ },
346
+ )
347
+ home_response = await home_request.request("get", "/v3/user/homes/" + home_id)
348
+ if not home_response.get("success"):
349
+ raise RoborockException(home_response)
350
+ home_data = home_response.get("result")
351
+ if isinstance(home_data, dict):
352
+ return HomeData.from_dict(home_data)
353
+ raise RoborockException(f"home_response result was an unexpected type: {home_data}")
354
+
335
355
  async def get_rooms(self, user_data: UserData, home_id: int | None = None) -> list[HomeDataRoom]:
336
356
  rriot = user_data.rriot
337
357
  if rriot is None: