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