Use shorthand attributes in template vacuum (#70847)
This commit is contained in:
parent
21f9b19fad
commit
21badfc40f
1 changed files with 22 additions and 42 deletions
|
@ -145,83 +145,63 @@ class TemplateVacuum(TemplateEntity, StateVacuumEntity):
|
|||
self._template = config.get(CONF_VALUE_TEMPLATE)
|
||||
self._battery_level_template = config.get(CONF_BATTERY_LEVEL_TEMPLATE)
|
||||
self._fan_speed_template = config.get(CONF_FAN_SPEED_TEMPLATE)
|
||||
self._supported_features = VacuumEntityFeature.START
|
||||
self._attr_supported_features = VacuumEntityFeature.START
|
||||
|
||||
self._start_script = Script(hass, config[SERVICE_START], friendly_name, DOMAIN)
|
||||
|
||||
self._pause_script = None
|
||||
if pause_action := config.get(SERVICE_PAUSE):
|
||||
self._pause_script = Script(hass, pause_action, friendly_name, DOMAIN)
|
||||
self._supported_features |= VacuumEntityFeature.PAUSE
|
||||
self._attr_supported_features |= VacuumEntityFeature.PAUSE
|
||||
|
||||
self._stop_script = None
|
||||
if stop_action := config.get(SERVICE_STOP):
|
||||
self._stop_script = Script(hass, stop_action, friendly_name, DOMAIN)
|
||||
self._supported_features |= VacuumEntityFeature.STOP
|
||||
self._attr_supported_features |= VacuumEntityFeature.STOP
|
||||
|
||||
self._return_to_base_script = None
|
||||
if return_to_base_action := config.get(SERVICE_RETURN_TO_BASE):
|
||||
self._return_to_base_script = Script(
|
||||
hass, return_to_base_action, friendly_name, DOMAIN
|
||||
)
|
||||
self._supported_features |= VacuumEntityFeature.RETURN_HOME
|
||||
self._attr_supported_features |= VacuumEntityFeature.RETURN_HOME
|
||||
|
||||
self._clean_spot_script = None
|
||||
if clean_spot_action := config.get(SERVICE_CLEAN_SPOT):
|
||||
self._clean_spot_script = Script(
|
||||
hass, clean_spot_action, friendly_name, DOMAIN
|
||||
)
|
||||
self._supported_features |= VacuumEntityFeature.CLEAN_SPOT
|
||||
self._attr_supported_features |= VacuumEntityFeature.CLEAN_SPOT
|
||||
|
||||
self._locate_script = None
|
||||
if locate_action := config.get(SERVICE_LOCATE):
|
||||
self._locate_script = Script(hass, locate_action, friendly_name, DOMAIN)
|
||||
self._supported_features |= VacuumEntityFeature.LOCATE
|
||||
self._attr_supported_features |= VacuumEntityFeature.LOCATE
|
||||
|
||||
self._set_fan_speed_script = None
|
||||
if set_fan_speed_action := config.get(SERVICE_SET_FAN_SPEED):
|
||||
self._set_fan_speed_script = Script(
|
||||
hass, set_fan_speed_action, friendly_name, DOMAIN
|
||||
)
|
||||
self._supported_features |= VacuumEntityFeature.FAN_SPEED
|
||||
self._attr_supported_features |= VacuumEntityFeature.FAN_SPEED
|
||||
|
||||
self._state = None
|
||||
self._battery_level = None
|
||||
self._fan_speed = None
|
||||
self._attr_fan_speed = None
|
||||
|
||||
if self._template:
|
||||
self._supported_features |= VacuumEntityFeature.STATE
|
||||
self._attr_supported_features |= VacuumEntityFeature.STATE
|
||||
if self._battery_level_template:
|
||||
self._supported_features |= VacuumEntityFeature.BATTERY
|
||||
self._attr_supported_features |= VacuumEntityFeature.BATTERY
|
||||
|
||||
# List of valid fan speeds
|
||||
self._fan_speed_list = config[CONF_FAN_SPEED_LIST]
|
||||
|
||||
@property
|
||||
def supported_features(self) -> int:
|
||||
"""Flag supported features."""
|
||||
return self._supported_features
|
||||
self._attr_fan_speed_list = config[CONF_FAN_SPEED_LIST]
|
||||
|
||||
@property
|
||||
def state(self):
|
||||
"""Return the status of the vacuum cleaner."""
|
||||
return self._state
|
||||
|
||||
@property
|
||||
def battery_level(self):
|
||||
"""Return the battery level of the vacuum cleaner."""
|
||||
return self._battery_level
|
||||
|
||||
@property
|
||||
def fan_speed(self):
|
||||
"""Return the fan speed of the vacuum cleaner."""
|
||||
return self._fan_speed
|
||||
|
||||
@property
|
||||
def fan_speed_list(self) -> list:
|
||||
"""Get the list of available fan speeds."""
|
||||
return self._fan_speed_list
|
||||
|
||||
async def async_start(self):
|
||||
"""Start or resume the cleaning task."""
|
||||
await self._start_script.async_run(context=self._context)
|
||||
|
@ -266,8 +246,8 @@ class TemplateVacuum(TemplateEntity, StateVacuumEntity):
|
|||
if self._set_fan_speed_script is None:
|
||||
return
|
||||
|
||||
if fan_speed in self._fan_speed_list:
|
||||
self._fan_speed = fan_speed
|
||||
if fan_speed in self._attr_fan_speed_list:
|
||||
self._attr_fan_speed = fan_speed
|
||||
await self._set_fan_speed_script.async_run(
|
||||
{ATTR_FAN_SPEED: fan_speed}, context=self._context
|
||||
)
|
||||
|
@ -275,7 +255,7 @@ class TemplateVacuum(TemplateEntity, StateVacuumEntity):
|
|||
_LOGGER.error(
|
||||
"Received invalid fan speed: %s. Expected: %s",
|
||||
fan_speed,
|
||||
self._fan_speed_list,
|
||||
self._attr_fan_speed_list,
|
||||
)
|
||||
|
||||
async def async_added_to_hass(self):
|
||||
|
@ -334,27 +314,27 @@ class TemplateVacuum(TemplateEntity, StateVacuumEntity):
|
|||
_LOGGER.error(
|
||||
"Received invalid battery level: %s. Expected: 0-100", battery_level
|
||||
)
|
||||
self._battery_level = None
|
||||
self._attr_battery_level = None
|
||||
return
|
||||
|
||||
self._battery_level = battery_level_int
|
||||
self._attr_battery_level = battery_level_int
|
||||
|
||||
@callback
|
||||
def _update_fan_speed(self, fan_speed):
|
||||
if isinstance(fan_speed, TemplateError):
|
||||
# This is legacy behavior
|
||||
self._fan_speed = None
|
||||
self._attr_fan_speed = None
|
||||
self._state = None
|
||||
return
|
||||
|
||||
if fan_speed in self._fan_speed_list:
|
||||
self._fan_speed = fan_speed
|
||||
if fan_speed in self._attr_fan_speed_list:
|
||||
self._attr_fan_speed = fan_speed
|
||||
elif fan_speed == STATE_UNKNOWN:
|
||||
self._fan_speed = None
|
||||
self._attr_fan_speed = None
|
||||
else:
|
||||
_LOGGER.error(
|
||||
"Received invalid fan speed: %s. Expected: %s",
|
||||
fan_speed,
|
||||
self._fan_speed_list,
|
||||
self._attr_fan_speed_list,
|
||||
)
|
||||
self._fan_speed = None
|
||||
self._attr_fan_speed = None
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue