Zigbee 通用接入标准

更新时间:2023-04-24 07:09:52下载pdf

概述

Zigbee 通用对接适用于一些不支持或者不太适合采用 Zigbee 标准协议的场景。在该场景下,Zigbee 设备主要充当 MCU 和 Zigbee 网关的传输通道,即把网关下发的数据按照串口协议的格式封装好,下发给 MCU。同时,把从串口中接收到的 MCU 数据封装成 Zigbee ZCL 层的数据格式,发送给 Zigbee 网关,再由网关完成和云服务的数据交互。简而言之,即利用 Zigbee 网络将 MCU 接入到云服务,从而实现产品的智能化升级。

Zigbee 通用接入标准

Zigbee 设备功能描述

Zigbee 基本信息

参数 数值
Profile Id 0x0104
Device Id 0x0051
endpoint 描述
1 用于应用数据交互时的 endpoint

支持的 clusters、属性与命令

SMART_PLUG (0x0051)
Input Clusters (Sever) Output Clusters (Client)
Basic (0x0000) OTA (0x0019)
Time (0x000A) /
Private cluster (0XEF00) /

Basic cluster

Attributes:

ID Name Data Type Range Default
0x0000 ZCLVersion uint8-0x20 0x00-0xff 0x03
0x0001 Application Version uint8-0x20 0x00-0xff ie: 0b 01 00 0001 = 1.0.1 即 0x41 为 1.0.1。OTA 功能会用到该版本号,在 OTA 开始阶段,网关会读取 OTA 包的版本号并推送给设备。在 OTA 成功重启后,网关会读取版本号来确定是否升级成功。只能往更高的版本升级。
0x0002 StackVersion uint8-0x20 0x00-0xff 0x02
0x0003 HWVersion uint8-0x20 0x00-0xff 0x01
0x0004 ManufactureName string-0x42 0-32 bytes XXX…XXX。长度为 16 个字节,由 8 字节前缀和 8 字节的 PID 组成。0-7 bytes:_TZE600_,8-16 bytes:PID(由产品经理在平台或者自助创建和提供)。
0x0005 Modle Identifier string-0x42 0-32 bytes TS0105。该字段为了网关快速识别设备类型用,提升体验。
0x0007 Power Source enum8-0x30 0x00-0xff Depends on your product
0xfffd Cluster Revision uint16-0x21 0x0000-0xffff 0x0001

Commands:

ID Name Direction Description
0x00 Reset to factory default C->S C:client,S:server

Private cluster

为满足通用对接的要求,采用一个私有的 cluster 并定义一类用于传输数据的私有 cluster command 实现数据的交互。在 APS 层中,Destination Endpoint: 0x01,ClusterID: 0xEF00,Profile ID: 0x0104,Source Endpoint: 0x01。

在 ZCL 层中,使用私有的 private command ID 来表示不同的数据交互命令,在 ZCL 的 payload 中定义私有的帧格式,采用 sequence number (2 bytes) + DP data 的形式。DP data 的数据格式参见 DP 数据格式表。

Zigbee 通用接入标准

ZCL head 的帧格式可以参考下表。

字段 长度(bit) Value 说明
Frame type 2 01 Command is specific to a cluster
Manufacture specific 1 0 Manu Code not included in ZCL
Direction 1 0/1 0: GW->Zigbee,1: Zigbee->GW
Disable default response 1 0/1 默认为 1,只有设备数据主动上报时才为 0,此时网关会主动回一个 Response 报文,作为上报成功的标记。
Reserved 3 000 保留
Private command ID
命令枚举 Value 说明
TY_DATA_ REQUEST 0x00 网关端数据请求
TY_DATA_RESPONE 0x01 MCU 侧数据请求的回复
TY_DATA_REPORT 0x02 MCU 侧数据主动上报(双向)
TY_DATA_QUERY 0x03 GW 下发,触发 MCU 侧把当前的信息全部上报,没有 zcl payload。 注:设备端可以做个策略,数据最好不要集中上报。
TUYA_MCU_VERSION_REQ 0x10 Gw->Zigbee,网关查询 MCU 版本
TUYA_MCU_VERSION_RSP 0x11 Zigbee->Gw,MCU 返回版本或主动上报版本
TUYA_MCU_OTA_NOTIFY 0x12 Gw->Zigbee,网关通知 MCU 升级
TUYA_OTA_BLOCK_DATA_REQ 0x13 Zigbee->Gw,请求 MCU 的升级包
TUYA_OTA_BLOCK_DATA_RSP 0x14 Gw->Zigbee,网关返回请求的升级包
TUYA_MCU_OTA_RESULT 0x15 Zigbee->Gw,返回 MCU 的升级结果
TUYA_MCU_SYNC_TIME 0x24 时间同步(双向)
Frame of command ID
  • TY_DATA_ REQUESTTY_DATA_RESPONE 用于网关端 DP 数据下发。当设备收到网关的数据之后,通过对应的串口协议指令发送给 MCU。MCU 收到之后处理完成,再通过串口协议回复模组。模组收到之后,转换成 TY_DATA_RESPONE 命令回复网关,完成一次 DP 传输。

    Zigbee 通用接入标准

  • MCU 端本地状态发生改变需要上报给网关时,模组采用 TY_DATA_REPORT 命令上报,网关收到之后使用同样的命令应答。

    Zigbee 通用接入标准

  • MCU 版本号查询

    Zigbee 通用接入标准
    Zigbee 通用接入标准

  • MCU OTA 升级

    Zigbee 通用接入标准
    Zigbee 通用接入标准
    Zigbee 通用接入标准
    Zigbee 通用接入标准

  • 时间同步

    Zigbee 通用接入标准

DP 数据格式
数据段 长度(byte) 说明
DPID 1 Datapoint 序号
type 对应开放平台上某 datapoint 具体的数据类型,通过如下表示值标识
类型 表示值 长度(字节) 说明
raw 0x00 N 对应于 raw 型 datapoint(模组透传)
bool 0x01 1 Value 范围:0x00,0x01
value 0x02 4 对应 int 类型,大端表示
string 0x03 N 对应于具体字符串
enum 0x04 1 枚举类型,范围 0-255
bitmap 0x05 1/2/4 长度大于 1 字节时,大端表示
len 2 长度对应 value 的字节数
value 1/2/4/N hex 表示,大于 1 字节采用大端传输

Over the air upgrade

Attributes:

ID Name Data type Range Default
0x0000 Upgrade ServerID EUI64-0xF0 / 0xffffffffffffffff
0x0001 File Offset uint32-0x23 / 0x00000000
0x0002 Current File Version uint32-0x23 / 0x21050002
0x0006 Image Upgrade Status enum8-0x30 / 0x00
0x0007 Manufacturer ID uint16-0x21 / 0x1168
0x0008 Image Type ID uint16-0x21 / 0x80f6
0x0009 Min Block Request Period uint16-0x21 / 0x0000
0xfffd Cluster Revision int16-0x29 0x0000-0xffff 0x0001

Commands:

ID Name Direction
0x00 Image Notify S->C
0x01 Query Next Image Request C->S
0x03 Image Block Request C->S
0x06 Upgrade End Request C->S

串口协议

涂鸦 Zigbee 模组与 MCU 之间的 UART 通信数据帧由帧头(Front)、版本(Ver)、命令字(Cmd)、数据长度(Length)、数据(Data)和校验和(Check)组成。定义和描述如下所示:

Octets:2 1 2 1 2 Variable 1
Front Ver Seq Cmd Length Data Check

帧格式说明

字段 说明
帧头(Front) 2 个字节的前导符,固定为 0x55aa。
版本(Ver) 串口通信协议版本,升级扩展用 0x02。
序列号(seq) 传输数据序列号,范围 0-65535。到达 65535 之后重新回到 0。
命令字(Cmd) 具体帧类型,参考下表。
数据长度(Length) 传输的有效数据长度。单帧数据长度不超过 64 个字节。
数据(Data) 传输的有效数据。
校验和(Check) 数据校验,从帧头开始按字节求和得出的结果对 256 求余。

串口命令表

Cmd ID 说明
0x01 产品信息查询/上报
0x02 设备状态查询/上报
0x03 Zigbee 设备重置
0x04 命令下发
0x05 状态上报
0x06 状态查询
0x07 Reserved
0x08 Zigbee 设备功能测试
0x09 查询按键信息(仅场景开关类设备有效)
0x0A 场景唤醒命令(仅场景开关类设备有效)
0x0A-0x23 Reserved
0x24 时间同步