Skip to content

Commit 846a10f

Browse files
zhyf0610edenhaus
andauthored
Add support for T30 Pro Plus (n9f2g8) (#1603)
* Add files via upload * Update deebot_client/hardware/n9f2g8.py * Apply suggestion from @edenhaus --------- Co-authored-by: Robert Resch <robert@resch.dev>
1 parent 16d763b commit 846a10f

1 file changed

Lines changed: 245 additions & 0 deletions

File tree

deebot_client/hardware/n9f2g8.py

Lines changed: 245 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,245 @@
1+
"""Deebot T30 Pro Plus 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+
CapabilityExecuteTypes,
13+
CapabilityLifeSpan,
14+
CapabilityMap,
15+
CapabilitySet,
16+
CapabilitySetEnable,
17+
CapabilitySettings,
18+
CapabilitySetTypes,
19+
CapabilityStation,
20+
CapabilityStats,
21+
CapabilityWater,
22+
DeviceType,
23+
)
24+
from deebot_client.commands import StationAction
25+
from deebot_client.commands.json import station_action
26+
from deebot_client.commands.json.auto_empty import GetAutoEmpty, SetAutoEmpty
27+
from deebot_client.commands.json.battery import GetBattery
28+
from deebot_client.commands.json.carpet import (
29+
GetCarpetAutoFanBoost,
30+
SetCarpetAutoFanBoost,
31+
)
32+
from deebot_client.commands.json.charge import Charge
33+
from deebot_client.commands.json.charge_state import GetChargeState
34+
from deebot_client.commands.json.child_lock import GetChildLock, SetChildLock
35+
from deebot_client.commands.json.clean import CleanAreaV2, CleanV2, GetCleanInfoV2
36+
from deebot_client.commands.json.clean_count import GetCleanCount, SetCleanCount
37+
from deebot_client.commands.json.clean_logs import GetCleanLogs
38+
from deebot_client.commands.json.continuous_cleaning import (
39+
GetContinuousCleaning,
40+
SetContinuousCleaning,
41+
)
42+
from deebot_client.commands.json.custom import CustomCommand
43+
from deebot_client.commands.json.error import GetError
44+
from deebot_client.commands.json.fan_speed import GetFanSpeed, SetFanSpeed
45+
from deebot_client.commands.json.life_span import GetLifeSpan, ResetLifeSpan
46+
from deebot_client.commands.json.map import (
47+
GetCachedMapInfo,
48+
GetMajorMap,
49+
GetMapInfoV2,
50+
GetMapSetV2,
51+
GetMapTrace,
52+
GetMinorMap,
53+
SetMajorMap,
54+
)
55+
from deebot_client.commands.json.multimap_state import (
56+
GetMultimapState,
57+
SetMultimapState,
58+
)
59+
from deebot_client.commands.json.network import GetNetInfo
60+
from deebot_client.commands.json.play_sound import PlaySound
61+
from deebot_client.commands.json.pos import GetPos
62+
from deebot_client.commands.json.relocation import SetRelocationState
63+
from deebot_client.commands.json.station_state import GetStationState
64+
from deebot_client.commands.json.stats import GetStats, GetTotalStats
65+
from deebot_client.commands.json.true_detect import GetTrueDetect, SetTrueDetect
66+
from deebot_client.commands.json.volume import GetVolume, SetVolume
67+
from deebot_client.commands.json.water_info import GetWaterInfo, SetWaterInfo
68+
from deebot_client.commands.json.work_mode import GetWorkMode, SetWorkMode
69+
from deebot_client.const import DataType
70+
from deebot_client.events import (
71+
AutoEmptyEvent,
72+
AvailabilityEvent,
73+
BatteryEvent,
74+
CachedMapInfoEvent,
75+
CarpetAutoFanBoostEvent,
76+
ChildLockEvent,
77+
CleanCountEvent,
78+
CleanLogEvent,
79+
ContinuousCleaningEvent,
80+
CustomCommandEvent,
81+
ErrorEvent,
82+
FanSpeedEvent,
83+
FanSpeedLevel,
84+
LifeSpan,
85+
LifeSpanEvent,
86+
MajorMapEvent,
87+
MapChangedEvent,
88+
MapTraceEvent,
89+
MultimapStateEvent,
90+
NetworkInfoEvent,
91+
PositionsEvent,
92+
ReportStatsEvent,
93+
RoomsEvent,
94+
StateEvent,
95+
StationEvent,
96+
StatsEvent,
97+
TotalStatsEvent,
98+
TrueDetectEvent,
99+
VolumeEvent,
100+
WorkMode,
101+
WorkModeEvent,
102+
auto_empty,
103+
water_info,
104+
)
105+
from deebot_client.models import StaticDeviceInfo
106+
107+
108+
def get_device_info() -> StaticDeviceInfo:
109+
"""Get device info for this model."""
110+
return StaticDeviceInfo(
111+
DataType.JSON,
112+
Capabilities(
113+
device_type=DeviceType.VACUUM,
114+
availability=CapabilityEvent(
115+
AvailabilityEvent, [GetBattery(is_available_check=True)]
116+
),
117+
battery=CapabilityEvent(BatteryEvent, [GetBattery()]),
118+
charge=CapabilityExecute(Charge),
119+
clean=CapabilityClean(
120+
action=CapabilityCleanAction(command=CleanV2, area=CleanAreaV2),
121+
continuous=CapabilitySetEnable(
122+
ContinuousCleaningEvent,
123+
[GetContinuousCleaning()],
124+
SetContinuousCleaning,
125+
),
126+
count=CapabilitySet(CleanCountEvent, [GetCleanCount()], SetCleanCount),
127+
log=CapabilityEvent(CleanLogEvent, [GetCleanLogs()]),
128+
work_mode=CapabilitySetTypes(
129+
event=WorkModeEvent,
130+
get=[GetWorkMode()],
131+
set=SetWorkMode,
132+
types=(
133+
WorkMode.MOP,
134+
WorkMode.MOP_AFTER_VACUUM,
135+
WorkMode.VACUUM,
136+
WorkMode.VACUUM_AND_MOP,
137+
),
138+
),
139+
),
140+
custom=CapabilityCustomCommand(
141+
event=CustomCommandEvent, get=[], set=CustomCommand
142+
),
143+
error=CapabilityEvent(ErrorEvent, [GetError()]),
144+
fan_speed=CapabilitySetTypes(
145+
event=FanSpeedEvent,
146+
get=[GetFanSpeed()],
147+
set=SetFanSpeed,
148+
types=(
149+
FanSpeedLevel.QUIET,
150+
FanSpeedLevel.NORMAL,
151+
FanSpeedLevel.MAX,
152+
FanSpeedLevel.MAX_PLUS,
153+
),
154+
),
155+
life_span=CapabilityLifeSpan(
156+
types=(
157+
LifeSpan.BRUSH,
158+
LifeSpan.FILTER,
159+
LifeSpan.SIDE_BRUSH,
160+
LifeSpan.UNIT_CARE,
161+
LifeSpan.ROUND_MOP,
162+
),
163+
event=LifeSpanEvent,
164+
get=[
165+
GetLifeSpan(
166+
[
167+
LifeSpan.BRUSH,
168+
LifeSpan.FILTER,
169+
LifeSpan.SIDE_BRUSH,
170+
LifeSpan.UNIT_CARE,
171+
LifeSpan.ROUND_MOP,
172+
]
173+
)
174+
],
175+
reset=ResetLifeSpan,
176+
),
177+
map=CapabilityMap(
178+
cached_info=CapabilityEvent(CachedMapInfoEvent, [GetCachedMapInfo()]),
179+
changed=CapabilityEvent(MapChangedEvent, []),
180+
info=CapabilityExecute(GetMapInfoV2),
181+
major=CapabilitySet(MajorMapEvent, [GetMajorMap()], SetMajorMap),
182+
minor=CapabilityExecute(GetMinorMap),
183+
multi_state=CapabilitySetEnable(
184+
MultimapStateEvent, [GetMultimapState()], SetMultimapState
185+
),
186+
position=CapabilityEvent(PositionsEvent, [GetPos()]),
187+
relocation=CapabilityExecute(SetRelocationState),
188+
rooms=CapabilityEvent(RoomsEvent, [GetCachedMapInfo()]),
189+
set=CapabilityExecute(GetMapSetV2),
190+
trace=CapabilityEvent(MapTraceEvent, [GetMapTrace()]),
191+
),
192+
network=CapabilityEvent(NetworkInfoEvent, [GetNetInfo()]),
193+
play_sound=CapabilityExecute(PlaySound),
194+
settings=CapabilitySettings(
195+
carpet_auto_fan_boost=CapabilitySetEnable(
196+
CarpetAutoFanBoostEvent,
197+
[GetCarpetAutoFanBoost()],
198+
SetCarpetAutoFanBoost,
199+
),
200+
child_lock=CapabilitySetEnable(
201+
ChildLockEvent, [GetChildLock()], SetChildLock
202+
),
203+
volume=CapabilitySet(VolumeEvent, [GetVolume()], SetVolume),
204+
true_detect=CapabilitySetEnable(
205+
TrueDetectEvent, [GetTrueDetect()], SetTrueDetect
206+
),
207+
),
208+
state=CapabilityEvent(StateEvent, [GetChargeState(), GetCleanInfoV2()]),
209+
station=CapabilityStation(
210+
action=CapabilityExecuteTypes(
211+
station_action.StationAction, types=(StationAction.EMPTY_DUSTBIN,)
212+
),
213+
auto_empty=CapabilitySetTypes(
214+
event=AutoEmptyEvent,
215+
get=[GetAutoEmpty()],
216+
set=SetAutoEmpty,
217+
types=(
218+
auto_empty.Frequency.AUTO,
219+
auto_empty.Frequency.SMART,
220+
),
221+
),
222+
state=CapabilityEvent(StationEvent, [GetStationState()]),
223+
),
224+
stats=CapabilityStats(
225+
clean=CapabilityEvent(StatsEvent, [GetStats()]),
226+
report=CapabilityEvent(ReportStatsEvent, []),
227+
total=CapabilityEvent(TotalStatsEvent, [GetTotalStats()]),
228+
),
229+
water=CapabilityWater(
230+
amount=CapabilitySetTypes(
231+
event=water_info.WaterAmountEvent,
232+
get=[GetWaterInfo()],
233+
set=SetWaterInfo,
234+
types=(
235+
water_info.WaterAmount.LOW,
236+
water_info.WaterAmount.MEDIUM,
237+
water_info.WaterAmount.HIGH,
238+
),
239+
),
240+
mop_attached=CapabilityEvent(
241+
water_info.MopAttachedEvent, [GetWaterInfo()]
242+
),
243+
),
244+
),
245+
)

0 commit comments

Comments
 (0)