6
6
7
7
import async_timeout
8
8
from homeassistant .core import callback
9
- from homeassistant .helpers import entity
9
+ from homeassistant .helpers import device_registry , entity
10
10
11
11
from matter_server .client .model .device import MatterDevice
12
12
@@ -22,23 +22,7 @@ class MatterEntity(entity.Entity):
22
22
def __init__ (self , device : MatterDevice , mapping : DeviceMapping ) -> None :
23
23
self ._device = device
24
24
self ._device_mapping = mapping
25
- self ._attr_unique_id = f"{ device .node .unique_id } -{ device .endpoint_id } -{ device .device_type .device_type } "
26
-
27
- device_type_name = device .device_type .__doc__ [:- 1 ]
28
- name = device .node .name
29
- if name :
30
- name += f" { device_type_name } "
31
- else :
32
- name = f"{ device_type_name } { device .node .node_id } "
33
-
34
- # If this device has multiple of this device type, add their endpoint.
35
- if (
36
- sum (dev .device_type is device .device_type for dev in device .node .devices )
37
- > 1
38
- ):
39
- name += f" ({ device .endpoint_id } )"
40
-
41
- self ._attr_name = name
25
+ self ._attr_unique_id = f"{ device .node .matter .client .server_info .compressedFabricId } -{ device .node .unique_id } -{ device .endpoint_id } -{ device .device_type .device_type } "
42
26
43
27
@property
44
28
def device_info (self ) -> entity .DeviceInfo | None :
@@ -49,6 +33,27 @@ async def async_added_to_hass(self) -> None:
49
33
"""Handle being added to Home Assistant."""
50
34
await super ().async_added_to_hass ()
51
35
36
+ device_name = (
37
+ device_registry .async_get (self .hass )
38
+ .async_get (self .registry_entry .device_id )
39
+ .name
40
+ )
41
+
42
+ device_type_name = self ._device .device_type .__doc__ [:- 1 ]
43
+ name = f"{ device_name } { device_type_name } "
44
+
45
+ # If this device has multiple of this device type, add their endpoint.
46
+ if (
47
+ sum (
48
+ dev .device_type is self ._device .device_type
49
+ for dev in self ._device .node .devices
50
+ )
51
+ > 1
52
+ ):
53
+ name += f" ({ self ._device .endpoint_id } )"
54
+
55
+ self ._attr_name = name
56
+
52
57
if not self ._device_mapping .subscribe_attributes :
53
58
self ._update_from_device ()
54
59
return
0 commit comments