1919from .const import TUYA_DISCOVERY_NEW , DeviceCategory , DPCode
2020from .entity import TuyaEntity
2121from .models import DPCodeBooleanWrapper , DPCodeEnumWrapper
22- from .util import get_dpcode
2322
2423TUYA_MODE_RETURN_HOME = "chargego"
2524TUYA_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."""
0 commit comments