find and bind 概念
Zigbee 网络中的控制发起端一般是信任中心,信任中心是设备入网时获取密钥的对象,所以通过设备入网,信任中心获取了网络中的所有设备信息,因此知道对端的地址有条件发起对在网设备的控制。
但是Zigbee 网络中的router设备,无法收到一跳范围外的设备数据,这个设备如何控制不在路由表中的设备? 首先发起控制的设备需要find 对端设备,知道对端的信息后再去控制它。
find 指的是通过无线通讯交互,发起端设备获取控制端设备信息,从而建立控制链路。
bind 指的是两个节点在应用层上建立起来的一条逻辑链路。在同一个节点上可以建立多个绑定服务,分别对应不同种类的数据包。此外,绑定也允许有多个目标节点(一对多绑定)。
举个例子,在一个灯光网络中,有多个开关和灯光设备,每一个开关可以控制一个或以上的灯光设备。在这种情况下,需要在每个开关中建立绑定服务。这使得开关中的应用服务在不知道灯光设备确切的目标地址时,可以顺利地向灯光设备发送数据包。
find and bind 目标端
- 设备需要被发现时进入identifyself状态,开始倒计时
- 当收到发起端发起的identiy query广播包后,单播identify query respond给发起端设备
- 倒计时结束退出identifyself状态,不再响应identify query广播包
find and bind 发起端
- 设备发送identify query广播包搜寻当前处理identifyself状态的目标端
- 当收到目标端单播的identify query respond后,发送simple descriptor 附带需要控制的endpoint和cluster
- 当收到目标端回复的simple descriptor respond后确认目标端是否具备需要控制的endpoint和cluster
- 如果该目标端具备需要控制的endpoint和cluster,则建立本地的bind table entry
- 将对端的identify time设置为0,让其退出identifyself状态