diff --git a/.coveragerc b/.coveragerc index cfc51dc700d..0a2e8e57fa8 100644 --- a/.coveragerc +++ b/.coveragerc @@ -137,6 +137,7 @@ omit = homeassistant/components/bosch_shc/switch.py homeassistant/components/braviatv/__init__.py homeassistant/components/braviatv/const.py + homeassistant/components/braviatv/entity.py homeassistant/components/braviatv/media_player.py homeassistant/components/braviatv/remote.py homeassistant/components/broadlink/__init__.py diff --git a/homeassistant/components/braviatv/const.py b/homeassistant/components/braviatv/const.py index 01746cbe963..4aa44992cbf 100644 --- a/homeassistant/components/braviatv/const.py +++ b/homeassistant/components/braviatv/const.py @@ -12,6 +12,5 @@ CONF_IGNORED_SOURCES: Final = "ignored_sources" BRAVIA_CONFIG_FILE: Final = "bravia.conf" CLIENTID_PREFIX: Final = "HomeAssistant" -DEFAULT_NAME: Final = f"{ATTR_MANUFACTURER} Bravia TV" DOMAIN: Final = "braviatv" NICKNAME: Final = "Home Assistant" diff --git a/homeassistant/components/braviatv/entity.py b/homeassistant/components/braviatv/entity.py new file mode 100644 index 00000000000..ad896ae8c5a --- /dev/null +++ b/homeassistant/components/braviatv/entity.py @@ -0,0 +1,29 @@ +"""A entity class for BraviaTV integration.""" +from homeassistant.helpers.entity import DeviceInfo +from homeassistant.helpers.update_coordinator import CoordinatorEntity + +from . import BraviaTVCoordinator +from .const import ATTR_MANUFACTURER, DOMAIN + + +class BraviaTVEntity(CoordinatorEntity[BraviaTVCoordinator]): + """BraviaTV entity class.""" + + _attr_has_entity_name = True + + def __init__( + self, + coordinator: BraviaTVCoordinator, + unique_id: str, + model: str, + ) -> None: + """Initialize the entity.""" + super().__init__(coordinator) + + self._attr_unique_id = unique_id + self._attr_device_info = DeviceInfo( + identifiers={(DOMAIN, unique_id)}, + manufacturer=ATTR_MANUFACTURER, + model=model, + name=f"{ATTR_MANUFACTURER} {model}", + ) diff --git a/homeassistant/components/braviatv/media_player.py b/homeassistant/components/braviatv/media_player.py index 745325a4c39..5d812788563 100644 --- a/homeassistant/components/braviatv/media_player.py +++ b/homeassistant/components/braviatv/media_player.py @@ -9,12 +9,10 @@ from homeassistant.components.media_player import ( from homeassistant.config_entries import ConfigEntry from homeassistant.const import STATE_OFF, STATE_PAUSED, STATE_PLAYING from homeassistant.core import HomeAssistant -from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.entity_platform import AddEntitiesCallback -from homeassistant.helpers.update_coordinator import CoordinatorEntity -from . import BraviaTVCoordinator -from .const import ATTR_MANUFACTURER, DEFAULT_NAME, DOMAIN +from .const import DOMAIN +from .entity import BraviaTVEntity async def async_setup_entry( @@ -27,19 +25,13 @@ async def async_setup_entry( coordinator = hass.data[DOMAIN][config_entry.entry_id] unique_id = config_entry.unique_id assert unique_id is not None - device_info = DeviceInfo( - identifiers={(DOMAIN, unique_id)}, - manufacturer=ATTR_MANUFACTURER, - model=config_entry.title, - name=DEFAULT_NAME, - ) async_add_entities( - [BraviaTVMediaPlayer(coordinator, DEFAULT_NAME, unique_id, device_info)] + [BraviaTVMediaPlayer(coordinator, unique_id, config_entry.title)] ) -class BraviaTVMediaPlayer(CoordinatorEntity[BraviaTVCoordinator], MediaPlayerEntity): +class BraviaTVMediaPlayer(BraviaTVEntity, MediaPlayerEntity): """Representation of a Bravia TV Media Player.""" _attr_device_class = MediaPlayerDeviceClass.TV @@ -57,21 +49,6 @@ class BraviaTVMediaPlayer(CoordinatorEntity[BraviaTVCoordinator], MediaPlayerEnt | MediaPlayerEntityFeature.STOP ) - def __init__( - self, - coordinator: BraviaTVCoordinator, - name: str, - unique_id: str, - device_info: DeviceInfo, - ) -> None: - """Initialize the entity.""" - - self._attr_device_info = device_info - self._attr_name = name - self._attr_unique_id = unique_id - - super().__init__(coordinator) - @property def state(self) -> str | None: """Return the state of the device.""" diff --git a/homeassistant/components/braviatv/remote.py b/homeassistant/components/braviatv/remote.py index 016f8363b09..f45b2d74004 100644 --- a/homeassistant/components/braviatv/remote.py +++ b/homeassistant/components/braviatv/remote.py @@ -7,12 +7,10 @@ from typing import Any from homeassistant.components.remote import ATTR_NUM_REPEATS, RemoteEntity from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant -from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.entity_platform import AddEntitiesCallback -from homeassistant.helpers.update_coordinator import CoordinatorEntity -from . import BraviaTVCoordinator -from .const import ATTR_MANUFACTURER, DEFAULT_NAME, DOMAIN +from .const import DOMAIN +from .entity import BraviaTVEntity async def async_setup_entry( @@ -25,36 +23,13 @@ async def async_setup_entry( coordinator = hass.data[DOMAIN][config_entry.entry_id] unique_id = config_entry.unique_id assert unique_id is not None - device_info = DeviceInfo( - identifiers={(DOMAIN, unique_id)}, - manufacturer=ATTR_MANUFACTURER, - model=config_entry.title, - name=DEFAULT_NAME, - ) - async_add_entities( - [BraviaTVRemote(coordinator, DEFAULT_NAME, unique_id, device_info)] - ) + async_add_entities([BraviaTVRemote(coordinator, unique_id, config_entry.title)]) -class BraviaTVRemote(CoordinatorEntity[BraviaTVCoordinator], RemoteEntity): +class BraviaTVRemote(BraviaTVEntity, RemoteEntity): """Representation of a Bravia TV Remote.""" - def __init__( - self, - coordinator: BraviaTVCoordinator, - name: str, - unique_id: str, - device_info: DeviceInfo, - ) -> None: - """Initialize the entity.""" - - self._attr_device_info = device_info - self._attr_name = name - self._attr_unique_id = unique_id - - super().__init__(coordinator) - @property def is_on(self) -> bool: """Return true if device is on."""