diff --git a/deebot_client/commands/json/__init__.py b/deebot_client/commands/json/__init__.py index 384e2697..fe1cf6d0 100644 --- a/deebot_client/commands/json/__init__.py +++ b/deebot_client/commands/json/__init__.py @@ -34,6 +34,7 @@ GetMapTrace, GetMinorMap, ) +from .mop_wash_frequency import GetMopWashFrequency, SetMopWashFrequency from .moveup_warning import GetMoveUpWarning, SetMoveUpWarning from .multimap_state import GetMultimapState, SetMultimapState from .network import GetNetInfo @@ -84,6 +85,7 @@ "GetMapSubSet", "GetMapTrace", "GetMinorMap", + "GetMopWashFrequency", "GetMoveUpWarning", "GetMultimapState", "GetNetInfo", @@ -111,6 +113,7 @@ "SetCutDirection", "SetEfficiencyMode", "SetFanSpeed", + "SetMopWashFrequency", "SetMoveUpWarning", "SetMultimapState", "SetOta", @@ -187,6 +190,9 @@ GetMapTrace, GetMinorMap, + GetMopWashFrequency, + SetMopWashFrequency, + GetMoveUpWarning, SetMoveUpWarning, diff --git a/deebot_client/commands/json/mop_wash_frequency.py b/deebot_client/commands/json/mop_wash_frequency.py new file mode 100644 index 00000000..bdc6335d --- /dev/null +++ b/deebot_client/commands/json/mop_wash_frequency.py @@ -0,0 +1,46 @@ +"""Mop Auto-Wash Frequency command module.""" + +from __future__ import annotations + +from types import MappingProxyType +from typing import TYPE_CHECKING, Any + +from deebot_client.command import InitParam +from deebot_client.events import MopWashFrequency, MopWashFrequencyEvent +from deebot_client.message import HandlingResult +from deebot_client.util import get_enum + +from .common import JsonGetCommand, JsonSetCommand + +if TYPE_CHECKING: + from deebot_client.event_bus import EventBus + + +class GetMopWashFrequency(JsonGetCommand): + """Get Mop Auto-Wash Frequency command.""" + + name = "getMopWashFrequency" + + @classmethod + def _handle_body_data_dict( + cls, event_bus: EventBus, data: dict[str, Any] + ) -> HandlingResult: + """Handle message->body->data and notify the correct event subscribers. + + :return: A message response + """ + event_bus.notify(MopWashFrequencyEvent(MopWashFrequency(int(data["interval"])))) + return HandlingResult.success() + + +class SetMopWashFrequency(JsonSetCommand): + """Set Mop Auto-Wash Frequency command.""" + + name = "setMopWashFrequency" + get_command = GetMopWashFrequency + _mqtt_params = MappingProxyType({"interval": InitParam(MopWashFrequency)}) + + def __init__(self, interval: MopWashFrequency | str) -> None: + if isinstance(interval, str): + interval = get_enum(MopWashFrequency, interval) + super().__init__({"interval": interval.value}) diff --git a/deebot_client/events/__init__.py b/deebot_client/events/__init__.py index 12a03b95..be55cc79 100644 --- a/deebot_client/events/__init__.py +++ b/deebot_client/events/__init__.py @@ -23,6 +23,7 @@ PositionsEvent, PositionType, ) +from .mop_wash_frequency import MopWashFrequency, MopWashFrequencyEvent from .network import NetworkInfoEvent from .water_info import SweepType, WaterAmount, WaterInfoEvent from .work_mode import WorkMode, WorkModeEvent @@ -47,6 +48,8 @@ "MapSubsetEvent", "MapTraceEvent", "MinorMapEvent", + "MopWashFrequency", + "MopWashFrequencyEvent", "NetworkInfoEvent", "Position", "PositionType", diff --git a/deebot_client/events/mop_wash_frequency.py b/deebot_client/events/mop_wash_frequency.py new file mode 100644 index 00000000..7257c475 --- /dev/null +++ b/deebot_client/events/mop_wash_frequency.py @@ -0,0 +1,24 @@ +"""Mop Auto-Wash Frequency event module.""" + +from __future__ import annotations + +from dataclasses import dataclass +from enum import IntEnum, unique + +from .base import Event + + +@unique +class MopWashFrequency(IntEnum): + """Enum class for all possible mop auto-wash frequencies.""" + + TEN_MINUTES = 10 + FIFTEEN_MINUTES = 15 + TWENTY_FIVE_MINUTES = 25 + + +@dataclass(frozen=True) +class MopWashFrequencyEvent(Event): + """Mop Auto-Wash Frequency event representation.""" + + interval: MopWashFrequency \ No newline at end of file