python-roborock 2.2.1__py3-none-any.whl → 2.2.3__py3-none-any.whl

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: python-roborock
3
- Version: 2.2.1
3
+ Version: 2.2.3
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
@@ -2,7 +2,7 @@ roborock/__init__.py,sha256=AqfxNGj4wILqL7dooJyQQd6w7o2EW02fMAF51wT9VK8,165
2
2
  roborock/api.py,sha256=jI5jbBZf47HHEI8j_JM_00DqrhrgbmlA6FivPCgFajc,4123
3
3
  roborock/cli.py,sha256=l4dOt9HZ4TZOZNp_btsNCZEDUihM94Dz173KPtUYdm4,6826
4
4
  roborock/cloud_api.py,sha256=8p_iRfXRstBW5KfdxFtya41VJjeRXbdwfpASXIqASqM,7144
5
- roborock/code_mappings.py,sha256=O2TDyMXZdpR7-cCPBWAD2ltGT7oFmn_yzwcXNgguzCQ,14415
5
+ roborock/code_mappings.py,sha256=cg9H8Kdx5uRZMHcFUAoiv42o1dQ5rPYh3VQUE0ZRHww,14429
6
6
  roborock/command_cache.py,sha256=E8e7EYzYFZEmw_cIfhPYZXNpBuSJbIAT9KXnE-e5NPg,7912
7
7
  roborock/const.py,sha256=p2d52jaX7ZSNFSoLgq2nZVKP0qxnoONSm7y2eaQFqbM,2386
8
8
  roborock/containers.py,sha256=s9IXGYNlX9WwmkSUZZzkOPMlgy1Z5juHaB9S8heXXoY,27991
@@ -15,15 +15,15 @@ roborock/roborock_message.py,sha256=2-boInkxHLD4dZxRFslfoqyIy5XalTlJsSdxNQbvUBg,
15
15
  roborock/roborock_typing.py,sha256=3guzjcgwbwmz-COZyCBY6UAtLh7Br56GCFYL2L08ot0,23536
16
16
  roborock/util.py,sha256=kXIWW5EWs7w_7u26jPjBmeZUM_WR9bD8A2-qWL5baTQ,3465
17
17
  roborock/version_1_apis/__init__.py,sha256=BDAkBZPOtpyYUPUa6VaZd7Aaza1hbvM2fIzsjIGD9Vc,183
18
- roborock/version_1_apis/roborock_client_v1.py,sha256=hvbGIMCyISUcOndn-H4W-U2hJTq7AVr_MBmr3v5AKVA,20099
18
+ roborock/version_1_apis/roborock_client_v1.py,sha256=OaKQjHy_ZYdSh360D7MUgzjvw2yD0xqpEIYxyYCGovM,21307
19
19
  roborock/version_1_apis/roborock_local_client_v1.py,sha256=tPou8JnUEIKbUZcmUA7RRLycCSEjg0JFaZNdNLU6nmE,3477
20
20
  roborock/version_1_apis/roborock_mqtt_client_v1.py,sha256=5MhgmosZu-ujj3fuKr6QAN-H5LtF_OIwM-t-Zsd0J_w,3358
21
21
  roborock/version_a01_apis/__init__.py,sha256=i_WTIX0LUCG93YX3RraNaQYNYBMY-xJI7ncWMdUFQVs,111
22
22
  roborock/version_a01_apis/roborock_client_a01.py,sha256=ISXMQ7pFoohoHG2mmukdZx6J7S2sgYvvInpJGqtKGL8,7424
23
23
  roborock/version_a01_apis/roborock_mqtt_client_a01.py,sha256=fiy2LdCVYwAXo70QN5vwOM8abEHTGACmaLzaEiB8rmk,3043
24
24
  roborock/web_api.py,sha256=p3hNVVJ7QYFjcYc1wTrJs4EtE83tDThbQHSJFWanWN4,13040
25
- python_roborock-2.2.1.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
26
- python_roborock-2.2.1.dist-info/METADATA,sha256=YBN1jbDYz5iQARy6-NvbOh1aDjgl5jCJc9Mcp24PjT0,2598
27
- python_roborock-2.2.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
28
- python_roborock-2.2.1.dist-info/entry_points.txt,sha256=3V_nm8VDR5Wg8m9QlRy9R4olW2lC--6JrDjZJpQpDNI,46
29
- python_roborock-2.2.1.dist-info/RECORD,,
25
+ python_roborock-2.2.3.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
26
+ python_roborock-2.2.3.dist-info/METADATA,sha256=bOrcoR71WdYF9tt_-OGAw1bqsAw96R5Icd6uwHj1WGY,2598
27
+ python_roborock-2.2.3.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
28
+ python_roborock-2.2.3.dist-info/entry_points.txt,sha256=3V_nm8VDR5Wg8m9QlRy9R4olW2lC--6JrDjZJpQpDNI,46
29
+ python_roborock-2.2.3.dist-info/RECORD,,
roborock/code_mappings.py CHANGED
@@ -324,6 +324,7 @@ class RoborockMopIntensityS8MaxVUltra(RoborockMopIntensityCode):
324
324
  low = 201
325
325
  medium = 202
326
326
  high = 203
327
+ max = 208
327
328
  smart_mode = 209
328
329
  custom_water_flow = 207
329
330
 
@@ -65,6 +65,7 @@ WASH_N_FILL_DOCK = [
65
65
  RoborockDockTypeCode.empty_wash_fill_dock,
66
66
  RoborockDockTypeCode.s8_dock,
67
67
  RoborockDockTypeCode.p10_dock,
68
+ RoborockDockTypeCode.s8_maxv_ultra_dock,
68
69
  ]
69
70
  RT = TypeVar("RT", bound=RoborockBase)
70
71
  EVICT_TIME = 60
@@ -197,6 +198,24 @@ class RoborockClientV1(RoborockClient):
197
198
  if isinstance(record, dict):
198
199
  return CleanRecord.from_dict(record)
199
200
  elif isinstance(record, list):
201
+ if isinstance(record[-1], dict):
202
+ records = [CleanRecord.from_dict(rec) for rec in record]
203
+ final_record = records[-1]
204
+ try:
205
+ # This code is semi-presumptions - so it is put in a try finally to be safe.
206
+ final_record.begin = records[0].begin
207
+ final_record.begin_datetime = records[0].begin_datetime
208
+ final_record.start_type = records[0].start_type
209
+ for rec in records[0:-1]:
210
+ final_record.duration += rec.duration if rec.duration is not None else 0
211
+ final_record.area += rec.area if rec.area is not None else 0
212
+ final_record.avoid_count += rec.avoid_count if rec.avoid_count is not None else 0
213
+ final_record.wash_count += rec.wash_count if rec.wash_count is not None else 0
214
+ final_record.square_meter_area += (
215
+ rec.square_meter_area if rec.square_meter_area is not None else 0
216
+ )
217
+ finally:
218
+ return final_record
200
219
  # There are still a few unknown variables in this.
201
220
  begin, end, duration, area = unpack_list(record, 4)
202
221
  return CleanRecord(begin=begin, end=end, duration=duration, area=area)
@@ -277,7 +296,7 @@ class RoborockClientV1(RoborockClient):
277
296
  """Gets the mapping from segment id -> iot id. Only works on local api."""
278
297
  mapping: list = await self.send_command(RoborockCommand.GET_ROOM_MAPPING)
279
298
  if isinstance(mapping, list):
280
- if not isinstance(mapping[0], list) and len(mapping) == 2:
299
+ if len(mapping) == 2 and not isinstance(mapping[0], list):
281
300
  return [RoomMapping(segment_id=mapping[0], iot_id=mapping[1])]
282
301
  return [
283
302
  RoomMapping(segment_id=segment_id, iot_id=iot_id) # type: ignore