Skip to content

Commit 0ed8729

Browse files
committed
feat: update schema requirements in StatusV2
Update the StatusV2 to check the schema for supported fields.
1 parent 607ef97 commit 0ed8729

File tree

3 files changed

+15
-9
lines changed

3 files changed

+15
-9
lines changed

roborock/data/v1/v1_containers.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ class StatusField(FieldNameBase):
113113
WATER_BOX_MODE = "water_box_mode"
114114
CHARGE_STATUS = "charge_status"
115115
DRY_STATUS = "dry_status"
116+
ERROR_CODE = "error_code"
116117

117118

118119
def _requires_schema_code(requires_schema_code: str, default=None) -> Any:
@@ -293,11 +294,11 @@ class StatusV2(RoborockBase):
293294

294295
msg_ver: int | None = None
295296
msg_seq: int | None = None
296-
state: RoborockStateCode | None = None
297-
battery: int | None = None
297+
state: RoborockStateCode | None = field(metadata={"requires_schema_code": "state"}, default=None)
298+
battery: int | None = field(metadata={"requires_schema_code": "battery"}, default=None)
298299
clean_time: int | None = None
299300
clean_area: int | None = None
300-
error_code: RoborockErrorCode | None = None
301+
error_code: RoborockErrorCode | None = field(metadata={"requires_schema_code": "error_code"}, default=None)
301302
map_present: int | None = None
302303
in_cleaning: RoborockInCleaning | None = None
303304
in_returning: int | None = None
@@ -307,12 +308,12 @@ class StatusV2(RoborockBase):
307308
back_type: int | None = None
308309
wash_phase: int | None = None
309310
wash_ready: int | None = None
310-
fan_power: int | None = None
311+
fan_power: int | None = field(metadata={"requires_schema_code": "fan_power"}, default=None)
311312
dnd_enabled: int | None = None
312313
map_status: int | None = None
313314
is_locating: int | None = None
314315
lock_status: int | None = None
315-
water_box_mode: int | None = None
316+
water_box_mode: int | None = field(metadata={"requires_schema_code": "water_box_mode"}, default=None)
316317
water_box_carriage_status: int | None = None
317318
mop_forbidden_enable: int | None = None
318319
camera_status: int | None = None
@@ -330,13 +331,13 @@ class StatusV2(RoborockBase):
330331
collision_avoid_status: int | None = None
331332
switch_map_mode: int | None = None
332333
dock_error_status: RoborockDockErrorCode | None = None
333-
charge_status: int | None = None
334+
charge_status: int | None = field(metadata={"requires_schema_code": "charge_status"}, default=None)
334335
unsave_map_reason: int | None = None
335336
unsave_map_flag: int | None = None
336337
wash_status: int | None = None
337338
distance_off: int | None = None
338339
in_warmup: int | None = None
339-
dry_status: int | None = None
340+
dry_status: int | None = field(metadata={"requires_schema_code": "drying_status"}, default=None)
340341
rdt: int | None = None
341342
clean_percent: int | None = None
342343
rss: int | None = None

tests/devices/traits/v1/__snapshots__/test_device_features.ambr

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
'battery': True,
55
'charge_status': True,
66
'dry_status': True,
7+
'error_code': True,
78
'fan_power': True,
89
'state': True,
910
'water_box_mode': True,
@@ -14,6 +15,7 @@
1415
'battery': True,
1516
'charge_status': True,
1617
'dry_status': True,
18+
'error_code': True,
1719
'fan_power': True,
1820
'state': True,
1921
'water_box_mode': True,
@@ -24,6 +26,7 @@
2426
'battery': True,
2527
'charge_status': True,
2628
'dry_status': True,
29+
'error_code': True,
2730
'fan_power': True,
2831
'state': True,
2932
'water_box_mode': True,

tests/devices/traits/v1/test_device_features.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,7 @@ async def test_is_attribute_supported(
2929
assert device.v1_properties.device_features is not None
3030
device_features_trait = device.v1_properties.device_features
3131

32-
is_supported = {field.value: device_features_trait.is_field_supported(StatusTrait, field) for field in StatusField}
33-
assert is_supported == snapshot
32+
is_v1_supported = {
33+
field.value: device_features_trait.is_field_supported(StatusTrait, field) for field in StatusField
34+
}
35+
assert is_v1_supported == snapshot

0 commit comments

Comments
 (0)