diff --git a/homeassistant/components/arcam_fmj/coordinator.py b/homeassistant/components/arcam_fmj/coordinator.py index 268a0297c852..83faef37d10f 100644 --- a/homeassistant/components/arcam_fmj/coordinator.py +++ b/homeassistant/components/arcam_fmj/coordinator.py @@ -66,6 +66,7 @@ class ArcamFmjCoordinator(DataUpdateCoordinator[None]): model="Arcam FMJ AVR", name=name, ) + self.zone_unique_id = f"{unique_id}-{zone}" if zone != 1: self.device_info["via_device"] = (DOMAIN, unique_id) diff --git a/homeassistant/components/arcam_fmj/entity.py b/homeassistant/components/arcam_fmj/entity.py new file mode 100644 index 000000000000..7c1bac6dd68f --- /dev/null +++ b/homeassistant/components/arcam_fmj/entity.py @@ -0,0 +1,20 @@ +"""Base entity for Arcam FMJ integration.""" + +from __future__ import annotations + +from homeassistant.helpers.update_coordinator import CoordinatorEntity + +from .coordinator import ArcamFmjCoordinator + + +class ArcamFmjEntity(CoordinatorEntity[ArcamFmjCoordinator]): + """Base entity for Arcam FMJ.""" + + _attr_has_entity_name = True + + def __init__(self, coordinator: ArcamFmjCoordinator) -> None: + """Initialize the entity.""" + super().__init__(coordinator) + self._attr_device_info = coordinator.device_info + self._attr_entity_registry_enabled_default = coordinator.state.zn == 1 + self._attr_unique_id = coordinator.zone_unique_id diff --git a/homeassistant/components/arcam_fmj/media_player.py b/homeassistant/components/arcam_fmj/media_player.py index 76fa06cdf907..04451c692ce0 100644 --- a/homeassistant/components/arcam_fmj/media_player.py +++ b/homeassistant/components/arcam_fmj/media_player.py @@ -22,10 +22,10 @@ from homeassistant.const import ATTR_ENTITY_ID from homeassistant.core import HomeAssistant from homeassistant.exceptions import HomeAssistantError from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback -from homeassistant.helpers.update_coordinator import CoordinatorEntity from .const import EVENT_TURN_ON from .coordinator import ArcamFmjConfigEntry, ArcamFmjCoordinator +from .entity import ArcamFmjEntity _LOGGER = logging.getLogger(__name__) @@ -39,14 +39,7 @@ async def async_setup_entry( coordinators = config_entry.runtime_data.coordinators async_add_entities( - [ - ArcamFmj( - config_entry.title, - coordinators[zone], - config_entry.unique_id or config_entry.entry_id, - ) - for zone in (1, 2) - ], + [ArcamFmj(coordinators[zone]) for zone in (1, 2)], ) @@ -67,17 +60,10 @@ def convert_exception[**_P, _R]( return _convert_exception -class ArcamFmj(CoordinatorEntity[ArcamFmjCoordinator], MediaPlayerEntity): +class ArcamFmj(ArcamFmjEntity, MediaPlayerEntity): """Representation of a media device.""" - _attr_has_entity_name = True - - def __init__( - self, - device_name: str, - coordinator: ArcamFmjCoordinator, - uuid: str, - ) -> None: + def __init__(self, coordinator: ArcamFmjCoordinator) -> None: """Initialize device.""" super().__init__(coordinator) self._state = coordinator.state @@ -93,9 +79,6 @@ class ArcamFmj(CoordinatorEntity[ArcamFmjCoordinator], MediaPlayerEntity): ) if self._state.zn == 1: self._attr_supported_features |= MediaPlayerEntityFeature.SELECT_SOUND_MODE - self._attr_unique_id = f"{uuid}-{self._state.zn}" - self._attr_entity_registry_enabled_default = self._state.zn == 1 - self._attr_device_info = coordinator.device_info @property def state(self) -> MediaPlayerState: