mirror of
https://github.com/home-assistant/core.git
synced 2025-04-23 16:57:53 +00:00
Better parsing of the ZHA device profile id (#41024)
This commit is contained in:
parent
aba3cdc7b3
commit
f1f23c0453
@ -9,7 +9,7 @@ from typing import Any, Dict
|
||||
|
||||
from zigpy import types
|
||||
import zigpy.exceptions
|
||||
from zigpy.profiles import zha, zll
|
||||
from zigpy.profiles import PROFILES
|
||||
import zigpy.quirks
|
||||
from zigpy.zcl.clusters.general import Groups
|
||||
import zigpy.zdo.types as zdo_types
|
||||
@ -456,27 +456,20 @@ class ZHADevice(LogMixin):
|
||||
]
|
||||
|
||||
# Return endpoint device type Names
|
||||
try:
|
||||
device_info[ATTR_ENDPOINT_NAMES] = [
|
||||
{
|
||||
"name": endpoint.device_type.name,
|
||||
}
|
||||
for (ep_id, endpoint) in self._zigpy_device.endpoints.items()
|
||||
if ep_id != 0
|
||||
and endpoint.profile_id in (zha.PROFILE_ID, zll.PROFILE_ID)
|
||||
]
|
||||
except AttributeError as ex:
|
||||
# Some device types are not using an enumeration
|
||||
self.warning(
|
||||
"Failed to identify endpoint name in '%s' with exception '%s'",
|
||||
self._zigpy_device.endpoints.items(),
|
||||
ex,
|
||||
)
|
||||
device_info[ATTR_ENDPOINT_NAMES] = [
|
||||
{
|
||||
"name": "unknown",
|
||||
}
|
||||
]
|
||||
names = []
|
||||
for endpoint in (ep for epid, ep in self.device.endpoints.items() if epid):
|
||||
profile = PROFILES.get(endpoint.profile_id)
|
||||
if profile and endpoint.device_type is not None:
|
||||
# DeviceType provides undefined enums
|
||||
names.append({ATTR_NAME: profile.DeviceType(endpoint.device_type).name})
|
||||
else:
|
||||
names.append(
|
||||
{
|
||||
ATTR_NAME: f"unknown {endpoint.device_type} device_type "
|
||||
"of 0x{endpoint.profile_id:04x} profile id"
|
||||
}
|
||||
)
|
||||
device_info[ATTR_ENDPOINT_NAMES] = names
|
||||
|
||||
reg_device = self.gateway.ha_device_registry.async_get(self.device_id)
|
||||
if reg_device is not None:
|
||||
@ -516,7 +509,7 @@ class ZHADevice(LogMixin):
|
||||
CLUSTER_TYPE_OUT: endpoint.out_clusters,
|
||||
}
|
||||
for (ep_id, endpoint) in self._zigpy_device.endpoints.items()
|
||||
if ep_id != 0 and endpoint.profile_id in (zha.PROFILE_ID, zll.PROFILE_ID)
|
||||
if ep_id != 0 and endpoint.profile_id in PROFILES
|
||||
}
|
||||
|
||||
@callback
|
||||
|
Loading…
x
Reference in New Issue
Block a user