Skip to content

Commit 6853854

Browse files
committed
feat: add some extra status attributes
1 parent 279283d commit 6853854

File tree

2 files changed

+48
-1
lines changed

2 files changed

+48
-1
lines changed

roborock/containers.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,11 @@ class Status(RoborockBase):
399399
fan_power_options: list[str] = field(default_factory=list)
400400
fan_power_name: str | None = None
401401
mop_mode_name: str | None = None
402+
last_clean_t: int | None = None
403+
replenish_mode: int | None = None
404+
repeat: int | None = None
405+
kct: int | None = None
406+
subdivision_sets: int | None = None
402407

403408
def __post_init__(self) -> None:
404409
self.square_meter_clean_area = round(self.clean_area / 1000000, 1) if self.clean_area is not None else None
@@ -438,6 +443,48 @@ def current_map(self) -> int | None:
438443
return map_flag
439444
return None
440445

446+
@property
447+
def clear_water_box_status(self) -> int | None:
448+
if self.dss:
449+
return (self.dss >> 2) & 3
450+
return None
451+
452+
@property
453+
def dirty_water_box_status(self) -> int | None:
454+
if self.dss:
455+
return (self.dss >> 4) & 3
456+
return None
457+
458+
@property
459+
def dust_bag_status(self) -> int | None:
460+
if self.dss:
461+
return (self.dss >> 6) & 3
462+
return None
463+
464+
@property
465+
def water_box_filter_status(self) -> int | None:
466+
if self.dss:
467+
return (self.dss >> 8) & 3
468+
return None
469+
470+
@property
471+
def clean_fluid_status(self) -> int | None:
472+
if self.dss:
473+
return (self.dss >> 10) & 3
474+
return None
475+
476+
@property
477+
def hatch_door_status(self) -> int | None:
478+
if self.dss:
479+
return (self.dss >> 12) & 7
480+
return None
481+
482+
@property
483+
def dock_cool_fan_status(self) -> int | None:
484+
if self.dss:
485+
return (self.dss >> 15) & 3
486+
return None
487+
441488

442489
@dataclass
443490
class S4MaxStatus(Status):

tests/devices/__snapshots__/test_v1_device.ambr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# serializer version: 1
22
# name: test_device_trait_command_parsing[payload0-<lambda>]
3-
StatusTrait(msg_ver=2, msg_seq=515, state=<RoborockStateCode.charging: 8>, battery=100, clean_time=5405, clean_area=91287500, square_meter_clean_area=91.3, error_code=<RoborockErrorCode.none: 0>, map_present=1, in_cleaning=<RoborockInCleaning.complete: 0>, in_returning=0, in_fresh_state=1, lab_status=1, water_box_status=0, back_type=None, wash_phase=None, wash_ready=None, fan_power=<RoborockFanSpeedS7MaxV.custom: 106>, dnd_enabled=1, map_status=3, is_locating=0, lock_status=0, water_box_mode=<RoborockMopIntensityS7.custom: 204>, water_box_carriage_status=0, mop_forbidden_enable=0, camera_status=None, is_exploring=None, home_sec_status=None, home_sec_enable_password=None, adbumper_status=None, water_shortage_status=None, dock_type=None, dust_collection_status=None, auto_dust_collection=None, avoid_count=None, mop_mode=None, debug_mode=None, collision_avoid_status=None, switch_map_mode=None, dock_error_status=None, charge_status=None, unsave_map_reason=4, unsave_map_flag=0, wash_status=None, distance_off=0, in_warmup=None, dry_status=None, rdt=None, clean_percent=None, rss=None, dss=None, common_status=None, corner_clean_mode=None, error_code_name='none', state_name='charging', water_box_mode_name='custom', fan_power_options=['off', 'quiet', 'balanced', 'turbo', 'max', 'custom', 'max_plus'], fan_power_name='custom', mop_mode_name=None)
3+
StatusTrait(msg_ver=2, msg_seq=515, state=<RoborockStateCode.charging: 8>, battery=100, clean_time=5405, clean_area=91287500, square_meter_clean_area=91.3, error_code=<RoborockErrorCode.none: 0>, map_present=1, in_cleaning=<RoborockInCleaning.complete: 0>, in_returning=0, in_fresh_state=1, lab_status=1, water_box_status=0, back_type=None, wash_phase=None, wash_ready=None, fan_power=<RoborockFanSpeedS7MaxV.custom: 106>, dnd_enabled=1, map_status=3, is_locating=0, lock_status=0, water_box_mode=<RoborockMopIntensityS7.custom: 204>, water_box_carriage_status=0, mop_forbidden_enable=0, camera_status=None, is_exploring=None, home_sec_status=None, home_sec_enable_password=None, adbumper_status=None, water_shortage_status=None, dock_type=None, dust_collection_status=None, auto_dust_collection=None, avoid_count=None, mop_mode=None, debug_mode=None, collision_avoid_status=None, switch_map_mode=None, dock_error_status=None, charge_status=None, unsave_map_reason=4, unsave_map_flag=0, wash_status=None, distance_off=0, in_warmup=None, dry_status=None, rdt=None, clean_percent=None, rss=None, dss=None, common_status=None, corner_clean_mode=None, error_code_name='none', state_name='charging', water_box_mode_name='custom', fan_power_options=['off', 'quiet', 'balanced', 'turbo', 'max', 'custom', 'max_plus'], fan_power_name='custom', mop_mode_name=None, last_clean_t=None, replenish_mode=None, repeat=None, kct=None, subdivision_sets=None)
44
# ---
55
# name: test_device_trait_command_parsing[payload1-<lambda>]
66
DoNotDisturbTrait(start_hour=22, start_minute=0, end_hour=8, end_minute=0, enabled=1)

0 commit comments

Comments
 (0)