✨本博客参考了善学坊的教程,并总结了在实现过程中遇到的问题。
善学坊官网
BDB,全称为Base Device Behavior,直译过来就是“基础设备行为”。用一句话概括,BDB就是用来定义和控制在ZigBee物联网设备中的各种行为和状态。它决定了设备的行为模式,使得设备知道如何加入或离开网络,如何响应其他设备的信息,当需要改变状态时又应该做什么等等。
这里着重介绍BDB对于正确组建ZigBee网络的作用。
BDB主要包含以下3方面的内容:
由于BDB Security和Reset Methods这两部分,开发者一般接触的比较少,所以暂时不展开讲解。Commissioning Modes是ZigBee组网的核心内容,下节课将重点讲解。
Commissioning Modes决定设备之间怎样建立和配置通信连接的。
BDB提供了4种主要的Commissioning模式给开发者使用,分别是Network Steering
、Network Formation
、Finding and Binding
(F & B)和Touchlink
。
定义了设备如何加入到ZigBee网络中,具体方式如下:
所有需要加入到ZigBee网络中的设备都必须要支持Network Steering。
Network Formation 规定协调器类型的设备需要去建立一个中心信任的安全网络。这种网络的特点是所有需要加入到网络中的设备都需要经过信任中心的同意才能加入,而协调器本身就是这个信任中心。
类似地,对于路由器类型的设备,如果条件允许的话会创建一个分布式安全网络。这里暂时不展开讲解这种网络了。
所有的协调器类型设备都必须要支持 Network Formation ,而对于路由器类型的设备来说,这是可选的模式。
顾名思义,Finding and Binding的意思就是发现与绑定,那么发现与绑定什么呢?
ZigBee 3.0是使用Cluster(集群)来描述设备的功能的。每种设备都有各自的功能,都有各自的一系列Cluster。这里的发现与绑定是指ZigBee设备的Cluster之间的相互发现、相互绑定。随着后续章节对Cluster深入地讲解,读者将会更深入地了解到其中的原理。
所有的ZigBee设备都必须要支持Finding and Binding(F & B)。
一般用于两个ZigBee设备之间直接进行通信,举个例子说明其原理。
假设现在有两个支持Toucklink的ZigBee设备:
一个是无线按钮,支持通过Touchlink的方式发送一个恢复出厂设置的指令;
另一个是灯,支持接收通过Touchlink方式发来的恢复出厂设置指令并执行相应的处理。
用户可以拿着这个按钮靠近这个灯,让两者相距约2cm,然后按下按钮发送指令,这个灯会收到指令并执行相应处理。如果用户把按钮拿远一些测试,会发现灯收不到这个指令。如果用户把这个按钮拿去靠近一个新买的相同的灯测试,会发现这个灯也会收到这个指令。
从这个例子中可以总结出Touchlink具有下面这些特点:
Touchlink用得相对比较少,ZigBee设备并不一定都需要支持Touchlink,开发者可以让自己开发的设备支持或不支持这个功能。
虽然上述的Commissioning模式比较复杂,但是得益于Z-Stack 3.0 ,ZigBee设备的组网代码非常简单,只需要调用1个API就可以了。
打开配套的工程代码,可以在bdb_interface.h
文件中找到BDB Commissioning Modes的API,如图所示。
bdb_StartCommissioning(uint8 mode)
这个函数需要传入一个模式参数,可以在bdb.h中找到由协议栈定义好的模式,如图所示。
实验过程会用到的几个模式
BDB_COMMISSIONING_MODE_NWK_STEERING
BDB_COMMISSIONING_MODE_NWK_FORMATION
BDB_COMMISSIONING_MODE_FINDING_BINDING
善学坊教程:ZigBee 3.0 组网实验
根据教程实现的过程可能遇到的问题,以及相对应的解决方案。