python-roborock 3.14.1__tar.gz → 3.14.2__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 (98) hide show
  1. {python_roborock-3.14.1 → python_roborock-3.14.2}/PKG-INFO +1 -1
  2. {python_roborock-3.14.1 → python_roborock-3.14.2}/pyproject.toml +1 -1
  3. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/data/containers.py +8 -0
  4. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/device.py +0 -1
  5. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/device_manager.py +2 -1
  6. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/local_channel.py +0 -1
  7. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/v1_channel.py +1 -1
  8. {python_roborock-3.14.1 → python_roborock-3.14.2}/.gitignore +0 -0
  9. {python_roborock-3.14.1 → python_roborock-3.14.2}/LICENSE +0 -0
  10. {python_roborock-3.14.1 → python_roborock-3.14.2}/README.md +0 -0
  11. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/__init__.py +0 -0
  12. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/api.py +0 -0
  13. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/broadcast_protocol.py +0 -0
  14. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/callbacks.py +0 -0
  15. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/cli.py +0 -0
  16. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/cloud_api.py +0 -0
  17. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/command_cache.py +0 -0
  18. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/const.py +0 -0
  19. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/data/__init__.py +0 -0
  20. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/data/b01_q10/__init__.py +0 -0
  21. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/data/b01_q10/b01_q10_code_mappings.py +0 -0
  22. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/data/b01_q10/b01_q10_containers.py +0 -0
  23. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/data/b01_q7/__init__.py +0 -0
  24. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/data/b01_q7/b01_q7_code_mappings.py +0 -0
  25. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/data/b01_q7/b01_q7_containers.py +0 -0
  26. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/data/code_mappings.py +0 -0
  27. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/data/dyad/__init__.py +0 -0
  28. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/data/dyad/dyad_code_mappings.py +0 -0
  29. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/data/dyad/dyad_containers.py +0 -0
  30. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/data/v1/__init__.py +0 -0
  31. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/data/v1/v1_clean_modes.py +0 -0
  32. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/data/v1/v1_code_mappings.py +0 -0
  33. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/data/v1/v1_containers.py +0 -0
  34. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/data/zeo/__init__.py +0 -0
  35. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/data/zeo/zeo_code_mappings.py +0 -0
  36. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/data/zeo/zeo_containers.py +0 -0
  37. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/device_features.py +0 -0
  38. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/README.md +0 -0
  39. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/__init__.py +0 -0
  40. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/a01_channel.py +0 -0
  41. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/b01_channel.py +0 -0
  42. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/cache.py +0 -0
  43. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/channel.py +0 -0
  44. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/file_cache.py +0 -0
  45. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/mqtt_channel.py +0 -0
  46. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/traits/__init__.py +0 -0
  47. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/traits/a01/__init__.py +0 -0
  48. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/traits/b01/__init__.py +0 -0
  49. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/traits/b01/q10/__init__.py +0 -0
  50. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/traits/b01/q7/__init__.py +0 -0
  51. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/traits/traits_mixin.py +0 -0
  52. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/traits/v1/__init__.py +0 -0
  53. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/traits/v1/child_lock.py +0 -0
  54. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/traits/v1/clean_summary.py +0 -0
  55. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/traits/v1/command.py +0 -0
  56. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/traits/v1/common.py +0 -0
  57. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/traits/v1/consumeable.py +0 -0
  58. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/traits/v1/device_features.py +0 -0
  59. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/traits/v1/do_not_disturb.py +0 -0
  60. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/traits/v1/dust_collection_mode.py +0 -0
  61. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/traits/v1/flow_led_status.py +0 -0
  62. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/traits/v1/home.py +0 -0
  63. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/traits/v1/led_status.py +0 -0
  64. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/traits/v1/map_content.py +0 -0
  65. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/traits/v1/maps.py +0 -0
  66. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/traits/v1/network_info.py +0 -0
  67. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/traits/v1/rooms.py +0 -0
  68. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/traits/v1/routines.py +0 -0
  69. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/traits/v1/smart_wash_params.py +0 -0
  70. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/traits/v1/status.py +0 -0
  71. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/traits/v1/valley_electricity_timer.py +0 -0
  72. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/traits/v1/volume.py +0 -0
  73. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/devices/traits/v1/wash_towel_mode.py +0 -0
  74. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/exceptions.py +0 -0
  75. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/map/__init__.py +0 -0
  76. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/map/map_parser.py +0 -0
  77. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/mqtt/__init__.py +0 -0
  78. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/mqtt/health_manager.py +0 -0
  79. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/mqtt/roborock_session.py +0 -0
  80. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/mqtt/session.py +0 -0
  81. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/protocol.py +0 -0
  82. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/protocols/__init__.py +0 -0
  83. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/protocols/a01_protocol.py +0 -0
  84. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/protocols/b01_protocol.py +0 -0
  85. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/protocols/v1_protocol.py +0 -0
  86. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/py.typed +0 -0
  87. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/roborock_future.py +0 -0
  88. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/roborock_message.py +0 -0
  89. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/roborock_typing.py +0 -0
  90. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/util.py +0 -0
  91. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/version_1_apis/__init__.py +0 -0
  92. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/version_1_apis/roborock_client_v1.py +0 -0
  93. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/version_1_apis/roborock_local_client_v1.py +0 -0
  94. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/version_1_apis/roborock_mqtt_client_v1.py +0 -0
  95. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/version_a01_apis/__init__.py +0 -0
  96. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/version_a01_apis/roborock_client_a01.py +0 -0
  97. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/version_a01_apis/roborock_mqtt_client_a01.py +0 -0
  98. {python_roborock-3.14.1 → python_roborock-3.14.2}/roborock/web_api.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-roborock
3
- Version: 3.14.1
3
+ Version: 3.14.2
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.14.1"
3
+ version = "3.14.2"
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"
@@ -228,6 +228,10 @@ class HomeDataProduct(RoborockBase):
228
228
  def product_nickname(self) -> RoborockProductNickname:
229
229
  return SHORT_MODEL_TO_ENUM.get(self.model.split(".")[-1], RoborockProductNickname.PEARLPLUS)
230
230
 
231
+ def summary_info(self) -> str:
232
+ """Return a string with key product information for logging purposes."""
233
+ return f"{self.name} (model={self.model}, category={self.category})"
234
+
231
235
 
232
236
  @dataclass
233
237
  class HomeDataDevice(RoborockBase):
@@ -263,6 +267,10 @@ class HomeDataDevice(RoborockBase):
263
267
  share_type: Any | None = None
264
268
  share_expired_time: int | None = None
265
269
 
270
+ def summary_info(self) -> str:
271
+ """Return a string with key device information for logging purposes."""
272
+ return f"{self.name} (pv={self.pv}, fv={self.fv}, online={self.online})"
273
+
266
274
 
267
275
  @dataclass
268
276
  class HomeDataRoom(RoborockBase):
@@ -183,7 +183,6 @@ class RoborockDevice(ABC, TraitsMixin):
183
183
  if self._unsub:
184
184
  raise ValueError("Already connected to the device")
185
185
  unsub = await self._channel.subscribe(self._on_message)
186
- self._logger.info("Connecting to device")
187
186
  if self.v1_properties is not None:
188
187
  try:
189
188
  await self.v1_properties.discover_features()
@@ -78,12 +78,13 @@ class DeviceManager:
78
78
  home_data = cache_data.home_data
79
79
 
80
80
  device_products = home_data.device_products
81
- _LOGGER.debug("Discovered %d devices %s", len(device_products), home_data)
81
+ _LOGGER.debug("Discovered %d devices", len(device_products))
82
82
 
83
83
  # These are connected serially to avoid overwhelming the MQTT broker
84
84
  new_devices = {}
85
85
  start_tasks = []
86
86
  for duid, (device, product) in device_products.items():
87
+ _LOGGER.debug("[%s] Discovered device %s %s", duid, product.summary_info(), device.summary_info())
87
88
  if duid in self._devices:
88
89
  continue
89
90
  new_device = self._device_creator(home_data, device, product)
@@ -179,7 +179,6 @@ class LocalChannel(Channel):
179
179
  if self._is_connected:
180
180
  self._logger.debug("Unexpected call to connect when already connected")
181
181
  return
182
- self._logger.debug("Connecting to %s:%s", self._host, _PORT)
183
182
  loop = asyncio.get_running_loop()
184
183
  protocol = _LocalProtocol(self._data_received, self._connection_lost)
185
184
  try:
@@ -373,7 +373,7 @@ class V1Channel(Channel):
373
373
  # Wire up the new channel
374
374
  self._local_channel = local_channel
375
375
  self._local_unsub = await self._local_channel.subscribe(self._on_local_message)
376
- _LOGGER.info("Successfully connected to local device %s", self._device_uid)
376
+ self._logger.info("Connected to local channel successfully")
377
377
 
378
378
  async def _background_reconnect(self) -> None:
379
379
  """Task to run in the background to manage the local connection."""