Skip to content

Commit 3d5a7b4

Browse files
authored
Migrate Tuya vacuum (pause) to use wrapper class (home-assistant#156947)
1 parent e0bb30f commit 3d5a7b4

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

homeassistant/components/tuya/vacuum.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
from .const import TUYA_DISCOVERY_NEW, DeviceCategory, DPCode
2020
from .entity import TuyaEntity
2121
from .models import DPCodeBooleanWrapper, DPCodeEnumWrapper
22-
from .util import get_dpcode
2322

2423
TUYA_MODE_RETURN_HOME = "chargego"
2524
TUYA_STATUS_TO_HA = {
@@ -80,6 +79,9 @@ def async_discover_device(device_ids: list[str]) -> None:
8079
mode_wrapper=DPCodeEnumWrapper.find_dpcode(
8180
device, DPCode.MODE, prefer_function=True
8281
),
82+
pause_wrapper=DPCodeBooleanWrapper.find_dpcode(
83+
device, DPCode.PAUSE
84+
),
8385
status_wrapper=DPCodeEnumWrapper.find_dpcode(
8486
device, DPCode.STATUS
8587
),
@@ -111,6 +113,7 @@ def __init__(
111113
fan_speed_wrapper: DPCodeEnumWrapper | None,
112114
locate_wrapper: DPCodeBooleanWrapper | None,
113115
mode_wrapper: DPCodeEnumWrapper | None,
116+
pause_wrapper: DPCodeBooleanWrapper | None,
114117
status_wrapper: DPCodeEnumWrapper | None,
115118
switch_wrapper: DPCodeBooleanWrapper | None,
116119
) -> None:
@@ -120,14 +123,15 @@ def __init__(
120123
self._fan_speed_wrapper = fan_speed_wrapper
121124
self._locate_wrapper = locate_wrapper
122125
self._mode_wrapper = mode_wrapper
126+
self._pause_wrapper = pause_wrapper
123127
self._status_wrapper = status_wrapper
124128
self._switch_wrapper = switch_wrapper
125129

126130
self._attr_fan_speed_list = []
127131
self._attr_supported_features = (
128132
VacuumEntityFeature.SEND_COMMAND | VacuumEntityFeature.STATE
129133
)
130-
if get_dpcode(self.device, DPCode.PAUSE):
134+
if pause_wrapper:
131135
self._attr_supported_features |= VacuumEntityFeature.PAUSE
132136

133137
if charge_wrapper or (
@@ -159,7 +163,7 @@ def activity(self) -> VacuumActivity | None:
159163
if (status := self._read_wrapper(self._status_wrapper)) is not None:
160164
return TUYA_STATUS_TO_HA.get(status)
161165

162-
if self.device.status.get(DPCode.PAUSE):
166+
if self._read_wrapper(self._pause_wrapper):
163167
return VacuumActivity.PAUSED
164168
return None
165169

@@ -171,9 +175,9 @@ async def async_stop(self, **kwargs: Any) -> None:
171175
"""Stop the device."""
172176
await self._async_send_dpcode_update(self._switch_wrapper, False)
173177

174-
def pause(self, **kwargs: Any) -> None:
178+
async def async_pause(self, **kwargs: Any) -> None:
175179
"""Pause the device."""
176-
self._send_command([{"code": DPCode.POWER_GO, "value": False}])
180+
await self.async_stop(**kwargs)
177181

178182
async def async_return_to_base(self, **kwargs: Any) -> None:
179183
"""Return device to dock."""

tests/components/tuya/test_vacuum.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
ATTR_FAN_SPEED,
1414
DOMAIN as VACUUM_DOMAIN,
1515
SERVICE_LOCATE,
16+
SERVICE_PAUSE,
1617
SERVICE_RETURN_TO_BASE,
1718
SERVICE_SET_FAN_SPEED,
1819
SERVICE_START,
@@ -88,6 +89,13 @@ async def test_platform_setup_and_discovery(
8889
{},
8990
{"code": "power_go", "value": False},
9091
),
92+
(
93+
"sd_lr33znaodtyarrrz",
94+
"vacuum.v20",
95+
SERVICE_PAUSE,
96+
{},
97+
{"code": "power_go", "value": False},
98+
),
9199
],
92100
)
93101
async def test_action(

0 commit comments

Comments
 (0)