【Zigbee】ZLL 配网流程分析

Zigbee 子设备开发


Post Reply
zeso
Posts: 132

1. 什么是ZLL

ZigBee Light Link (ZLL)是一种全球标准,用于保证普通民用照明和控制产品的互连互通和易于使用。它为消费者提供了新的照明功能,包括远程控制、可编程定时控制和情绪照明。采用ZigBee Light Link应用规范中的ZigBee PRO协议,可在家庭中实施无线网络。此网络包括光节点和控制节点,如电灯开关、感应传感器、遥控装置、智能手机、平板电脑和笔记本电脑。

ZLL原本是zigbee联盟定义的专门用于照明的一个规范。从zigbee3.0开始, ZLL已经不再局限于照明领域,而是逐渐演变成一种配网方式。

ZLL网络中有两种角色,即发起者Initiator,对应的是client端和目标设备Target,对应的是server端。举个例子,在Zigbee照明场景中,通常

遥控器 Initiator

灯 Target

2. ZLL设备需要支持的命令

Client端

Image

Server端

Image

3. ZLL配网方式介绍

ZLL网络的配网方式为Touch Link,也就是接触配网。需要InitiatorTarget设备相互靠近,并通过一系列的协议交互完成配网。Touch Link的可配网距离根据InitiatorTarget设备设定的rssi阈值决定,一般建议为:-60dBm。

4. 配网流程介绍

本文主要介绍以下两种分布式网络场景。

4.1. Initiator未加入网络

Image

4.1.1. scan request

发起端根据配置在所选信道依次发起scan request扫描。

报文类型:Inter-PAN

报文包含设备信息,和ZLL信息

Image

4.1.2. scan response

目标设备收到scan request之后,如果支持ZLL,则回复scan response

报文类型:Inter-PAN

报文包含设备信息、ZLL信息、当前网络信息等。可以看到当前目标设备网络处在20信道,PAN id为0x671A。

Image

4.1.3. identify request

发起端收到目标设备的回复后,会选择对哪个设备进行ZLL操作,并发起identify request用于通知目标设备。

报文类型:Inter-PAN

报文包含identify时间。

需要说明的是:identify有两种模式,一种是直接带具体时间,比如Telink;一种是先发0xFFFF identify时间作为开始,再发0x0000 identify时间作为结束,比如芯科。

Image

4.1.4. network start request

发起端向目标设备发起建立分布式网络请求。

报文类型:Inter-PAN

报文指定了新网络的 NWK key;是否由target自行确定信道和PAN idtarget设备短地址,initiator设备短地址,initiator设备长地址等。

Image

4.1.4. network start response

目标设备回复建立分布式网络结果。

报文类型:Inter-PAN

报文包含建网结果,扩展PAN id,新网络信道和PAN id

Image

4.1.4. leave

目标设备向原网络发起leave通知。

Image

4.1.4. 目标设备 device announce

目标设备向新网络发起device announce通知,声明已经在网。

可以看到目标设备的短地址用的是发起端指定的0x0002

Image

4.1.4. 发起端 rejoin

发起端收到目标设备的network start response之后获取到新网络的网络参数,一般的做法是延时几秒发起rejoin操作。

Image

Image

至此,整个ZLL配网过程结束,initiator和target设备可以在新的分布式网络进行通信。

4.2. Initiator已有网络

Image

Initiator已有网络的场景和Initiator未加入网络的场景,ZLL配网流程上最主要的差异就是发起端确认目标设备之后,发送的是network join router request命令。

报文类型:Inter-PAN

报文指定了新网络的 NWK key;新网络信道;新网络PAN id;target设备短地址等。

Image

目标设备确认后回复network join router response命令。

报文类型:Inter-PAN

Image

其余流程和Initiator未加入网络场景一致。

PS:本文抓包文件可通过附件下载,欢迎沟通学习。

Last edited by zeso on 2022年 Dec 20日 12:33, edited 2 times in total.

我的栈溢不出。

zeso
Posts: 132

Re: 【Zigbee】ZLL 配网流程分析

附件,FYI.

Attachments
ZLL流程.rar
(75.62 KiB) Downloaded 822 times

我的栈溢不出。

547176052@qq.com
Posts: 59

Re: 【Zigbee】ZLL 配网流程分析

zeso 2022年 Dec 19日 09:59

1. 什么是ZLL

ZigBee Light Link (ZLL)是一种全球标准,用于保证普通民用照明和控制产品的互连互通和易于使用。它为消费者提供了新的照明功能,包括远程控制、可编程定时控制和情绪照明。采用ZigBee Light Link应用规范中的ZigBee PRO协议,可在家庭中实施无线网络。此网络包括光节点和控制节点,如电灯开关、感应传感器、遥控装置、智能手机、平板电脑和笔记本电脑。

ZLL原本是zigbee联盟定义的专门用于照明的一个规范。从zigbee3.0开始, ZLL已经不再局限于照明领域,而是逐渐演变成一种配网方式。

ZLL网络中有两种角色,即发起者Initiator,对应的是client端和目标设备Target,对应的是server端。举个例子,在Zigbee照明场景中,通常:

遥控器 Initiator

灯 Target

2. ZLL设备需要支持的命令

Client端

Image

Server端

Image

3. ZLL配网方式介绍

ZLL网络的配网方式为Touch Link,也就是接触配网。需要InitiatorTarget设备相互靠近,并通过一系列的协议交互完成配网。Touch Link的可配网距离根据InitiatorTarget设备设定的rssi阈值决定,一般建议为:-60dBm。

4. 配网流程介绍

本文主要介绍以下两种分布式网络场景。

4.1. Initiator未加入网络

Image

4.1.1. scan request

发起端根据配置在所选信道依次发起scan request扫描。

报文类型:Inter-PAN

报文包含设备信息,和ZLL信息

Image

4.1.2. scan response

目标设备收到scan request之后,如果支持ZLL,则回复scan response

报文类型:Inter-PAN

报文包含设备信息、ZLL信息、当前网络信息等。可以看到当前目标设备网络处在20信道,PAN id为0x671A。

Image

4.1.3. identify request

发起端收到目标设备的回复后,会选择对哪个设备进行ZLL操作,并发起identify request用于通知目标设备。

报文类型:Inter-PAN

报文包含identify时间。

需要说明的是:identify有两种模式,一种是直接带具体时间,比如Telink;一种是先发0xFFFF identify时间作为开始,再发0x0000 identify时间作为结束,比如芯科。

Image

4.1.4. network start request

发起端向目标设备发起建立分布式网络请求。

报文类型:Inter-PAN

报文指定了新网络的 NWK key;是否由target自行确定信道和PAN idtarget设备短地址,initiator设备短地址,initiator设备长地址等。

Image

4.1.4. network start response

目标设备回复建立分布式网络结果。

报文类型:Inter-PAN

报文包含建网结果,扩展PAN id,新网络信道和PAN id

Image

4.1.4. leave

目标设备向原网络发起leave通知。

Image

4.1.4. 目标设备 device announce

目标设备向新网络发起device announce通知,声明已经在网。

可以看到目标设备的短地址用的是发起端指定的0x0002

Image

4.1.4. 发起端 rejoin

发起端收到目标设备的network start response之后获取到新网络的网络参数,一般的做法是延时几秒发起rejoin操作。

Image

Image

至此,整个ZLL配网过程结束,initiator和target设备可以在新的分布式网络进行通信。

4.2. Initiator已有网络

Image

Initiator已有网络的场景和Initiator未加入网络的场景,ZLL配网流程上最主要的差异就是发起端确认目标设备之后,发送的是network join router request命令。

报文类型:Inter-PAN

报文指定了新网络的 NWK key;新网络信道;新网络PAN id;target设备短地址等。

Image

目标设备确认后回复network join router response命令。

报文类型:Inter-PAN

Image

其余流程和Initiator未加入网络场景一致。

PS:本文抓包文件可通过附件下载,欢迎沟通学习。

这个是什么抓包工具 有教程没

zeso
Posts: 132

Re: 【Zigbee】ZLL 配网流程分析

Ubiqua protocol analyzer.

我的栈溢不出。

huanghuan
Posts: 244

Re: 【Zigbee】ZLL 配网流程分析

Tuya OS 相关函数介绍

1 主动调用类

Code: Select all

OPERATE_RET tal_zll_target_touchlink_init(VOID_T);

开启设备ZLL target端功能,需要router设备才能作为target端,因为initiator端不在ZLL网络中时需要target端创建网络,End Device设备不具备创建网络的能力所以无法作为target端

Code: Select all

OPERATE_RET tal_zll_initiator_touchlink_init(VOID_T);

开启设备ZLL initiator端功能

Code: Select all

TAL_ZLL_SCAN_STATUS_E tal_zll_initiator_scan_start(TAL_ZLL_SCAN_TYPE_E type);

TAL_ZLL_SCANE_FOR_JOIN          开始zll scan,touch一个设备
TAL_ZLL_SCAN_FOR_LEAVE          开始zll scan,选择当前ZLL网络中一个设备发送reset to factory 让其恢复出场设置并离网
TAL_ZLL_SCAN_FOR_INDENTIFY      暂不支持

2 回调处理类

Code: Select all

VOID_T tal_zll_target_commissioning_complete_callback(TAL_ZLL_TARGET_STATUS_E status)

target设备 收到 initiator 命令后网络状态发生变化后的回调

TAL_ZLL_TARGET_IDLE            初始状态,内部使用 
TAL_ZLL_TARGET_LEAVE           处于zll网络中的target收到initiator的reset factory new命令后,在恢复出场设置和离网 前 
TAL_ZLL_TARGET_JOINED          被initiator拉取到了一个zll网络中

Code: Select all

VOID_T tal_zll_initiator_commissioning_complete_callback(TAL_ZLL_SCAN_RESULT_E result, TAL_ZLL_DEV_LIST_T* list);

initiator 发起一次touch,各阶段状态的回调

TKL_ZLL_SCAN_RESULT_SUCESS      zll scan 有收到设备respond,响应设备列表为入参list,touch流程继续
TKL_ZLL_SCAN_RESULT_NO_FOUND    zll scan 没有收到设备respond,list为NULL,本次touch流程结束
TKL_ZLL_TOUCH_REJOIN_SUCESS     zll touch 到设备,且rejoin OK (该状态是一个ZLL initiator发起一次touch link流程成功的标志)
TKL_ZLL_TOUCH_REJOIN_FAIL       zll touch 到设备,但是rejoin FAIL
Post Reply