async def unbind_group(app, listener, ieee, cmd, data, service, params, event_data): from zigpy.zdo.types import MultiAddress from zigpy import types as t LOGGER.debug("running 'unbind group' command: %s", service) if ieee is None: LOGGER.error("missing ieee") return if not data: LOGGER.error("missing data (destination ieee)") return src_dev = app.get_device(ieee=ieee) group_id = u.str2int(data) zdo = src_dev.zdo src_cls = [6, 8, 768] dst_addr = MultiAddress() dst_addr.addrmode = t.uint8_t(1) dst_addr.nwk = t.uint16_t(group_id) results = {} for src_cluster in src_cls: src_ep = None for ep_id, ep in src_dev.endpoints.items(): if ep_id == 0: continue if src_cluster in ep.out_clusters: src_ep = ep_id break if not src_ep: LOGGER.debug( "0x%04x: skipping %s cluster as non present", src_dev.nwk, src_cluster, ) continue if src_ep not in results: results[src_ep] = [] LOGGER.debug( "0x%04x: unbinding %s, ep: %s, cluster: %s", src_dev.nwk, str(src_dev.ieee), src_ep, src_cluster, ) unbind_result = {"endpoint_id": src_ep, "cluster_id": src_cluster} res = await zdo.request(ZDOCmd.Unbind_req, src_dev.ieee, src_ep, src_cluster, dst_addr) unbind_result["result"] = res results[src_ep].append(unbind_result) LOGGER.debug("0x%04x: unbinding group 0x%04x: %s", src_dev.nwk, group_id, res) event_data["result"] = results
async def unbind_group(app, listener, ieee, cmd, data, service): from zigpy.zdo.types import MultiAddress from zigpy import types as t LOGGER.debug("running 'unbind group' command: %s", service) if ieee is None or not data: LOGGER.error("missing ieee") return src_dev = app.get_device(ieee=ieee) group_id = int(data, base=16) zdo = src_dev.zdo src_cls = [6, 8, 768] dst_addr = MultiAddress() dst_addr.addrmode = t.uint8_t(1) dst_addr.nwk = t.uint16_t(group_id) for src_cluster in src_cls: src_ep = None for ep_id, ep in src_dev.endpoints.items(): if ep_id == 0: continue if src_cluster in ep.out_clusters: src_ep = ep_id break if not src_ep: LOGGER.debug("0x%04x: skipping %s cluster as non present", src_dev.nwk, src_cluster) continue LOGGER.debug("0x%04x: unbinding %s, ep: %s, cluster: %s", src_dev.nwk, str(src_dev.ieee), src_ep, src_cluster) res = await zdo.request(ZDOCmd.Unbind_req, src_dev.ieee, src_ep, src_cluster, dst_addr) LOGGER.debug("0x%04x: unbinding group 0x%04x: %s", src_dev.nwk, group_id, res)