Use EntityFeature enum in components (w**) (#69468)
* Use EntityFeature enum in webostv * Use EntityFeature enum in wemo * Use EntityFeature enum in whirlpool * Use EntityFeature enum in wilight
This commit is contained in:
parent
caff81f613
commit
a6f112df80
4 changed files with 30 additions and 54 deletions
homeassistant/components
|
@ -15,22 +15,9 @@ from homeassistant import util
|
||||||
from homeassistant.components.media_player import (
|
from homeassistant.components.media_player import (
|
||||||
MediaPlayerDeviceClass,
|
MediaPlayerDeviceClass,
|
||||||
MediaPlayerEntity,
|
MediaPlayerEntity,
|
||||||
|
MediaPlayerEntityFeature,
|
||||||
)
|
)
|
||||||
from homeassistant.components.media_player.const import (
|
from homeassistant.components.media_player.const import MEDIA_TYPE_CHANNEL
|
||||||
MEDIA_TYPE_CHANNEL,
|
|
||||||
SUPPORT_NEXT_TRACK,
|
|
||||||
SUPPORT_PAUSE,
|
|
||||||
SUPPORT_PLAY,
|
|
||||||
SUPPORT_PLAY_MEDIA,
|
|
||||||
SUPPORT_PREVIOUS_TRACK,
|
|
||||||
SUPPORT_SELECT_SOURCE,
|
|
||||||
SUPPORT_STOP,
|
|
||||||
SUPPORT_TURN_OFF,
|
|
||||||
SUPPORT_TURN_ON,
|
|
||||||
SUPPORT_VOLUME_MUTE,
|
|
||||||
SUPPORT_VOLUME_SET,
|
|
||||||
SUPPORT_VOLUME_STEP,
|
|
||||||
)
|
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
ATTR_ENTITY_ID,
|
ATTR_ENTITY_ID,
|
||||||
|
@ -61,17 +48,19 @@ from .const import (
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
SUPPORT_WEBOSTV = (
|
SUPPORT_WEBOSTV = (
|
||||||
SUPPORT_TURN_OFF
|
MediaPlayerEntityFeature.TURN_OFF
|
||||||
| SUPPORT_NEXT_TRACK
|
| MediaPlayerEntityFeature.NEXT_TRACK
|
||||||
| SUPPORT_PAUSE
|
| MediaPlayerEntityFeature.PAUSE
|
||||||
| SUPPORT_PREVIOUS_TRACK
|
| MediaPlayerEntityFeature.PREVIOUS_TRACK
|
||||||
| SUPPORT_SELECT_SOURCE
|
| MediaPlayerEntityFeature.SELECT_SOURCE
|
||||||
| SUPPORT_PLAY_MEDIA
|
| MediaPlayerEntityFeature.PLAY_MEDIA
|
||||||
| SUPPORT_PLAY
|
| MediaPlayerEntityFeature.PLAY
|
||||||
| SUPPORT_STOP
|
| MediaPlayerEntityFeature.STOP
|
||||||
)
|
)
|
||||||
|
|
||||||
SUPPORT_WEBOSTV_VOLUME = SUPPORT_VOLUME_MUTE | SUPPORT_VOLUME_STEP
|
SUPPORT_WEBOSTV_VOLUME = (
|
||||||
|
MediaPlayerEntityFeature.VOLUME_MUTE | MediaPlayerEntityFeature.VOLUME_STEP
|
||||||
|
)
|
||||||
|
|
||||||
MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10)
|
MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10)
|
||||||
MIN_TIME_BETWEEN_FORCED_SCANS = timedelta(seconds=1)
|
MIN_TIME_BETWEEN_FORCED_SCANS = timedelta(seconds=1)
|
||||||
|
@ -169,7 +158,8 @@ class LgWebOSMediaPlayerEntity(RestoreEntity, MediaPlayerEntity):
|
||||||
and (state := await self.async_get_last_state()) is not None
|
and (state := await self.async_get_last_state()) is not None
|
||||||
):
|
):
|
||||||
self._supported_features = (
|
self._supported_features = (
|
||||||
state.attributes.get(ATTR_SUPPORTED_FEATURES, 0) & ~SUPPORT_TURN_ON
|
state.attributes.get(ATTR_SUPPORTED_FEATURES, 0)
|
||||||
|
& ~MediaPlayerEntityFeature.TURN_ON
|
||||||
)
|
)
|
||||||
|
|
||||||
async def async_will_remove_from_hass(self) -> None:
|
async def async_will_remove_from_hass(self) -> None:
|
||||||
|
@ -232,7 +222,11 @@ class LgWebOSMediaPlayerEntity(RestoreEntity, MediaPlayerEntity):
|
||||||
if self._client.sound_output in ("external_arc", "external_speaker"):
|
if self._client.sound_output in ("external_arc", "external_speaker"):
|
||||||
supported = supported | SUPPORT_WEBOSTV_VOLUME
|
supported = supported | SUPPORT_WEBOSTV_VOLUME
|
||||||
elif self._client.sound_output != "lineout":
|
elif self._client.sound_output != "lineout":
|
||||||
supported = supported | SUPPORT_WEBOSTV_VOLUME | SUPPORT_VOLUME_SET
|
supported = (
|
||||||
|
supported
|
||||||
|
| SUPPORT_WEBOSTV_VOLUME
|
||||||
|
| MediaPlayerEntityFeature.VOLUME_SET
|
||||||
|
)
|
||||||
|
|
||||||
self._supported_features = supported
|
self._supported_features = supported
|
||||||
|
|
||||||
|
@ -322,7 +316,7 @@ class LgWebOSMediaPlayerEntity(RestoreEntity, MediaPlayerEntity):
|
||||||
def supported_features(self) -> int:
|
def supported_features(self) -> int:
|
||||||
"""Flag media player features that are supported."""
|
"""Flag media player features that are supported."""
|
||||||
if self._wrapper.turn_on:
|
if self._wrapper.turn_on:
|
||||||
return self._supported_features | SUPPORT_TURN_ON
|
return self._supported_features | MediaPlayerEntityFeature.TURN_ON
|
||||||
|
|
||||||
return self._supported_features
|
return self._supported_features
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ from typing import Any
|
||||||
from pywemo.ouimeaux_device.humidifier import DesiredHumidity, FanMode, Humidifier
|
from pywemo.ouimeaux_device.humidifier import DesiredHumidity, FanMode, Humidifier
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
from homeassistant.components.fan import SUPPORT_SET_SPEED, FanEntity
|
from homeassistant.components.fan import FanEntity, FanEntityFeature
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant, callback
|
||||||
from homeassistant.helpers import entity_platform
|
from homeassistant.helpers import entity_platform
|
||||||
|
@ -41,9 +41,6 @@ ATTR_WATER_LEVEL = "water_level"
|
||||||
|
|
||||||
SPEED_RANGE = (FanMode.Minimum, FanMode.Maximum) # off is not included
|
SPEED_RANGE = (FanMode.Minimum, FanMode.Maximum) # off is not included
|
||||||
|
|
||||||
SUPPORTED_FEATURES = SUPPORT_SET_SPEED
|
|
||||||
|
|
||||||
|
|
||||||
SET_HUMIDITY_SCHEMA = {
|
SET_HUMIDITY_SCHEMA = {
|
||||||
vol.Required(ATTR_TARGET_HUMIDITY): vol.All(
|
vol.Required(ATTR_TARGET_HUMIDITY): vol.All(
|
||||||
vol.Coerce(float), vol.Range(min=0, max=100)
|
vol.Coerce(float), vol.Range(min=0, max=100)
|
||||||
|
@ -87,6 +84,7 @@ async def async_setup_entry(
|
||||||
class WemoHumidifier(WemoBinaryStateEntity, FanEntity):
|
class WemoHumidifier(WemoBinaryStateEntity, FanEntity):
|
||||||
"""Representation of a WeMo humidifier."""
|
"""Representation of a WeMo humidifier."""
|
||||||
|
|
||||||
|
_attr_supported_features = FanEntityFeature.SET_SPEED
|
||||||
wemo: Humidifier
|
wemo: Humidifier
|
||||||
|
|
||||||
def __init__(self, coordinator: DeviceCoordinator) -> None:
|
def __init__(self, coordinator: DeviceCoordinator) -> None:
|
||||||
|
@ -124,11 +122,6 @@ class WemoHumidifier(WemoBinaryStateEntity, FanEntity):
|
||||||
"""Return the number of speeds the fan supports."""
|
"""Return the number of speeds the fan supports."""
|
||||||
return int_states_in_range(SPEED_RANGE)
|
return int_states_in_range(SPEED_RANGE)
|
||||||
|
|
||||||
@property
|
|
||||||
def supported_features(self) -> int:
|
|
||||||
"""Flag supported features."""
|
|
||||||
return SUPPORTED_FEATURES
|
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def _handle_coordinator_update(self) -> None:
|
def _handle_coordinator_update(self) -> None:
|
||||||
"""Handle updated data from the coordinator."""
|
"""Handle updated data from the coordinator."""
|
||||||
|
|
|
@ -6,7 +6,7 @@ import aiohttp
|
||||||
from whirlpool.aircon import Aircon, FanSpeed as AirconFanSpeed, Mode as AirconMode
|
from whirlpool.aircon import Aircon, FanSpeed as AirconFanSpeed, Mode as AirconMode
|
||||||
from whirlpool.auth import Auth
|
from whirlpool.auth import Auth
|
||||||
|
|
||||||
from homeassistant.components.climate import ClimateEntity
|
from homeassistant.components.climate import ClimateEntity, ClimateEntityFeature
|
||||||
from homeassistant.components.climate.const import (
|
from homeassistant.components.climate.const import (
|
||||||
FAN_AUTO,
|
FAN_AUTO,
|
||||||
FAN_HIGH,
|
FAN_HIGH,
|
||||||
|
@ -17,9 +17,6 @@ from homeassistant.components.climate.const import (
|
||||||
HVAC_MODE_FAN_ONLY,
|
HVAC_MODE_FAN_ONLY,
|
||||||
HVAC_MODE_HEAT,
|
HVAC_MODE_HEAT,
|
||||||
HVAC_MODE_OFF,
|
HVAC_MODE_OFF,
|
||||||
SUPPORT_FAN_MODE,
|
|
||||||
SUPPORT_SWING_MODE,
|
|
||||||
SUPPORT_TARGET_TEMPERATURE,
|
|
||||||
SWING_HORIZONTAL,
|
SWING_HORIZONTAL,
|
||||||
SWING_OFF,
|
SWING_OFF,
|
||||||
)
|
)
|
||||||
|
@ -89,7 +86,9 @@ class AirConEntity(ClimateEntity):
|
||||||
_attr_max_temp = SUPPORTED_MAX_TEMP
|
_attr_max_temp = SUPPORTED_MAX_TEMP
|
||||||
_attr_min_temp = SUPPORTED_MIN_TEMP
|
_attr_min_temp = SUPPORTED_MIN_TEMP
|
||||||
_attr_supported_features = (
|
_attr_supported_features = (
|
||||||
SUPPORT_TARGET_TEMPERATURE | SUPPORT_FAN_MODE | SUPPORT_SWING_MODE
|
ClimateEntityFeature.TARGET_TEMPERATURE
|
||||||
|
| ClimateEntityFeature.FAN_MODE
|
||||||
|
| ClimateEntityFeature.SWING_MODE
|
||||||
)
|
)
|
||||||
_attr_swing_modes = SUPPORTED_SWING_MODES
|
_attr_swing_modes = SUPPORTED_SWING_MODES
|
||||||
_attr_target_temperature_step = SUPPORTED_TARGET_TEMPERATURE_STEP
|
_attr_target_temperature_step = SUPPORTED_TARGET_TEMPERATURE_STEP
|
||||||
|
|
|
@ -12,12 +12,7 @@ from pywilight.const import (
|
||||||
WL_SPEED_MEDIUM,
|
WL_SPEED_MEDIUM,
|
||||||
)
|
)
|
||||||
|
|
||||||
from homeassistant.components.fan import (
|
from homeassistant.components.fan import DIRECTION_FORWARD, FanEntity, FanEntityFeature
|
||||||
DIRECTION_FORWARD,
|
|
||||||
SUPPORT_DIRECTION,
|
|
||||||
SUPPORT_SET_SPEED,
|
|
||||||
FanEntity,
|
|
||||||
)
|
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
|
@ -30,8 +25,6 @@ from . import DOMAIN, WiLightDevice
|
||||||
|
|
||||||
ORDERED_NAMED_FAN_SPEEDS = [WL_SPEED_LOW, WL_SPEED_MEDIUM, WL_SPEED_HIGH]
|
ORDERED_NAMED_FAN_SPEEDS = [WL_SPEED_LOW, WL_SPEED_MEDIUM, WL_SPEED_HIGH]
|
||||||
|
|
||||||
SUPPORTED_FEATURES = SUPPORT_SET_SPEED | SUPPORT_DIRECTION
|
|
||||||
|
|
||||||
|
|
||||||
async def async_setup_entry(
|
async def async_setup_entry(
|
||||||
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
|
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
|
||||||
|
@ -57,17 +50,14 @@ async def async_setup_entry(
|
||||||
class WiLightFan(WiLightDevice, FanEntity):
|
class WiLightFan(WiLightDevice, FanEntity):
|
||||||
"""Representation of a WiLights fan."""
|
"""Representation of a WiLights fan."""
|
||||||
|
|
||||||
|
_attr_supported_features = FanEntityFeature.SET_SPEED | FanEntityFeature.DIRECTION
|
||||||
|
|
||||||
def __init__(self, api_device, index, item_name):
|
def __init__(self, api_device, index, item_name):
|
||||||
"""Initialize the device."""
|
"""Initialize the device."""
|
||||||
super().__init__(api_device, index, item_name)
|
super().__init__(api_device, index, item_name)
|
||||||
# Initialize the WiLights fan.
|
# Initialize the WiLights fan.
|
||||||
self._direction = WL_DIRECTION_FORWARD
|
self._direction = WL_DIRECTION_FORWARD
|
||||||
|
|
||||||
@property
|
|
||||||
def supported_features(self):
|
|
||||||
"""Flag supported features."""
|
|
||||||
return SUPPORTED_FEATURES
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def icon(self):
|
def icon(self):
|
||||||
"""Return the icon of device based on its type."""
|
"""Return the icon of device based on its type."""
|
||||||
|
|
Loading…
Add table
Reference in a new issue