diff --git a/homeassistant/components/roborock/binary_sensor.py b/homeassistant/components/roborock/binary_sensor.py index 57b16d4059c3..ca86acc60ddb 100644 --- a/homeassistant/components/roborock/binary_sensor.py +++ b/homeassistant/components/roborock/binary_sensor.py @@ -98,7 +98,9 @@ BINARY_SENSOR_DESCRIPTIONS = [ entity_category=EntityCategory.DIAGNOSTIC, value_fn=lambda data: data.status.dirty_water_box_status, is_dock_entity=True, - support_fn=lambda api: api.wash_towel_mode is not None, + support_fn=lambda api: api.device_features.is_field_supported( + StatusV2, StatusField.DIRTY_WATER_BOX_STATUS + ), ), RoborockBinarySensorDescription( key="clean_box_empty", @@ -107,7 +109,9 @@ BINARY_SENSOR_DESCRIPTIONS = [ entity_category=EntityCategory.DIAGNOSTIC, value_fn=lambda data: data.status.clear_water_box_status, is_dock_entity=True, - support_fn=lambda api: api.wash_towel_mode is not None, + support_fn=lambda api: api.device_features.is_field_supported( + StatusV2, StatusField.CLEAR_WATER_BOX_STATUS + ), ), RoborockBinarySensorDescription( key="clean_fluid_empty", @@ -120,9 +124,8 @@ BINARY_SENSOR_DESCRIPTIONS = [ else None ), is_dock_entity=True, - support_fn=lambda api: ( - api.wash_towel_mode is not None - and api.device_features.is_clean_fluid_delivery_supported + support_fn=lambda api: api.device_features.is_field_supported( + StatusV2, StatusField.CLEAN_FLUID_STATUS ), ), RoborockBinarySensorDescription( diff --git a/homeassistant/components/roborock/sensor.py b/homeassistant/components/roborock/sensor.py index 7cb45220f160..bd81c9e1f73e 100644 --- a/homeassistant/components/roborock/sensor.py +++ b/homeassistant/components/roborock/sensor.py @@ -19,6 +19,7 @@ from roborock.data import ( ZeoState, ) from roborock.data.b01_q10.b01_q10_code_mappings import YXDeviceState +from roborock.data.v1.v1_containers import StatusField, StatusV2 from roborock.devices.traits.b01.q10.status import StatusTrait as Q10StatusTrait from roborock.devices.traits.v1 import PropertiesApi from roborock.roborock_message import RoborockDyadDataProtocol, RoborockZeoProtocol @@ -259,9 +260,9 @@ SENSOR_DESCRIPTIONS = [ device_class=SensorDeviceClass.ENUM, options=RoborockDockErrorCode.keys(), is_dock_entity=True, - # Only available with more than just the basic dock. Dust collection - # mode is a proxy for any more complex dock type (e.g. Auto-empty). - support_fn=lambda api: api.dust_collection_mode is not None, + support_fn=lambda api: api.device_features.is_field_supported( + StatusV2, StatusField.DOCK_ERROR_STATUS + ), ), RoborockSensorDescription( key="mop_clean_remaining", diff --git a/tests/components/roborock/conftest.py b/tests/components/roborock/conftest.py index e1e368a37321..eeba7787c346 100644 --- a/tests/components/roborock/conftest.py +++ b/tests/components/roborock/conftest.py @@ -357,7 +357,6 @@ def make_device_features() -> Mock: device_features = MagicMock(spec=DeviceFeaturesTrait) device_features.is_supported_drying = True device_features.is_support_water_mode = True - device_features.is_clean_fluid_delivery_supported = True device_features.is_support_clean_estimate = True device_features.is_clean_route_setting_supported = True device_features.is_field_supported.return_value = True