@@ -539,6 +539,12 @@ class DeviceFeatures(RoborockBase):
539539 ]
540540 }
541541 )
542+ is_ai_recognition_setting_supported : bool = field (
543+ metadata = {"product_features" : [ProductFeatures .AIRECOGNITION_SETTING ]}
544+ )
545+ is_ai_recognition_obstacle_supported : bool = field (
546+ metadata = {"product_features" : [ProductFeatures .AIRECOGNITION_OBSTACLE ]}
547+ )
542548 is_pure_clean_mop_supported : bool = field (metadata = {"product_features" : [ProductFeatures .CLEANMODE_PURECLEANMOP ]})
543549 is_new_remote_view_supported : bool = field (metadata = {"product_features" : [ProductFeatures .REMOTE_BACK ]})
544550 is_max_plus_mode_supported : bool = field (metadata = {"product_features" : [ProductFeatures .CLEANMODE_MAXPLUS ]})
@@ -670,6 +676,8 @@ def get_supported_features(self) -> list[str]:
670676 RoborockDockTypeCode .o4_dock ,
671677 RoborockDockTypeCode .o5_dock ,
672678 RoborockDockTypeCode .o6_dock ,
679+ RoborockDockTypeCode .o7_dock ,
680+ RoborockDockTypeCode .o7h_dock ,
673681}
674682
675683_CLEAN_FLUID_AUTO_DELIVERY_DOCK_TYPES = {
@@ -679,6 +687,10 @@ def get_supported_features(self) -> list[str]:
679687 RoborockDockTypeCode .shell_3s_dock ,
680688 RoborockDockTypeCode .o6_dock ,
681689 RoborockDockTypeCode .couple_dock ,
690+ RoborockDockTypeCode .type_27_dock ,
691+ RoborockDockTypeCode .o7_dock ,
692+ RoborockDockTypeCode .f1s_dock ,
693+ RoborockDockTypeCode .o7h_dock ,
682694}
683695
684696_CLEAN_FLUID_AUTO_DELIVERY_AM_DOCK_TYPES = {
@@ -690,6 +702,7 @@ def get_supported_features(self) -> list[str]:
690702 RoborockDockTypeCode .shell_e_dock ,
691703 RoborockDockTypeCode .shell_2e_dock ,
692704 RoborockDockTypeCode .shell_3c_dock ,
705+ RoborockDockTypeCode .k1c_dock ,
693706}
694707
695708_AUTO_STERILIZE_DOCK_TYPES = {
@@ -719,6 +732,18 @@ def get_supported_features(self) -> list[str]:
719732 RoborockDockTypeCode .shell_3s_dock ,
720733 RoborockDockTypeCode .k1s_dock ,
721734 RoborockDockTypeCode .shell_3c_dock ,
735+ RoborockDockTypeCode .k1s_pro_dock ,
736+ RoborockDockTypeCode .type_27_dock ,
737+ RoborockDockTypeCode .k1r_dock ,
738+ RoborockDockTypeCode .shell_4rc_dock ,
739+ RoborockDockTypeCode .shell_4p_dock ,
740+ RoborockDockTypeCode .shell_4s_dock ,
741+ RoborockDockTypeCode .k1d_dock ,
742+ RoborockDockTypeCode .shell_3p_dock ,
743+ RoborockDockTypeCode .f1_dock ,
744+ RoborockDockTypeCode .f2r_dock ,
745+ RoborockDockTypeCode .f1s_dock ,
746+ RoborockDockTypeCode .f1c_dock ,
722747}
723748
724749_WATER_UPDOWN_DRAIN_DOCK_TYPES = {
@@ -739,6 +764,19 @@ def get_supported_features(self) -> list[str]:
739764 RoborockDockTypeCode .shell_e_dock ,
740765 RoborockDockTypeCode .shell_2e_dock ,
741766 RoborockDockTypeCode .shell_3c_dock ,
767+ RoborockDockTypeCode .k1c_dock ,
768+ RoborockDockTypeCode .hera_dock ,
769+ RoborockDockTypeCode .k1s_pro_dock ,
770+ RoborockDockTypeCode .type_27_dock ,
771+ RoborockDockTypeCode .shell_4rc_dock ,
772+ RoborockDockTypeCode .shell_4r_dock ,
773+ RoborockDockTypeCode .shell_4p_dock ,
774+ RoborockDockTypeCode .shell_4s_dock ,
775+ RoborockDockTypeCode .o7_dock ,
776+ RoborockDockTypeCode .shell_4d_dock ,
777+ RoborockDockTypeCode .f1r_dock ,
778+ RoborockDockTypeCode .f1s_dock ,
779+ RoborockDockTypeCode .o7h_dock ,
742780}
743781
744782_HATCH_DOOR_DOCK_COOL_FAN_DOCK_TYPES = {
@@ -749,6 +787,56 @@ def get_supported_features(self) -> list[str]:
749787 RoborockDockTypeCode .shell_2e_lite_dock ,
750788}
751789
790+ _HIGH_TMP_WATER_DOCK_TYPES = {
791+ RoborockDockTypeCode .k1r_dock ,
792+ RoborockDockTypeCode .shell_4rc_dock ,
793+ RoborockDockTypeCode .shell_2e_heat_dock ,
794+ RoborockDockTypeCode .f1_dock ,
795+ RoborockDockTypeCode .f1r_dock ,
796+ RoborockDockTypeCode .f2r_dock ,
797+ RoborockDockTypeCode .f1c_dock ,
798+ }
799+
800+ _DOUBLE_SERIAL_COMMUNICATION_DOCK_TYPES = {
801+ RoborockDockTypeCode .k1s_pro_dock ,
802+ RoborockDockTypeCode .type_27_dock ,
803+ RoborockDockTypeCode .k1r_dock ,
804+ RoborockDockTypeCode .shell_4r_dock ,
805+ RoborockDockTypeCode .shell_4p_dock ,
806+ RoborockDockTypeCode .shell_4s_dock ,
807+ RoborockDockTypeCode .o7_dock ,
808+ RoborockDockTypeCode .k1d_dock ,
809+ RoborockDockTypeCode .shell_3p_dock ,
810+ RoborockDockTypeCode .f1_dock ,
811+ RoborockDockTypeCode .f1r_dock ,
812+ RoborockDockTypeCode .f2r_dock ,
813+ RoborockDockTypeCode .f1s_dock ,
814+ RoborockDockTypeCode .o7h_dock ,
815+ RoborockDockTypeCode .f1c_dock ,
816+ }
817+
818+ _DOUBLE_SERIAL_COMMUNICATION_AM_DOCK_TYPES = {
819+ RoborockDockTypeCode .shell_4rc_dock ,
820+ RoborockDockTypeCode .shell_4d_dock ,
821+ }
822+
823+ _NO_WATER_FLOW_CAROUSEL_DOCK_TYPES = {
824+ RoborockDockTypeCode .f1r_dock ,
825+ RoborockDockTypeCode .f2r_dock ,
826+ RoborockDockTypeCode .f1s_dock ,
827+ }
828+
829+ _SIMPLE_WASH_MODE_DOCK_TYPES = {
830+ RoborockDockTypeCode .f1_dock ,
831+ RoborockDockTypeCode .f1r_dock ,
832+ RoborockDockTypeCode .f2r_dock ,
833+ RoborockDockTypeCode .f1c_dock ,
834+ }
835+
836+ _STEAM_WASH_DOCK_TYPES = {
837+ RoborockDockTypeCode .o7h_dock ,
838+ }
839+
752840
753841@dataclass (frozen = True )
754842class RoborockDockFeatures :
@@ -849,6 +937,28 @@ def is_hatch_door_dock_cool_fan_supported(self) -> bool:
849937 def is_special_support_wash_temp (self ) -> bool :
850938 return self .dock_type in _SPECIAL_WASH_TEMP_DOCK_TYPES
851939
940+ @property
941+ def is_high_tmp_water_supported (self ) -> bool :
942+ return self .dock_type in _HIGH_TMP_WATER_DOCK_TYPES
943+
944+ @property
945+ def is_double_serial_communication_supported (self ) -> bool :
946+ return self .dock_type in _DOUBLE_SERIAL_COMMUNICATION_DOCK_TYPES or self ._matches_am_variant (
947+ _DOUBLE_SERIAL_COMMUNICATION_AM_DOCK_TYPES
948+ )
949+
950+ @property
951+ def is_no_water_flow_carousel (self ) -> bool :
952+ return self .dock_type in _NO_WATER_FLOW_CAROUSEL_DOCK_TYPES
953+
954+ @property
955+ def is_simple_wash_mode_supported (self ) -> bool :
956+ return self .dock_type in _SIMPLE_WASH_MODE_DOCK_TYPES
957+
958+ @property
959+ def is_steam_wash_supported (self ) -> bool :
960+ return self .dock_type in _STEAM_WASH_DOCK_TYPES
961+
852962
853963WASH_N_FILL_DOCK_TYPES = [
854964 dock_type for dock_type in RoborockDockTypeCode if RoborockDockFeatures .from_dock_type (dock_type ).is_washable
0 commit comments