Add more vacuum requests

This commit is contained in:
Teemu Rytilahti 2024-12-02 13:36:07 +01:00
parent 74b59d7f98
commit d32aa5eab6

View File

@ -33,6 +33,35 @@ from dataclasses import asdict, dataclass
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@dataclass
class SmartRequestParams:
"""Base class for Smart request params.
The to_dict() method of this class omits null values which
is required by the devices.
"""
def to_dict(self):
"""Return the params as a dict with values of None omitted."""
return asdict(
self, dict_factory=lambda x: {k: v for (k, v) in x if v is not None}
)
@dataclass
class GetCleanAttrParams(SmartRequestParams):
"""Get clean attr parameters."""
type: str # global: normal, pose: spot cleaning
@dataclass
class GetMapDataParams(SmartRequestParams):
"""Map data parameters."""
id: int
class SmartRequest: class SmartRequest:
"""Class to represent a smart protocol request.""" """Class to represent a smart protocol request."""
@ -50,20 +79,6 @@ class SmartRequest:
"""Return the request as a dict suitable for passing to query().""" """Return the request as a dict suitable for passing to query()."""
return {self.method_name: self.params} return {self.method_name: self.params}
@dataclass
class SmartRequestParams:
"""Base class for Smart request params.
The to_dict() method of this class omits null values which
is required by the devices.
"""
def to_dict(self):
"""Return the params as a dict with values of None ommited."""
return asdict(
self, dict_factory=lambda x: {k: v for (k, v) in x if v is not None}
)
@dataclass @dataclass
class DeviceOnParams(SmartRequestParams): class DeviceOnParams(SmartRequestParams):
"""Get Rules Params.""" """Get Rules Params."""
@ -291,9 +306,7 @@ class SmartRequest:
params: SmartRequestParams | None = None, params: SmartRequestParams | None = None,
) -> SmartRequest: ) -> SmartRequest:
"""Get preset rules.""" """Get preset rules."""
return SmartRequest( return SmartRequest("get_on_off_gradually_info", params or SmartRequestParams())
"get_on_off_gradually_info", params or SmartRequest.SmartRequestParams()
)
@staticmethod @staticmethod
def get_auto_light_info() -> SmartRequest: def get_auto_light_info() -> SmartRequest:
@ -429,23 +442,32 @@ COMPONENT_REQUESTS = {
"clean": [ "clean": [
SmartRequest.get_raw_request("getCleanRecords"), SmartRequest.get_raw_request("getCleanRecords"),
SmartRequest.get_raw_request("getVacStatus"), SmartRequest.get_raw_request("getVacStatus"),
SmartRequest.get_raw_request("getCleanStatus"),
SmartRequest.get_raw_request("getCleanAttr", GetCleanAttrParams(type="global")),
SmartRequest.get_raw_request("getCleanAttr", GetCleanAttrParams(type="pose")),
], ],
"battery": [SmartRequest.get_raw_request("getBatteryInfo")], "battery": [SmartRequest.get_raw_request("getBatteryInfo")],
"consumables": [SmartRequest.get_raw_request("getConsumablesInfo")], "consumables": [SmartRequest.get_raw_request("getConsumablesInfo")],
"direction_control": [], "direction_control": [],
"button_and_led": [], "button_and_led": [SmartRequest.get_raw_request("getChildLockInfo")],
"speaker": [ "speaker": [
SmartRequest.get_raw_request("getSupportVoiceLanguage"), SmartRequest.get_raw_request("getSupportVoiceLanguage"),
SmartRequest.get_raw_request("getCurrentVoiceLanguage"), SmartRequest.get_raw_request("getCurrentVoiceLanguage"),
SmartRequest.get_raw_request("getVolume"),
], ],
"map": [ "map": [
SmartRequest.get_raw_request("getMapInfo"), SmartRequest.get_raw_request("getMapInfo"),
SmartRequest.get_raw_request("getMapData"), SmartRequest.get_raw_request("getAreaUnit"),
SmartRequest.get_raw_request("getMapData", GetMapDataParams(id=-1)),
], ],
"auto_change_map": [SmartRequest.get_raw_request("getAutoChangeMap")], "auto_change_map": [SmartRequest.get_raw_request("getAutoChangeMap")],
"dust_bucket": [SmartRequest.get_raw_request("getAutoDustCollection")], "dust_bucket": [
SmartRequest.get_raw_request("getAutoDustCollection"),
SmartRequest.get_raw_request("getDustCollectionInfo"),
],
"mop": [SmartRequest.get_raw_request("getMopState")], "mop": [SmartRequest.get_raw_request("getMopState")],
"do_not_disturb": [SmartRequest.get_raw_request("getDoNotDisturb")], "do_not_disturb": [SmartRequest.get_raw_request("getDoNotDisturb")],
"carpet_area": [SmartRequest.get_raw_request("getCarpetClean")],
"charge_pose_clean": [], "charge_pose_clean": [],
"continue_breakpoint_sweep": [], "continue_breakpoint_sweep": [],
"goto_point": [], "goto_point": [],