B91 Zigbee Direct示例演示
Zigbee Direct协议简介
Zigbee Direct允许含有BLE模块的设备通过认证,使用加密的方式接入Zigbee网络。这就使得智能设备如手机、平板电脑、智能音响、和集线器等能调试和控制Zigbee网络中的设备。
Zigbee Direct包含的BLE services: Security Service, Commissioning Service和Tunnel Service。
文档目的
本文档主要介绍泰凌的Zigbee+BLE双模的ZDD(Zigbee Direct Device)设备的典型应用。
包含3个典型示例:
(1) 上位机工具通过BLE控制双模ZDD设备(Zigbee Coordiantor)组建Zigbee网络,并允许单模Zigbee设备加入其网络,并能通信;
(2) 上位机工具通过BLE控制双模ZDD设备(Zigbee Router)加入已有的Zigbee网络,并能通信;
(3) 上位机工具模拟ZVD设备加入双模ZDD设备组建的Zigbee网络,并能通信。
注意:
- ZVD和ZDD是使用“security mode 1”和“security level 1”建立BLE连接,没有配对和绑定过程。
- Security Service中的秘钥协商方式仅支持:ECDHE using Curve25519 with Hash AES-MMO-128.
- 预配置秘钥类型支持:
Pre-configured link-key derived from installation code
Basic Authorization Key
ECDHE using Curve25519 with Hash AES-MMO-128
Anonymous Well-Known Secret- 上位机工具“Commission”,“Tunnel”页面“Data In/Out”会话框中的数据是经过解密后显示,实际BLE空中数据是经过加密的,秘钥是在建立会话过程中协商。
软硬件准备
硬件准备
B91 Zigbee Direct开发套件
硬件介绍
类别 | 芯片料号 | 开发板外部名称 | 个数 |
---|---|---|---|
zigbee+BLE双模设备 | 9518A | B91 适配器 | 1 |
zigbee单模设备 | 9518A | B91 适配器 | 1 |
注意:
可以通过淘宝购买该套件,如果还未上架,请联系 Telink FAE 购买 B91 Zigbee Direct开发套件。
硬件设计参考
- Telink wiki 页面下 Development Kit and Application Boards 章节
软件准备
- 下载工具
- Zigbee SDK
- Zigbee Direct SDK (此链接为 telink 内部链接,客户需要联系 FAE 获取)
- 电脑端测试工具源码-Zigbee Direct Test Tool (此链接为 telink 内部链接,客户需要联系 FAE 获取)
ZDD组建网络
示例拓扑
BIN文件
ZDD设备中下载的为双模SDK中sampleGW示例编译生成的BIN文件,Zigbee Router设备中下载为Zigbee SDK中sampleLight示例编译生成的BIN文件。
下载BIN文件之前请先将模块中已保存的数据擦除,避免Flash中的已有数据影响测试。
BIN文件下载成功后,将模块上电,模块上红灯会亮起。
操作步骤
建立BLE连接
打开电脑端测试工具-Zigbee Direct Test Tool,点击“Start Scan”按钮,等待扫描结果,然后在扫描结果中选中ZDD设备,点击“Start Connect”按钮,发起BLE连接。连接过程中工具会去发现设备的所有属性,所以连接时间会稍长。
建立配置会话
切换到“Security”页面,按照默认配置,点击“Start Session”按钮,建立配置会话,协商出配置会话秘钥。“Data In/Out”会话框显示会话建立过程的交互数据。
ZDD组建网络
切换到“Commission”页面,在网页左侧区域配置组网的参数,然后点击“Form network”按钮,发起组网,ZDD会上报组网结果和网络参数。
这里只配置了“NWK Channel”,通信数据在“Data In/Out”对话框。
组网的参数使用"TLV"格式组包。
名称 | 用法 | 类型ID | 长度(Byte) | 描述 |
---|---|---|---|---|
Admin Key | Optional | 0x0d | 16 | 用于建立Admin级别授权会话,如果没有配置,在集中式网络中默认使用TCLK,在分布式网络中,没有配置则无法建立Admin会话。 |
Trust Center Address | Required (conditionally) | 0x09 | 8 | 当组建分布式网络,必须配置,并且是全ff;如果是集中式网络,则不需要配置。 |
Extended PAN ID | Optional | 0x00 | 8 | 如果不配置,组网设备会选取随机数。 |
Short PAN ID | Optional | 0x01 | 2 | 如果不配置,组网设备会选取随机数。 |
Network Channel | Optional | 0x02 | 4 | 如果不配置,组网设备全信道扫描选取工作信道。 |
Network Key | Optioanl | 0x03 | 16 | 如果不配置,组网设备会选取随机数作为秘钥。 |
Link Key | Optional | 0x04 | 17 | 如果没有配置,则会选择pre-install code或者默认linkkey。 |
NWK Address | Optional | 0x06 | 2 | 集中式网络中会忽略NWK Address配置。 |
NWK Update ID | Optional | 0x0b | 1 | 如果不配置,默认使用0。 |
已经在Zigbee网络中的设备需要升级到Admin Authorization会话,协商新的秘钥,才能进行后续BLE通信。
建立Admin Authorization会话
由于组网的时候没有配置Admin Key,在集中式网络中,Coordinator可以使用默认TCLK(ZigBeeAlliance09:5A 69 67 42 65 65 41 6C 6C 69 61 6E 63 65 30 39)来派生Admin key。
预配置秘钥类型选择“Administrative Authorization Key”。
Zigbee设备加入网络
切换到“Commission”页面,在“Permit Joining”后填入允许入网时间,打开ZDD的允许入网开关,如下图,成功之后,ZDD模块上的绿灯会亮起。
单模Zigbee设备入网后,ZDD设备的绿灯也会亮起。在ZDD模块上按“SW2”键,ZDD会以1秒间隔广播on/off命令,单模Zigbee模块上的红灯会随着闪烁,再按一次“SW2”按键,则停止闪烁。
ZDD加入已有Zigbee网络
示例拓扑
BIN文件
双模ZDD设备中下载的为双模SDK中sampleLight示例编译生成的BIN文件,单模Zigbee Coordinator设备中下载为Zigbee SDK中sampleGW示例编译生成的BIN文件。
下载BIN文件之前请先将模块Flash全片擦除,避免Flash中的已有数据影响测试。
BIN文件下载成功后,将模块上电,模块上红灯会亮起。
操作步骤
建立BLE连接
打开电脑端测试工具-Zigbee Direct Test Tool,点击“Start Scan”按钮,等待扫描结果,然后在扫描结果中选中ZDD设备,点击“Start Connect”按钮,发起BLE连接。
建立配置会话
切换到“Security”页面,按照默认配置,点击“Start Session”按钮,建立配置会话。“Data In/Out”会话框显示会话建立过程的交互数据。后续通讯数据需要使用这里协商出的秘钥加解密。
组建Zigbee网络
单模Zigbee Coordinator模块组建网络,并将允许入网开关打开,模块上的绿灯亮起。
ZDD加入网络
切换到“Commission”页面,在网页左侧区域配置入网的参数,然后点击“Join network”按钮,发起入网,ZDD会上报入网结果和网络参数。ZDD设备默认允许入网开关是关闭的,所以这里绿灯不会亮起。这里配置了“Joining Method”和“Admin Key”(33 33 33 33 33 33 33 33 33 33 33 33 33 33 44 55),通信数据在“Data In/Out”对话框。
入网之后,按Zigbee Coordinator模块上的“SW2”按钮,Zigbee Coordinator模块会以1秒间隔广播on/off命令,ZDD模块上的红灯会随着闪烁,再按一次“SW2”按键,则停止闪烁。
组网数据使用"TLV"格式组包。
名称 | 用法 | 类型ID | 长度(Byte) | 描述 |
---|---|---|---|---|
Joining Method | Required | 0x07 | 1 | 可配置方式:MAC association、secure rejoining、Out-of-band Commissioning. |
Admin Key | Optional | 0x0d | 16 | 用于建立Admin级别授权会话,如果没有配置,在集中式网络中默认使用TCLK,在分布式网络中,没有配置则无法建立Admin会话。 |
Trust Center Address | Required (conditionally) | 0x09 | 8 | 当组建分布式网络,必须配置,并且是全ff;如果是集中式网络,则不要求配置。 |
Extended PAN ID | Optional | 0x00 | 8 | 加入Extended PAN ID与配置相同的网络。 |
Network Channel | Optional | 0x02 | 4 | 在配置信道上查找可以入网设备。 |
Link Key | Optional | 0x04 | 17 | 预配置linkkey。 |
NWK Address | Optional | 0x06 | 2 | 如果没有配置选取随机地址。 |
已经在Zigbee网络中的设备需要升级会话到Admin Authorization会话,协商新的秘钥,才能进行后续"Commissioning Service"数据交互。
建立Admin Authorization会话
由于入网时已经配置了Admin key,所以这里不需要再配置,预配置秘钥类型选择“Administrative Authorization Key”,建立会话。
ZDD设备打开入网开关
切换到“Commission”页面,在“Permit Joining”后填入允许入网时间,可以控制整个网络的允许入网开关。
ZDD设备离网
在“Commission”页面,通过“Leave network”命令使自己离网,ZDD设备离网后,BLE连接也会主动断开。
ZVD加入ZDD的Zigbee网络
示例拓扑
上位机工具模拟Zigbee Router设备,通过BLE通道传输Zigbee网络数据,需要用到Security Service和Tunnel Service。Tunnel数据也是采用TLV格式封装。
上位机工具并没有实现Zigbee协议栈,这里只能测试入网和on/off命令。
操作步骤
组建Zigbee网络
按照“ZDD组建网络”章节,使ZDD组建网络,并且单模Zigbee Router设备已经加入网络。然后重新建立BLE连接。
建立配置会话
已经在Zigbee网络中的设备建立配置会话时需要将允许入网开关打开。按ZDD模块上的“SW7”按钮,打开设备允许入网开关,模块上绿灯会亮起。
使用工具默认配置参数,建立配置会话,协商出配置会话秘钥。
ZVD加入Zigbee网络
ZVD发起入网之前保证ZDD允许入网开关已经被打开。
切换到“Tunnel”页面,在“ZVD Join”后配置参数,点击“StartJoin”,ZVD加入已知网络。其中“ZVD IEEE”和“ZVD short address”是随机选取的,用户可以自己指定。“Parent IEEE”和“Parent short address”是父节点ZDD的参数。
建立Basic Authorization会话
上位机工具切换到“Security”页面,预配置秘钥类型选择“Basic Authorization Key”,预配置秘钥选择当前网络的网络秘钥,建立Basic Authorization会话。
预配置秘钥可以根据ZVD设备入网时收到的“transport key”命令数据推导,当前工具未实现这一功能,所以这里手动输入。
ZVD设备控制Zigbee网络设备
ZVD设备加入Zigbee网络,并且建立“Basic Authorization”会话后,会发送一次“Device announce”命令,并且每隔15秒发送一次“Link Status”命令。
在“On/Off”后的会话框填入要控制设备的地址,点击“send”按钮,发送命令,可以看到设备上红灯随之亮灭。