1 """The MusicCast integration."""
3 from __future__
import annotations
5 from aiomusiccast.capabilities
import Capability
9 CONNECTION_NETWORK_MAC,
15 from .const
import BRAND, DEFAULT_ZONE, DOMAIN, ENTITY_CATEGORY_MAPPING
16 from .coordinator
import MusicCastDataUpdateCoordinator
20 """Defines a base MusicCast entity."""
27 coordinator: MusicCastDataUpdateCoordinator,
28 enabled_default: bool =
True,
30 """Initialize the MusicCast entity."""
38 """Defines a MusicCast device entity."""
40 _zone_id: str = DEFAULT_ZONE
44 """Return the ID of the current device."""
46 return self.coordinator.data.device_id
47 return f
"{self.coordinator.data.device_id}_{self._zone_id}"
51 """Return the name of the current device."""
52 return self.coordinator.data.zones[self.
_zone_id_zone_id].name
56 """Return device information about this MusicCast device."""
67 model=self.coordinator.data.model_name,
68 sw_version=self.coordinator.data.system_version,
71 if self.
_zone_id_zone_id == DEFAULT_ZONE:
72 device_info[ATTR_CONNECTIONS] = {
74 for mac
in self.coordinator.data.mac_addresses.values()
77 device_info[ATTR_VIA_DEVICE] = (DOMAIN, self.coordinator.data.device_id)
82 """Run when this Entity has been added to HA."""
85 self.coordinator.musiccast.register_callback(self.async_write_ha_state)
88 """Entity being removed from hass."""
90 self.coordinator.musiccast.remove_callback(self.async_write_ha_state)
94 """Base Entity type for all capabilities."""
98 coordinator: MusicCastDataUpdateCoordinator,
99 capability: Capability,
100 zone_id: str |
None =
None,
102 """Initialize a capability based entity."""
103 if zone_id
is not None:
106 super().
__init__(name=capability.name, icon=
"", coordinator=coordinator)
111 """Return the unique ID for this entity."""
112 return f
"{self.device_id}_{self.capability.id}"
None __init__(self, MusicCastDataUpdateCoordinator coordinator, Capability capability, str|None zone_id=None)
DeviceInfo device_info(self)
def async_added_to_hass(self)
def async_will_remove_from_hass(self)
_attr_entity_registry_enabled_default
None __init__(self, *str name, str icon, MusicCastDataUpdateCoordinator coordinator, bool enabled_default=True)