Skip to content
Snippets Groups Projects
Unverified Commit f1f23c04 authored by Alexei Chetroi's avatar Alexei Chetroi Committed by GitHub
Browse files

Better parsing of the ZHA device profile id (#41024)

parent aba3cdc7
No related branches found
No related tags found
No related merge requests found
...@@ -9,7 +9,7 @@ from typing import Any, Dict ...@@ -9,7 +9,7 @@ from typing import Any, Dict
from zigpy import types from zigpy import types
import zigpy.exceptions import zigpy.exceptions
from zigpy.profiles import zha, zll from zigpy.profiles import PROFILES
import zigpy.quirks import zigpy.quirks
from zigpy.zcl.clusters.general import Groups from zigpy.zcl.clusters.general import Groups
import zigpy.zdo.types as zdo_types import zigpy.zdo.types as zdo_types
...@@ -456,27 +456,20 @@ class ZHADevice(LogMixin): ...@@ -456,27 +456,20 @@ class ZHADevice(LogMixin):
] ]
# Return endpoint device type Names # Return endpoint device type Names
try: names = []
device_info[ATTR_ENDPOINT_NAMES] = [ for endpoint in (ep for epid, ep in self.device.endpoints.items() if epid):
{ profile = PROFILES.get(endpoint.profile_id)
"name": endpoint.device_type.name, if profile and endpoint.device_type is not None:
} # DeviceType provides undefined enums
for (ep_id, endpoint) in self._zigpy_device.endpoints.items() names.append({ATTR_NAME: profile.DeviceType(endpoint.device_type).name})
if ep_id != 0 else:
and endpoint.profile_id in (zha.PROFILE_ID, zll.PROFILE_ID) names.append(
] {
except AttributeError as ex: ATTR_NAME: f"unknown {endpoint.device_type} device_type "
# Some device types are not using an enumeration "of 0x{endpoint.profile_id:04x} profile id"
self.warning( }
"Failed to identify endpoint name in '%s' with exception '%s'", )
self._zigpy_device.endpoints.items(), device_info[ATTR_ENDPOINT_NAMES] = names
ex,
)
device_info[ATTR_ENDPOINT_NAMES] = [
{
"name": "unknown",
}
]
reg_device = self.gateway.ha_device_registry.async_get(self.device_id) reg_device = self.gateway.ha_device_registry.async_get(self.device_id)
if reg_device is not None: if reg_device is not None:
...@@ -516,7 +509,7 @@ class ZHADevice(LogMixin): ...@@ -516,7 +509,7 @@ class ZHADevice(LogMixin):
CLUSTER_TYPE_OUT: endpoint.out_clusters, CLUSTER_TYPE_OUT: endpoint.out_clusters,
} }
for (ep_id, endpoint) in self._zigpy_device.endpoints.items() 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 @callback
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment