@@ -14,7 +14,7 @@ class CleanSummaryTrait(CleanSummaryWithDetail, common.V1TraitMixin):
1414
1515 command = RoborockCommand .GET_CLEAN_SUMMARY
1616
17- async def refresh (self ) -> Self :
17+ async def refresh (self ) -> None :
1818 """Refresh the clean summary data and last clean record.
1919
2020 Assumes that the clean summary has already been fetched.
@@ -23,10 +23,9 @@ async def refresh(self) -> Self:
2323 if not self .records :
2424 _LOGGER .debug ("No clean records available in clean summary." )
2525 self .last_clean_record = None
26- return self
26+ return
2727 last_record_id = self .records [- 1 ]
2828 self .last_clean_record = await self .get_clean_record (last_record_id )
29- return self
3029
3130 @classmethod
3231 def _parse_type_response (cls , response : common .V1ResponseData ) -> Self :
@@ -61,23 +60,15 @@ def _parse_clean_record_response(cls, response: common.V1ResponseData) -> CleanR
6160 if isinstance (response [- 1 ], dict ):
6261 records = [CleanRecord .from_dict (rec ) for rec in response ]
6362 final_record = records [- 1 ]
64- try :
65- # This code is semi-presumptuous - so it is put in a try finally to be safe.
66- final_record .begin = records [0 ].begin
67- final_record .begin_datetime = records [0 ].begin_datetime
68- final_record .start_type = records [0 ].start_type
69- for rec in records [0 :- 1 ]:
70- final_record .duration = (final_record .duration or 0 ) + (rec .duration or 0 )
71- final_record .area = (final_record .area or 0 ) + (rec .area or 0 )
72- final_record .avoid_count = (final_record .avoid_count or 0 ) + (rec .avoid_count or 0 )
73- final_record .wash_count = (final_record .wash_count or 0 ) + (rec .wash_count or 0 )
74- final_record .square_meter_area = (final_record .square_meter_area or 0 ) + (
75- rec .square_meter_area or 0
76- )
77- return final_record
78- except Exception :
79- # Return final record when an exception occurred
80- return final_record
63+ # Aggregate basic stats from prior partial records (exclude last which is full)
64+ final_record .begin = records [0 ].begin
65+ final_record .start_type = records [0 ].start_type
66+ for rec in records [0 :- 1 ]:
67+ final_record .duration = (final_record .duration or 0 ) + (rec .duration or 0 )
68+ final_record .area = (final_record .area or 0 ) + (rec .area or 0 )
69+ final_record .avoid_count = (final_record .avoid_count or 0 ) + (rec .avoid_count or 0 )
70+ final_record .wash_count = (final_record .wash_count or 0 ) + (rec .wash_count or 0 )
71+ return final_record
8172 # There are still a few unknown variables in this.
8273 begin , end , duration , area = unpack_list (response , 4 )
8374 return CleanRecord (begin = begin , end = end , duration = duration , area = area )
0 commit comments