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

| 参数 | 数值 |
|---|---|
| Profile Id | 0x0104 |
| Device Id | 0x0051 |
| endpoint | 描述 |
|---|---|
| 1 | 用于应用数据交互时的 endpoint |
| SMART_PLUG (0x0051) | |
|---|---|
| Input Clusters (Sever) | Output Clusters (Client) |
| Basic (0x0000) | OTA (0x0019) |
| Time (0x000A) | / |
| Private cluster (0XEF00) | / |
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 |
为满足通用对接的要求,采用一个私有的 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 数据格式表。

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 | 保留 |
| 命令枚举 | 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 | 时间同步(双向) |
TY_DATA_ REQUEST 和 TY_DATA_RESPONE 用于网关端 DP 数据下发。当设备收到网关的数据之后,通过对应的串口协议指令发送给 MCU。MCU 收到之后处理完成,再通过串口协议回复模组。模组收到之后,转换成 TY_DATA_RESPONE 命令回复网关,完成一次 DP 传输。

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

MCU 版本号查询


MCU OTA 升级




时间同步

| 数据段 | 长度(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 字节采用大端传输 | |||
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 | 时间同步 |
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈