Use EntityFeature in homekit_controller (#69404)

This commit is contained in:
epenet 2022-04-06 12:04:58 +02:00 committed by GitHub
parent 999e2f3bf0
commit a5b919ec6b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 64 additions and 79 deletions

View File

@ -6,11 +6,9 @@ from typing import Any
from aiohomekit.model.characteristics import CharacteristicsTypes from aiohomekit.model.characteristics import CharacteristicsTypes
from aiohomekit.model.services import Service, ServicesTypes from aiohomekit.model.services import Service, ServicesTypes
from homeassistant.components.alarm_control_panel import AlarmControlPanelEntity from homeassistant.components.alarm_control_panel import (
from homeassistant.components.alarm_control_panel.const import ( AlarmControlPanelEntity,
SUPPORT_ALARM_ARM_AWAY, AlarmControlPanelEntityFeature,
SUPPORT_ALARM_ARM_HOME,
SUPPORT_ALARM_ARM_NIGHT,
) )
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ( from homeassistant.const import (
@ -67,6 +65,12 @@ async def async_setup_entry(
class HomeKitAlarmControlPanelEntity(HomeKitEntity, AlarmControlPanelEntity): class HomeKitAlarmControlPanelEntity(HomeKitEntity, AlarmControlPanelEntity):
"""Representation of a Homekit Alarm Control Panel.""" """Representation of a Homekit Alarm Control Panel."""
_attr_supported_features = (
AlarmControlPanelEntityFeature.ARM_HOME
| AlarmControlPanelEntityFeature.ARM_AWAY
| AlarmControlPanelEntityFeature.ARM_NIGHT
)
def get_characteristic_types(self) -> list[str]: def get_characteristic_types(self) -> list[str]:
"""Define the homekit characteristics the entity cares about.""" """Define the homekit characteristics the entity cares about."""
return [ return [
@ -87,11 +91,6 @@ class HomeKitAlarmControlPanelEntity(HomeKitEntity, AlarmControlPanelEntity):
self.service.value(CharacteristicsTypes.SECURITY_SYSTEM_STATE_CURRENT) self.service.value(CharacteristicsTypes.SECURITY_SYSTEM_STATE_CURRENT)
] ]
@property
def supported_features(self) -> int:
"""Return the list of supported features."""
return SUPPORT_ALARM_ARM_HOME | SUPPORT_ALARM_ARM_AWAY | SUPPORT_ALARM_ARM_NIGHT
async def async_alarm_disarm(self, code: str | None = None) -> None: async def async_alarm_disarm(self, code: str | None = None) -> None:
"""Send disarm command.""" """Send disarm command."""
await self.set_alarm_state(STATE_ALARM_DISARMED, code) await self.set_alarm_state(STATE_ALARM_DISARMED, code)

View File

@ -20,6 +20,7 @@ from homeassistant.components.climate import (
DEFAULT_MAX_TEMP, DEFAULT_MAX_TEMP,
DEFAULT_MIN_TEMP, DEFAULT_MIN_TEMP,
ClimateEntity, ClimateEntity,
ClimateEntityFeature,
) )
from homeassistant.components.climate.const import ( from homeassistant.components.climate.const import (
ATTR_HVAC_MODE, ATTR_HVAC_MODE,
@ -33,10 +34,6 @@ from homeassistant.components.climate.const import (
HVAC_MODE_HEAT, HVAC_MODE_HEAT,
HVAC_MODE_HEAT_COOL, HVAC_MODE_HEAT_COOL,
HVAC_MODE_OFF, HVAC_MODE_OFF,
SUPPORT_SWING_MODE,
SUPPORT_TARGET_HUMIDITY,
SUPPORT_TARGET_TEMPERATURE,
SUPPORT_TARGET_TEMPERATURE_RANGE,
SWING_OFF, SWING_OFF,
SWING_VERTICAL, SWING_VERTICAL,
) )
@ -304,7 +301,7 @@ class HomeKitHeaterCoolerEntity(HomeKitEntity, ClimateEntity):
def swing_mode(self) -> str: def swing_mode(self) -> str:
"""Return the swing setting. """Return the swing setting.
Requires SUPPORT_SWING_MODE. Requires ClimateEntityFeature.SWING_MODE.
""" """
value = self.service.value(CharacteristicsTypes.SWING_MODE) value = self.service.value(CharacteristicsTypes.SWING_MODE)
return SWING_MODE_HOMEKIT_TO_HASS[value] return SWING_MODE_HOMEKIT_TO_HASS[value]
@ -313,7 +310,7 @@ class HomeKitHeaterCoolerEntity(HomeKitEntity, ClimateEntity):
def swing_modes(self) -> list[str]: def swing_modes(self) -> list[str]:
"""Return the list of available swing modes. """Return the list of available swing modes.
Requires SUPPORT_SWING_MODE. Requires ClimateEntityFeature.SWING_MODE.
""" """
valid_values = clamp_enum_to_char( valid_values = clamp_enum_to_char(
SwingModeValues, SwingModeValues,
@ -333,13 +330,13 @@ class HomeKitHeaterCoolerEntity(HomeKitEntity, ClimateEntity):
features = 0 features = 0
if self.service.has(CharacteristicsTypes.TEMPERATURE_COOLING_THRESHOLD): if self.service.has(CharacteristicsTypes.TEMPERATURE_COOLING_THRESHOLD):
features |= SUPPORT_TARGET_TEMPERATURE features |= ClimateEntityFeature.TARGET_TEMPERATURE
if self.service.has(CharacteristicsTypes.TEMPERATURE_HEATING_THRESHOLD): if self.service.has(CharacteristicsTypes.TEMPERATURE_HEATING_THRESHOLD):
features |= SUPPORT_TARGET_TEMPERATURE features |= ClimateEntityFeature.TARGET_TEMPERATURE
if self.service.has(CharacteristicsTypes.SWING_MODE): if self.service.has(CharacteristicsTypes.SWING_MODE):
features |= SUPPORT_SWING_MODE features |= ClimateEntityFeature.SWING_MODE
return features return features
@ -384,7 +381,9 @@ class HomeKitClimateEntity(HomeKitEntity, ClimateEntity):
if ( if (
(mode == HVAC_MODE_HEAT_COOL) (mode == HVAC_MODE_HEAT_COOL)
and (SUPPORT_TARGET_TEMPERATURE_RANGE & self.supported_features) and (
ClimateEntityFeature.TARGET_TEMPERATURE_RANGE & self.supported_features
)
and heat_temp and heat_temp
and cool_temp and cool_temp
): ):
@ -429,7 +428,9 @@ class HomeKitClimateEntity(HomeKitEntity, ClimateEntity):
value = self.service.value(CharacteristicsTypes.HEATING_COOLING_TARGET) value = self.service.value(CharacteristicsTypes.HEATING_COOLING_TARGET)
if (MODE_HOMEKIT_TO_HASS.get(value) in {HVAC_MODE_HEAT, HVAC_MODE_COOL}) or ( if (MODE_HOMEKIT_TO_HASS.get(value) in {HVAC_MODE_HEAT, HVAC_MODE_COOL}) or (
(MODE_HOMEKIT_TO_HASS.get(value) in {HVAC_MODE_HEAT_COOL}) (MODE_HOMEKIT_TO_HASS.get(value) in {HVAC_MODE_HEAT_COOL})
and not (SUPPORT_TARGET_TEMPERATURE_RANGE & self.supported_features) and not (
ClimateEntityFeature.TARGET_TEMPERATURE_RANGE & self.supported_features
)
): ):
return self.service.value(CharacteristicsTypes.TEMPERATURE_TARGET) return self.service.value(CharacteristicsTypes.TEMPERATURE_TARGET)
return None return None
@ -439,7 +440,7 @@ class HomeKitClimateEntity(HomeKitEntity, ClimateEntity):
"""Return the highbound target temperature we try to reach.""" """Return the highbound target temperature we try to reach."""
value = self.service.value(CharacteristicsTypes.HEATING_COOLING_TARGET) value = self.service.value(CharacteristicsTypes.HEATING_COOLING_TARGET)
if (MODE_HOMEKIT_TO_HASS.get(value) in {HVAC_MODE_HEAT_COOL}) and ( if (MODE_HOMEKIT_TO_HASS.get(value) in {HVAC_MODE_HEAT_COOL}) and (
SUPPORT_TARGET_TEMPERATURE_RANGE & self.supported_features ClimateEntityFeature.TARGET_TEMPERATURE_RANGE & self.supported_features
): ):
return self.service.value( return self.service.value(
CharacteristicsTypes.TEMPERATURE_COOLING_THRESHOLD CharacteristicsTypes.TEMPERATURE_COOLING_THRESHOLD
@ -451,7 +452,7 @@ class HomeKitClimateEntity(HomeKitEntity, ClimateEntity):
"""Return the lowbound target temperature we try to reach.""" """Return the lowbound target temperature we try to reach."""
value = self.service.value(CharacteristicsTypes.HEATING_COOLING_TARGET) value = self.service.value(CharacteristicsTypes.HEATING_COOLING_TARGET)
if (MODE_HOMEKIT_TO_HASS.get(value) in {HVAC_MODE_HEAT_COOL}) and ( if (MODE_HOMEKIT_TO_HASS.get(value) in {HVAC_MODE_HEAT_COOL}) and (
SUPPORT_TARGET_TEMPERATURE_RANGE & self.supported_features ClimateEntityFeature.TARGET_TEMPERATURE_RANGE & self.supported_features
): ):
return self.service.value( return self.service.value(
CharacteristicsTypes.TEMPERATURE_HEATING_THRESHOLD CharacteristicsTypes.TEMPERATURE_HEATING_THRESHOLD
@ -463,7 +464,7 @@ class HomeKitClimateEntity(HomeKitEntity, ClimateEntity):
"""Return the minimum target temp.""" """Return the minimum target temp."""
value = self.service.value(CharacteristicsTypes.HEATING_COOLING_TARGET) value = self.service.value(CharacteristicsTypes.HEATING_COOLING_TARGET)
if (MODE_HOMEKIT_TO_HASS.get(value) in {HVAC_MODE_HEAT_COOL}) and ( if (MODE_HOMEKIT_TO_HASS.get(value) in {HVAC_MODE_HEAT_COOL}) and (
SUPPORT_TARGET_TEMPERATURE_RANGE & self.supported_features ClimateEntityFeature.TARGET_TEMPERATURE_RANGE & self.supported_features
): ):
min_temp = self.service[ min_temp = self.service[
CharacteristicsTypes.TEMPERATURE_HEATING_THRESHOLD CharacteristicsTypes.TEMPERATURE_HEATING_THRESHOLD
@ -485,7 +486,7 @@ class HomeKitClimateEntity(HomeKitEntity, ClimateEntity):
"""Return the maximum target temp.""" """Return the maximum target temp."""
value = self.service.value(CharacteristicsTypes.HEATING_COOLING_TARGET) value = self.service.value(CharacteristicsTypes.HEATING_COOLING_TARGET)
if (MODE_HOMEKIT_TO_HASS.get(value) in {HVAC_MODE_HEAT_COOL}) and ( if (MODE_HOMEKIT_TO_HASS.get(value) in {HVAC_MODE_HEAT_COOL}) and (
SUPPORT_TARGET_TEMPERATURE_RANGE & self.supported_features ClimateEntityFeature.TARGET_TEMPERATURE_RANGE & self.supported_features
): ):
max_temp = self.service[ max_temp = self.service[
CharacteristicsTypes.TEMPERATURE_COOLING_THRESHOLD CharacteristicsTypes.TEMPERATURE_COOLING_THRESHOLD
@ -566,15 +567,15 @@ class HomeKitClimateEntity(HomeKitEntity, ClimateEntity):
features = 0 features = 0
if self.service.has(CharacteristicsTypes.TEMPERATURE_TARGET): if self.service.has(CharacteristicsTypes.TEMPERATURE_TARGET):
features |= SUPPORT_TARGET_TEMPERATURE features |= ClimateEntityFeature.TARGET_TEMPERATURE
if self.service.has( if self.service.has(
CharacteristicsTypes.TEMPERATURE_COOLING_THRESHOLD CharacteristicsTypes.TEMPERATURE_COOLING_THRESHOLD
) and self.service.has(CharacteristicsTypes.TEMPERATURE_HEATING_THRESHOLD): ) and self.service.has(CharacteristicsTypes.TEMPERATURE_HEATING_THRESHOLD):
features |= SUPPORT_TARGET_TEMPERATURE_RANGE features |= ClimateEntityFeature.TARGET_TEMPERATURE_RANGE
if self.service.has(CharacteristicsTypes.RELATIVE_HUMIDITY_TARGET): if self.service.has(CharacteristicsTypes.RELATIVE_HUMIDITY_TARGET):
features |= SUPPORT_TARGET_HUMIDITY features |= ClimateEntityFeature.TARGET_HUMIDITY
return features return features

View File

@ -9,15 +9,9 @@ from aiohomekit.model.services import Service, ServicesTypes
from homeassistant.components.cover import ( from homeassistant.components.cover import (
ATTR_POSITION, ATTR_POSITION,
ATTR_TILT_POSITION, ATTR_TILT_POSITION,
SUPPORT_CLOSE,
SUPPORT_CLOSE_TILT,
SUPPORT_OPEN,
SUPPORT_OPEN_TILT,
SUPPORT_SET_POSITION,
SUPPORT_SET_TILT_POSITION,
SUPPORT_STOP,
CoverDeviceClass, CoverDeviceClass,
CoverEntity, CoverEntity,
CoverEntityFeature,
) )
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.const import STATE_CLOSED, STATE_CLOSING, STATE_OPEN, STATE_OPENING from homeassistant.const import STATE_CLOSED, STATE_CLOSING, STATE_OPEN, STATE_OPENING
@ -65,6 +59,7 @@ class HomeKitGarageDoorCover(HomeKitEntity, CoverEntity):
"""Representation of a HomeKit Garage Door.""" """Representation of a HomeKit Garage Door."""
_attr_device_class = CoverDeviceClass.GARAGE _attr_device_class = CoverDeviceClass.GARAGE
_attr_supported_features = CoverEntityFeature.OPEN | CoverEntityFeature.CLOSE
def get_characteristic_types(self) -> list[str]: def get_characteristic_types(self) -> list[str]:
"""Define the homekit characteristics the entity cares about.""" """Define the homekit characteristics the entity cares about."""
@ -74,11 +69,6 @@ class HomeKitGarageDoorCover(HomeKitEntity, CoverEntity):
CharacteristicsTypes.OBSTRUCTION_DETECTED, CharacteristicsTypes.OBSTRUCTION_DETECTED,
] ]
@property
def supported_features(self) -> int:
"""Flag supported features."""
return SUPPORT_OPEN | SUPPORT_CLOSE
@property @property
def _state(self) -> str: def _state(self) -> str:
"""Return the current state of the garage door.""" """Return the current state of the garage door."""
@ -143,10 +133,14 @@ class HomeKitWindowCover(HomeKitEntity, CoverEntity):
@property @property
def supported_features(self) -> int: def supported_features(self) -> int:
"""Flag supported features.""" """Flag supported features."""
features = SUPPORT_OPEN | SUPPORT_CLOSE | SUPPORT_SET_POSITION features = (
CoverEntityFeature.OPEN
| CoverEntityFeature.CLOSE
| CoverEntityFeature.SET_POSITION
)
if self.service.has(CharacteristicsTypes.POSITION_HOLD): if self.service.has(CharacteristicsTypes.POSITION_HOLD):
features |= SUPPORT_STOP features |= CoverEntityFeature.STOP
supports_tilt = any( supports_tilt = any(
( (
@ -157,7 +151,9 @@ class HomeKitWindowCover(HomeKitEntity, CoverEntity):
if supports_tilt: if supports_tilt:
features |= ( features |= (
SUPPORT_OPEN_TILT | SUPPORT_CLOSE_TILT | SUPPORT_SET_TILT_POSITION CoverEntityFeature.OPEN_TILT
| CoverEntityFeature.CLOSE_TILT
| CoverEntityFeature.SET_TILT_POSITION
) )
return features return features

View File

@ -9,10 +9,8 @@ from aiohomekit.model.services import Service, ServicesTypes
from homeassistant.components.fan import ( from homeassistant.components.fan import (
DIRECTION_FORWARD, DIRECTION_FORWARD,
DIRECTION_REVERSE, DIRECTION_REVERSE,
SUPPORT_DIRECTION,
SUPPORT_OSCILLATE,
SUPPORT_SET_SPEED,
FanEntity, 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
@ -76,13 +74,13 @@ class BaseHomeKitFan(HomeKitEntity, FanEntity):
features = 0 features = 0
if self.service.has(CharacteristicsTypes.ROTATION_DIRECTION): if self.service.has(CharacteristicsTypes.ROTATION_DIRECTION):
features |= SUPPORT_DIRECTION features |= FanEntityFeature.DIRECTION
if self.service.has(CharacteristicsTypes.ROTATION_SPEED): if self.service.has(CharacteristicsTypes.ROTATION_SPEED):
features |= SUPPORT_SET_SPEED features |= FanEntityFeature.SET_SPEED
if self.service.has(CharacteristicsTypes.SWING_MODE): if self.service.has(CharacteristicsTypes.SWING_MODE):
features |= SUPPORT_OSCILLATE features |= FanEntityFeature.OSCILLATE
return features return features
@ -127,7 +125,10 @@ class BaseHomeKitFan(HomeKitEntity, FanEntity):
if not self.is_on: if not self.is_on:
characteristics[self.on_characteristic] = True characteristics[self.on_characteristic] = True
if percentage is not None and self.supported_features & SUPPORT_SET_SPEED: if (
percentage is not None
and self.supported_features & FanEntityFeature.SET_SPEED
):
characteristics[CharacteristicsTypes.ROTATION_SPEED] = percentage characteristics[CharacteristicsTypes.ROTATION_SPEED] = percentage
if characteristics: if characteristics:

View File

@ -6,13 +6,16 @@ from typing import Any
from aiohomekit.model.characteristics import CharacteristicsTypes from aiohomekit.model.characteristics import CharacteristicsTypes
from aiohomekit.model.services import Service, ServicesTypes from aiohomekit.model.services import Service, ServicesTypes
from homeassistant.components.humidifier import HumidifierDeviceClass, HumidifierEntity from homeassistant.components.humidifier import (
HumidifierDeviceClass,
HumidifierEntity,
HumidifierEntityFeature,
)
from homeassistant.components.humidifier.const import ( from homeassistant.components.humidifier.const import (
DEFAULT_MAX_HUMIDITY, DEFAULT_MAX_HUMIDITY,
DEFAULT_MIN_HUMIDITY, DEFAULT_MIN_HUMIDITY,
MODE_AUTO, MODE_AUTO,
MODE_NORMAL, MODE_NORMAL,
SUPPORT_MODES,
) )
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant, callback from homeassistant.core import HomeAssistant, callback
@ -20,8 +23,6 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import KNOWN_DEVICES, HomeKitEntity from . import KNOWN_DEVICES, HomeKitEntity
SUPPORT_FLAGS = 0
HK_MODE_TO_HA = { HK_MODE_TO_HA = {
0: "off", 0: "off",
1: MODE_AUTO, 1: MODE_AUTO,
@ -40,6 +41,7 @@ class HomeKitHumidifier(HomeKitEntity, HumidifierEntity):
"""Representation of a HomeKit Controller Humidifier.""" """Representation of a HomeKit Controller Humidifier."""
_attr_device_class = HumidifierDeviceClass.HUMIDIFIER _attr_device_class = HumidifierDeviceClass.HUMIDIFIER
_attr_supported_features = HumidifierEntityFeature.MODES
def get_characteristic_types(self) -> list[str]: def get_characteristic_types(self) -> list[str]:
"""Define the homekit characteristics the entity cares about.""" """Define the homekit characteristics the entity cares about."""
@ -50,11 +52,6 @@ class HomeKitHumidifier(HomeKitEntity, HumidifierEntity):
CharacteristicsTypes.RELATIVE_HUMIDITY_HUMIDIFIER_THRESHOLD, CharacteristicsTypes.RELATIVE_HUMIDITY_HUMIDIFIER_THRESHOLD,
] ]
@property
def supported_features(self) -> int:
"""Return the list of supported features."""
return SUPPORT_FLAGS | SUPPORT_MODES
@property @property
def is_on(self) -> bool: def is_on(self) -> bool:
"""Return true if device is on.""" """Return true if device is on."""
@ -79,7 +76,7 @@ class HomeKitHumidifier(HomeKitEntity, HumidifierEntity):
def mode(self) -> str | None: def mode(self) -> str | None:
"""Return the current mode, e.g., home, auto, baby. """Return the current mode, e.g., home, auto, baby.
Requires SUPPORT_MODES. Requires HumidifierEntityFeature.MODES.
""" """
mode = self.service.value( mode = self.service.value(
CharacteristicsTypes.CURRENT_HUMIDIFIER_DEHUMIDIFIER_STATE CharacteristicsTypes.CURRENT_HUMIDIFIER_DEHUMIDIFIER_STATE
@ -90,7 +87,7 @@ class HomeKitHumidifier(HomeKitEntity, HumidifierEntity):
def available_modes(self) -> list[str] | None: def available_modes(self) -> list[str] | None:
"""Return a list of available modes. """Return a list of available modes.
Requires SUPPORT_MODES. Requires HumidifierEntityFeature.MODES.
""" """
available_modes = [ available_modes = [
MODE_NORMAL, MODE_NORMAL,
@ -147,6 +144,7 @@ class HomeKitDehumidifier(HomeKitEntity, HumidifierEntity):
"""Representation of a HomeKit Controller Humidifier.""" """Representation of a HomeKit Controller Humidifier."""
_attr_device_class = HumidifierDeviceClass.DEHUMIDIFIER _attr_device_class = HumidifierDeviceClass.DEHUMIDIFIER
_attr_supported_features = HumidifierEntityFeature.MODES
def get_characteristic_types(self) -> list[str]: def get_characteristic_types(self) -> list[str]:
"""Define the homekit characteristics the entity cares about.""" """Define the homekit characteristics the entity cares about."""
@ -158,11 +156,6 @@ class HomeKitDehumidifier(HomeKitEntity, HumidifierEntity):
CharacteristicsTypes.RELATIVE_HUMIDITY_DEHUMIDIFIER_THRESHOLD, CharacteristicsTypes.RELATIVE_HUMIDITY_DEHUMIDIFIER_THRESHOLD,
] ]
@property
def supported_features(self) -> int:
"""Return the list of supported features."""
return SUPPORT_FLAGS | SUPPORT_MODES
@property @property
def is_on(self) -> bool: def is_on(self) -> bool:
"""Return true if device is on.""" """Return true if device is on."""
@ -187,7 +180,7 @@ class HomeKitDehumidifier(HomeKitEntity, HumidifierEntity):
def mode(self) -> str | None: def mode(self) -> str | None:
"""Return the current mode, e.g., home, auto, baby. """Return the current mode, e.g., home, auto, baby.
Requires SUPPORT_MODES. Requires HumidifierEntityFeature.MODES.
""" """
mode = self.service.value( mode = self.service.value(
CharacteristicsTypes.CURRENT_HUMIDIFIER_DEHUMIDIFIER_STATE CharacteristicsTypes.CURRENT_HUMIDIFIER_DEHUMIDIFIER_STATE
@ -198,7 +191,7 @@ class HomeKitDehumidifier(HomeKitEntity, HumidifierEntity):
def available_modes(self) -> list[str] | None: def available_modes(self) -> list[str] | None:
"""Return a list of available modes. """Return a list of available modes.
Requires SUPPORT_MODES. Requires HumidifierEntityFeature.MODES.
""" """
available_modes = [ available_modes = [
MODE_NORMAL, MODE_NORMAL,

View File

@ -15,12 +15,7 @@ from aiohomekit.utils import clamp_enum_to_char
from homeassistant.components.media_player import ( from homeassistant.components.media_player import (
MediaPlayerDeviceClass, MediaPlayerDeviceClass,
MediaPlayerEntity, MediaPlayerEntity,
) MediaPlayerEntityFeature,
from homeassistant.components.media_player.const import (
SUPPORT_PAUSE,
SUPPORT_PLAY,
SUPPORT_SELECT_SOURCE,
SUPPORT_STOP,
) )
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ( from homeassistant.const import (
@ -89,23 +84,23 @@ class HomeKitTelevision(HomeKitEntity, MediaPlayerEntity):
features = 0 features = 0
if self.service.has(CharacteristicsTypes.ACTIVE_IDENTIFIER): if self.service.has(CharacteristicsTypes.ACTIVE_IDENTIFIER):
features |= SUPPORT_SELECT_SOURCE features |= MediaPlayerEntityFeature.SELECT_SOURCE
if self.service.has(CharacteristicsTypes.TARGET_MEDIA_STATE): if self.service.has(CharacteristicsTypes.TARGET_MEDIA_STATE):
if TargetMediaStateValues.PAUSE in self.supported_media_states: if TargetMediaStateValues.PAUSE in self.supported_media_states:
features |= SUPPORT_PAUSE features |= MediaPlayerEntityFeature.PAUSE
if TargetMediaStateValues.PLAY in self.supported_media_states: if TargetMediaStateValues.PLAY in self.supported_media_states:
features |= SUPPORT_PLAY features |= MediaPlayerEntityFeature.PLAY
if TargetMediaStateValues.STOP in self.supported_media_states: if TargetMediaStateValues.STOP in self.supported_media_states:
features |= SUPPORT_STOP features |= MediaPlayerEntityFeature.STOP
if ( if (
self.service.has(CharacteristicsTypes.REMOTE_KEY) self.service.has(CharacteristicsTypes.REMOTE_KEY)
and RemoteKeyValues.PLAY_PAUSE in self.supported_remote_keys and RemoteKeyValues.PLAY_PAUSE in self.supported_remote_keys
): ):
features |= SUPPORT_PAUSE | SUPPORT_PLAY features |= MediaPlayerEntityFeature.PAUSE | MediaPlayerEntityFeature.PLAY
return features return features