Skip to content

Commit ebaef73

Browse files
authored
Add support for Deebot N10 (#673)
1 parent c33fa24 commit ebaef73

File tree

1 file changed

+219
-0
lines changed

1 file changed

+219
-0
lines changed
Lines changed: 219 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,219 @@
1+
"""Deebot N10 Capabilities."""
2+
3+
from __future__ import annotations
4+
5+
from deebot_client.capabilities import (
6+
Capabilities,
7+
CapabilityClean,
8+
CapabilityCleanAction,
9+
CapabilityCustomCommand,
10+
CapabilityEvent,
11+
CapabilityExecute,
12+
CapabilityLifeSpan,
13+
CapabilityMap,
14+
CapabilitySet,
15+
CapabilitySetEnable,
16+
CapabilitySettings,
17+
CapabilitySetTypes,
18+
CapabilityStats,
19+
DeviceType,
20+
)
21+
from deebot_client.commands.json.advanced_mode import GetAdvancedMode, SetAdvancedMode
22+
from deebot_client.commands.json.battery import GetBattery
23+
from deebot_client.commands.json.carpet import (
24+
GetCarpetAutoFanBoost,
25+
SetCarpetAutoFanBoost,
26+
)
27+
from deebot_client.commands.json.charge import Charge
28+
from deebot_client.commands.json.charge_state import GetChargeState
29+
from deebot_client.commands.json.clean import Clean, CleanArea, GetCleanInfo
30+
from deebot_client.commands.json.clean_count import GetCleanCount, SetCleanCount
31+
from deebot_client.commands.json.clean_preference import (
32+
GetCleanPreference,
33+
SetCleanPreference,
34+
)
35+
from deebot_client.commands.json.continuous_cleaning import (
36+
GetContinuousCleaning,
37+
SetContinuousCleaning,
38+
)
39+
from deebot_client.commands.json.custom import CustomCommand
40+
from deebot_client.commands.json.efficiency import GetEfficiencyMode, SetEfficiencyMode
41+
from deebot_client.commands.json.error import GetError
42+
from deebot_client.commands.json.fan_speed import GetFanSpeed, SetFanSpeed
43+
from deebot_client.commands.json.life_span import GetLifeSpan, ResetLifeSpan
44+
from deebot_client.commands.json.map import (
45+
GetCachedMapInfo,
46+
GetMajorMap,
47+
GetMapTrace,
48+
)
49+
from deebot_client.commands.json.multimap_state import (
50+
GetMultimapState,
51+
SetMultimapState,
52+
)
53+
from deebot_client.commands.json.network import GetNetInfo
54+
from deebot_client.commands.json.ota import GetOta, SetOta
55+
from deebot_client.commands.json.play_sound import PlaySound
56+
from deebot_client.commands.json.pos import GetPos
57+
from deebot_client.commands.json.relocation import SetRelocationState
58+
from deebot_client.commands.json.stats import GetStats, GetTotalStats
59+
from deebot_client.commands.json.voice_assistant_state import (
60+
GetVoiceAssistantState,
61+
SetVoiceAssistantState,
62+
)
63+
from deebot_client.commands.json.volume import GetVolume, SetVolume
64+
from deebot_client.commands.json.water_info import GetWaterInfo, SetWaterInfo
65+
from deebot_client.const import DataType
66+
from deebot_client.events import (
67+
AdvancedModeEvent,
68+
AvailabilityEvent,
69+
BatteryEvent,
70+
CachedMapInfoEvent,
71+
CarpetAutoFanBoostEvent,
72+
CleanCountEvent,
73+
CleanPreferenceEvent,
74+
ContinuousCleaningEvent,
75+
CustomCommandEvent,
76+
EfficiencyModeEvent,
77+
ErrorEvent,
78+
FanSpeedEvent,
79+
FanSpeedLevel,
80+
LifeSpan,
81+
LifeSpanEvent,
82+
MajorMapEvent,
83+
MapChangedEvent,
84+
MapTraceEvent,
85+
MultimapStateEvent,
86+
NetworkInfoEvent,
87+
OtaEvent,
88+
PositionsEvent,
89+
ReportStatsEvent,
90+
RoomsEvent,
91+
StateEvent,
92+
StatsEvent,
93+
TotalStatsEvent,
94+
VoiceAssistantStateEvent,
95+
VolumeEvent,
96+
WaterAmount,
97+
WaterInfoEvent,
98+
)
99+
from deebot_client.events.efficiency_mode import EfficiencyMode
100+
from deebot_client.models import StaticDeviceInfo
101+
from deebot_client.util import short_name
102+
103+
from . import DEVICES
104+
105+
DEVICES[short_name(__name__)] = StaticDeviceInfo(
106+
DataType.JSON,
107+
Capabilities(
108+
device_type=DeviceType.VACUUM,
109+
availability=CapabilityEvent(
110+
AvailabilityEvent, [GetBattery(is_available_check=True)]
111+
),
112+
battery=CapabilityEvent(BatteryEvent, [GetBattery()]),
113+
charge=CapabilityExecute(Charge),
114+
clean=CapabilityClean(
115+
action=CapabilityCleanAction(command=Clean, area=CleanArea),
116+
continuous=CapabilitySetEnable(
117+
ContinuousCleaningEvent,
118+
[GetContinuousCleaning()],
119+
SetContinuousCleaning,
120+
),
121+
count=CapabilitySet(CleanCountEvent, [GetCleanCount()], SetCleanCount),
122+
preference=CapabilitySetEnable(
123+
CleanPreferenceEvent, [GetCleanPreference()], SetCleanPreference
124+
),
125+
),
126+
custom=CapabilityCustomCommand(
127+
event=CustomCommandEvent, get=[], set=CustomCommand
128+
),
129+
error=CapabilityEvent(ErrorEvent, [GetError()]),
130+
fan_speed=CapabilitySetTypes(
131+
event=FanSpeedEvent,
132+
get=[GetFanSpeed()],
133+
set=SetFanSpeed,
134+
types=(
135+
FanSpeedLevel.QUIET,
136+
FanSpeedLevel.NORMAL,
137+
FanSpeedLevel.MAX,
138+
FanSpeedLevel.MAX_PLUS,
139+
),
140+
),
141+
life_span=CapabilityLifeSpan(
142+
types=(
143+
LifeSpan.BRUSH,
144+
LifeSpan.FILTER,
145+
LifeSpan.SIDE_BRUSH,
146+
LifeSpan.UNIT_CARE,
147+
),
148+
event=LifeSpanEvent,
149+
get=[
150+
GetLifeSpan(
151+
[
152+
LifeSpan.BRUSH,
153+
LifeSpan.FILTER,
154+
LifeSpan.SIDE_BRUSH,
155+
LifeSpan.UNIT_CARE,
156+
]
157+
)
158+
],
159+
reset=ResetLifeSpan,
160+
),
161+
map=CapabilityMap(
162+
cached_info=CapabilityEvent(CachedMapInfoEvent, [GetCachedMapInfo()]),
163+
changed=CapabilityEvent(MapChangedEvent, []),
164+
major=CapabilityEvent(MajorMapEvent, [GetMajorMap()]),
165+
multi_state=CapabilitySetEnable(
166+
MultimapStateEvent, [GetMultimapState()], SetMultimapState
167+
),
168+
position=CapabilityEvent(PositionsEvent, [GetPos()]),
169+
relocation=CapabilityExecute(SetRelocationState),
170+
rooms=CapabilityEvent(RoomsEvent, [GetCachedMapInfo()]),
171+
trace=CapabilityEvent(MapTraceEvent, [GetMapTrace()]),
172+
),
173+
network=CapabilityEvent(NetworkInfoEvent, [GetNetInfo()]),
174+
play_sound=CapabilityExecute(PlaySound),
175+
settings=CapabilitySettings(
176+
advanced_mode=CapabilitySetEnable(
177+
AdvancedModeEvent, [GetAdvancedMode()], SetAdvancedMode
178+
),
179+
carpet_auto_fan_boost=CapabilitySetEnable(
180+
CarpetAutoFanBoostEvent,
181+
[GetCarpetAutoFanBoost()],
182+
SetCarpetAutoFanBoost,
183+
),
184+
efficiency_mode=CapabilitySetTypes(
185+
event=EfficiencyModeEvent,
186+
get=[GetEfficiencyMode()],
187+
set=SetEfficiencyMode,
188+
types=(
189+
EfficiencyMode.ENERGY_EFFICIENT_MODE,
190+
EfficiencyMode.STANDARD_MODE,
191+
),
192+
),
193+
ota=CapabilitySetEnable(OtaEvent, [GetOta()], SetOta),
194+
voice_assistant=CapabilitySetEnable(
195+
VoiceAssistantStateEvent,
196+
[GetVoiceAssistantState()],
197+
SetVoiceAssistantState,
198+
),
199+
volume=CapabilitySet(VolumeEvent, [GetVolume()], SetVolume),
200+
),
201+
state=CapabilityEvent(StateEvent, [GetChargeState(), GetCleanInfo()]),
202+
stats=CapabilityStats(
203+
clean=CapabilityEvent(StatsEvent, [GetStats()]),
204+
report=CapabilityEvent(ReportStatsEvent, []),
205+
total=CapabilityEvent(TotalStatsEvent, [GetTotalStats()]),
206+
),
207+
water=CapabilitySetTypes(
208+
event=WaterInfoEvent,
209+
get=[GetWaterInfo()],
210+
set=SetWaterInfo,
211+
types=(
212+
WaterAmount.LOW,
213+
WaterAmount.MEDIUM,
214+
WaterAmount.HIGH,
215+
WaterAmount.ULTRAHIGH,
216+
),
217+
),
218+
),
219+
)

0 commit comments

Comments
 (0)