更新时间: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 | 时间同步 |
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈