Do not error on smartcam hub attached smartcam child devices (#1314)

This commit is contained in:
Steven B. 2024-11-26 11:37:14 +00:00 committed by GitHub
parent 6c42b36865
commit f71450b880
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -100,20 +100,29 @@ class SmartCamDevice(SmartDevice):
resp = await self.protocol.query(child_info_query) resp = await self.protocol.query(child_info_query)
self.internal_state.update(resp) self.internal_state.update(resp)
children_components = { smart_children_components = {
child["device_id"]: { child["device_id"]: {
comp["id"]: int(comp["ver_code"]) for comp in child["component_list"] comp["id"]: int(comp["ver_code"]) for comp in component_list
} }
for child in resp["getChildDeviceComponentList"]["child_component_list"] for child in resp["getChildDeviceComponentList"]["child_component_list"]
if (component_list := child.get("component_list"))
# Child camera devices will have a different component schema so only
# extract smart values.
and (first_comp := next(iter(component_list), None))
and isinstance(first_comp, dict)
and "id" in first_comp
and "ver_code" in first_comp
} }
children = {} children = {}
for info in resp["getChildDeviceList"]["child_device_list"]: for info in resp["getChildDeviceList"]["child_device_list"]:
if ( if (
category := info.get("category") (category := info.get("category"))
) and category in SmartChildDevice.CHILD_DEVICE_TYPE_MAP: and category in SmartChildDevice.CHILD_DEVICE_TYPE_MAP
child_id = info["device_id"] and (child_id := info.get("device_id"))
and (child_components := smart_children_components.get(child_id))
):
children[child_id] = await self._initialize_smart_child( children[child_id] = await self._initialize_smart_child(
info, children_components[child_id] info, child_components
) )
else: else:
_LOGGER.debug("Child device type not supported: %s", info) _LOGGER.debug("Child device type not supported: %s", info)