Skip to content

2.2 BDB Commissioning Modes

学习提示

本节课讲解的多个理论知识,理解起来并不容易,如果暂时不理解也没关系,随着后续的学习,相信大家会逐步加深理解!

Commissioning 可以直译为"调试"或"尝试运作",这有点奇怪,所以本文暂不做翻译。读者可以笼统地把其理解为"组建网络"的意思,因此"Commissioning Modes"可笼统地理解为"组网模式",但为了严谨性,本文仍使用 Commissioning。

BDB 提供了 4 种主要的 Commissioning 模式给开发者使用,分别是 Network Steering、Network Formation、Finding and Binding(F & B)和 Touchlink。

Network Steering

定义了设备如何加入到 ZigBee 网络中,具体方式如下:

  • 如果设备还没有在 ZigBee 网络中,那么它们会寻找一个合适的 ZigBee 网络并加入到其中。
  • 特别地,对于路由器类型的设备,在入网成功后,允许其它设备通过本设备来加入到这个 ZigBee 网络中。

所有需要加入到 ZigBee 网络中的设备都必须要支持 Network Steering。

Network Formation

Network Formation 规定协调器类型的设备需要去建立一个中心信任的安全网络。这种网络的特点是所有需要加入到网络中的设备都需要经过信任中心的同意才能加入,而协调器本身就是这个信任中心。

类似地,对于路由器类型的设备,如果条件允许的话会创建一个分布式安全网络。这里暂时不展开讲解这种网络了。

所有的协调器类型设备都必须要支持 Network Formation,而对于路由器类型的设备来说,这是可选的模式。

Finding and Binding(F & B)

顾名思义,Finding and Binding 的意思就是发现与绑定,那么发现与绑定什么呢?

ZigBee 3.0 是使用 Cluster(集群)来描述设备的功能的。每种设备都有各自的功能,都有各自的一系列 Cluster。这里的发现与绑定是指 ZigBee 设备的 Cluster 之间的相互发现、相互绑定。随着后续章节对 Cluster 深入地讲解,读者将会更深入地了解到其中的原理。

所有的 ZigBee 设备都必须要支持 Finding and Binding(F & B)。

一般用于两个 ZigBee 设备之间直接进行通信,举个例子说明其原理。

假设现在有两个支持 Touchlink 的 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_interface.h 中的 BDB Commissioning API

这个函数需要传入一个模式参数,可以在 bdb.h 中找到由协议栈定义好的模式,如图所示。

bdb.h 中的 Commissioning Modes 宏定义

于是,终于可以组建 ZigBee 网络了。首先,让协调器创建网络,代码如下:

c
bdb_StartCommissioning( //组建网络
    BDB_COMMISSIONING_MODE_NWK_FORMATION |  //支持 Network Formation
    BDB_COMMISSIONING_MODE_FINDING_BINDING  //支持 Finding and Binding(F & B)
);

然后,让路由器或终端设备加入网络中,代码如下:

c
bdb_StartCommissioning( //设备入网
    BDB_COMMISSIONING_MODE_NWK_STEERING |  //支持 Network Steering
    BDB_COMMISSIONING_MODE_FINDING_BINDING //支持 Finding and Binding(F & B)
);

一般地,在实际的开发过程中,开发者只需要使用这个 API 就基本可以满足网络创建和设备入网的功能需求了。这是 BDB 的一大优点,使用简单!

知识点

BDB(Base Device Behavior)是 ZigBee 3.0 的核心特性,它通过 Network Steering / Network Formation / Finding and Binding / Touchlink 四种 Commissioning 模式,为设备提供了一套统一的组网机制,让不同厂商的 ZigBee 设备能够正确地组建网络、互联互通。

内容来源:紫甲 IoT《ZigBee 3.0 开发指南》第四部分·2.2 BDB Commissioning Modes,原站链接


AI 伴学本章知识点智能答疑

👋 你好!我是本节课程的 AI 伴学助手。

可以问我:

请先 配置模型 API 后开始对话

Aiot Linker · 物联网专业课程群