diff --git a/roborock/data/v1/v1_code_mappings.py b/roborock/data/v1/v1_code_mappings.py index 7ceea598..d2a9b24d 100644 --- a/roborock/data/v1/v1_code_mappings.py +++ b/roborock/data/v1/v1_code_mappings.py @@ -675,6 +675,7 @@ class RoborockDockTypeCode(RoborockEnum): type_27_dock = 27 k1c_lite_dock = 28 shell_2e_lite_dock = 30 + shell_2e_heat_dock = 40 class RoborockDockDustCollectionModeCode(RoborockEnum): diff --git a/roborock/device_features.py b/roborock/device_features.py index c3db8316..b2a3e34f 100644 --- a/roborock/device_features.py +++ b/roborock/device_features.py @@ -674,6 +674,7 @@ def get_supported_features(self) -> list[str]: _CLEAN_FLUID_AUTO_DELIVERY_DOCK_TYPES = { RoborockDockTypeCode.o4_dock, + RoborockDockTypeCode.o5_dock, RoborockDockTypeCode.pearl_plus_dock, RoborockDockTypeCode.shell_3s_dock, RoborockDockTypeCode.o6_dock, @@ -681,7 +682,6 @@ def get_supported_features(self) -> list[str]: } _CLEAN_FLUID_AUTO_DELIVERY_AM_DOCK_TYPES = { - RoborockDockTypeCode.o5_dock, RoborockDockTypeCode.shell_2s_dock, RoborockDockTypeCode.shell_3_dock, RoborockDockTypeCode.shell_2c_dock, @@ -734,9 +734,11 @@ def get_supported_features(self) -> list[str]: RoborockDockTypeCode.shell_2c_dock, RoborockDockTypeCode.shell_3s_dock, RoborockDockTypeCode.k1_dock, + RoborockDockTypeCode.k1s_dock, RoborockDockTypeCode.o6_dock, RoborockDockTypeCode.shell_e_dock, RoborockDockTypeCode.shell_2e_dock, + RoborockDockTypeCode.shell_3c_dock, } _HATCH_DOOR_DOCK_COOL_FAN_DOCK_TYPES = { diff --git a/tests/test_supported_features.py b/tests/test_supported_features.py index e72d2e2e..0a6ac060 100644 --- a/tests/test_supported_features.py +++ b/tests/test_supported_features.py @@ -109,6 +109,7 @@ def test_new_feature_str_missing(): (RoborockDockTypeCode.type_27_dock, True, True), (RoborockDockTypeCode.k1c_lite_dock, True, True), (RoborockDockTypeCode.shell_2e_lite_dock, True, True), + (RoborockDockTypeCode.shell_2e_heat_dock, True, True), ], ) def test_dock_features(dock_type: RoborockDockTypeCode, is_collectable: bool, is_washable: bool) -> None: @@ -128,6 +129,12 @@ def test_dock_feature_flags_from_rr_api() -> None: assert RoborockDockFeatures.from_dock_type(RoborockDockTypeCode.o4_dock).is_clean_fluid_auto_delivery_supported assert RoborockDockFeatures.from_dock_type(RoborockDockTypeCode.couple_dock).is_hatch_door_dock_cool_fan_supported assert RoborockDockFeatures.from_dock_type(RoborockDockTypeCode.shell_2e_lite_dock).is_special_support_wash_temp + assert not RoborockDockFeatures.from_dock_type( + RoborockDockTypeCode.shell_2e_heat_dock + ).is_clean_fluid_auto_delivery_supported + assert not RoborockDockFeatures.from_dock_type( + RoborockDockTypeCode.shell_2e_heat_dock + ).is_water_updown_drain_supported def test_dock_feature_flags_with_am_variants_from_rr_api() -> None: @@ -138,6 +145,10 @@ def test_dock_feature_flags_with_am_variants_from_rr_api() -> None: assert RoborockDockFeatures.from_dock_type( RoborockDockTypeCode.shell_3_dock, has_am=True ).is_clean_fluid_auto_delivery_supported + assert RoborockDockFeatures.from_dock_type(RoborockDockTypeCode.o5_dock).is_clean_fluid_auto_delivery_supported + assert RoborockDockFeatures.from_dock_type( + RoborockDockTypeCode.o5_dock, has_am=True + ).is_clean_fluid_auto_delivery_supported assert RoborockDockFeatures.from_dock_type(RoborockDockTypeCode.shell_3_dock).is_clean_carousel_self_clean_supported assert not RoborockDockFeatures.from_dock_type( @@ -148,6 +159,12 @@ def test_dock_feature_flags_with_am_variants_from_rr_api() -> None: assert RoborockDockFeatures.from_dock_type( RoborockDockTypeCode.o5_dock, has_am=True ).is_water_updown_drain_supported + assert RoborockDockFeatures.from_dock_type( + RoborockDockTypeCode.k1s_dock, has_am=True + ).is_water_updown_drain_supported + assert RoborockDockFeatures.from_dock_type( + RoborockDockTypeCode.shell_3c_dock, has_am=True + ).is_water_updown_drain_supported @pytest.mark.parametrize(