Skip to content

Commit fb64fe3

Browse files
Cr4z33edenhaus
andauthored
Add hardware definition for Ecovacs DEEBOT T80S OMNI (#1517)
* Add hardware definition for Ecovacs DEEBOT T80S OMNI * Rename deebot_client/hardware/rzwv5p.py to deebot_client/hardware/deebot_client/hardware/deebot/rzwv5p.py Moved to the right directory * Refactor DEEBOT T80S hardware capabilities structure Fix: update to new capability structure * Fix CI and missing newline at end of rzwv5p.py and * Add __init__.py for Deebot hardware configurations Fix INP001 * Fix it --------- Co-authored-by: Robert Resch <robert@resch.dev>
1 parent c512998 commit fb64fe3

1 file changed

Lines changed: 227 additions & 0 deletions

File tree

deebot_client/hardware/rzwv5p.py

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

0 commit comments

Comments
 (0)