diff --git a/homeassistant/components/isy994/entity.py b/homeassistant/components/isy994/entity.py index a90701f3323..5b071fca6b7 100644 --- a/homeassistant/components/isy994/entity.py +++ b/homeassistant/components/isy994/entity.py @@ -80,9 +80,6 @@ class ISYEntity(Entity): @property def device_info(self) -> DeviceInfo | None: """Return the device_info of the device.""" - if hasattr(self._node, "protocol") and self._node.protocol == PROTO_GROUP: - # not a device - return None isy = self._node.isy uuid = isy.configuration["uuid"] node = self._node @@ -90,9 +87,17 @@ class ISYEntity(Entity): basename = self._name or str(self._node.name) - if hasattr(self._node, "parent_node") and self._node.parent_node is not None: + if hasattr(node, "protocol") and node.protocol == PROTO_GROUP: + # If Group has only 1 Controller, link to that device, otherwise link to ISY Hub + if len(node.controllers) != 1: + return DeviceInfo(identifiers={(DOMAIN, uuid)}) + + node = isy.nodes.get_by_id(node.controllers[0]) + basename = node.name + + if hasattr(node, "parent_node") and node.parent_node is not None: # This is not the parent node, get the parent node. - node = self._node.parent_node + node = node.parent_node basename = node.name device_info = DeviceInfo( @@ -105,7 +110,9 @@ class ISYEntity(Entity): if hasattr(node, "address"): assert isinstance(node.address, str) - device_info[ATTR_NAME] = f"{basename} ({node.address})" + device_info[ + ATTR_NAME + ] = f"{basename} ({(node.address.rpartition(' ')[0] or node.address)})" if hasattr(node, "primary_node"): device_info[ATTR_IDENTIFIERS] = {(DOMAIN, f"{uuid}_{node.address}")} # ISYv5 Device Types