diff --git a/custom_components/eero/__init__.py b/custom_components/eero/__init__.py index aff8889..58bf4b1 100755 --- a/custom_components/eero/__init__.py +++ b/custom_components/eero/__init__.py @@ -12,7 +12,7 @@ import voluptuous as vol from homeassistant.config_entries import ConfigEntry -from homeassistant.const import CONF_NAME, CONF_SCAN_INTERVAL, Platform +from homeassistant.const import CONF_NAME, CONF_SCAN_INTERVAL, Platform, UNDEFINED from homeassistant.core import HomeAssistant from homeassistant.helpers import ( config_validation as cv, @@ -562,6 +562,7 @@ def __init__( ) -> None: """Initialize device.""" super().__init__(coordinator) + self._attr_has_entity_name = True self.network_id = network_id self.resource_id = resource_id self.entity_description = description @@ -592,13 +593,24 @@ def unique_id(self) -> str: return f"{self.network.id}-{self.entity_description.key}" return f"{self.network.id}-{self.resource.id}-{self.entity_description.key}" + def _device_name(self) -> str: + """Return the Home Assistant device name for this resource.""" + if self.resource.is_client and self.suffix_connection_type: + name = self.resource.name_connection_type + else: + name = self.resource.name + + if not self.resource.is_network and self.prefix_network_name: + return f"{self.network.name} {name}" + return name + @property def device_info(self) -> dr.DeviceInfo: """Return device specific attributes. Implemented by platform classes. """ - name = self.resource.name + name = self._device_name() if self.resource.is_network: model = MODEL_NETWORK elif self.resource.is_backup_network: @@ -611,8 +623,6 @@ def device_info(self) -> dr.DeviceInfo: model = ( MODEL_CLIENT_WIRELESS if self.resource.wireless else MODEL_CLIENT_WIRED ) - if self.suffix_connection_type: - name = self.resource.name_connection_type entry_type, suggested_area, sw_version, hw_version, via_device = ( None, @@ -656,25 +666,11 @@ def device_info(self) -> dr.DeviceInfo: ) @property - def name(self) -> str: + def name(self) -> str | None: """Return the name of the entity.""" - if self.resource.is_client: - name = self.resource.name - if self.suffix_connection_type: - name = self.resource.name_connection_type - if self.prefix_network_name: - name = f"{self.network.name} {name}" - return f"{name} {self.entity_description.name}" - if ( - self.resource.is_backup_network - or self.resource.is_eero - or self.resource.is_profile - ): - name = f"{self.resource.name} {self.entity_description.name}" - if self.prefix_network_name: - name = f"{self.network.name} {name}" - return name - return f"{self.resource.name} {self.entity_description.name}" + if self.entity_description.name in (None, UNDEFINED): + return None + return self.entity_description.name @dataclass diff --git a/custom_components/eero/device_tracker.py b/custom_components/eero/device_tracker.py index 1cc2766..3fd9404 100755 --- a/custom_components/eero/device_tracker.py +++ b/custom_components/eero/device_tracker.py @@ -126,17 +126,6 @@ def __init__( ) self.last_seen: datetime | None = None - @property - def name(self) -> str | None: - """Return the name of the entity.""" - if self.resource.is_client and self.suffix_connection_type: - name = self.resource.name_connection_type - else: - name = self.resource.name - if self.prefix_network_name: - return f"{self.network.name} {name}" - return name - @property def is_connected(self) -> bool | None: """Return true if the device is connected to the network."""