更新时间:2024-11-20 08:51:22下载pdf
本文通过规范定义涂鸦 Vendor Model 中协议格式,实现数据透传的功能,可以实现蓝牙 Mesh Model 中标准无法实现的控制逻辑或者数据传输。
涂鸦蓝牙 mesh 产品大类主要包括照明、电工、传感、遥控等。涂鸦在设计蓝牙 mesh 产品体系时,尽量使用蓝牙的标准 Model 来实现功能。例如,对于照明品类的开关,使用的是 Generic_OnOff Model。
由于标准 model 实现的功能是有限的,此时需要用到 Vendor Model。例如,蓝牙照明产品会使用 Vendor Model 来实现场景配置和切换。
CMD | Op_code | Client:0x07D00005 | Server:0x07D00004 |
---|---|---|---|
WRITE | 0xC9D007 | 写数据请求 | - |
WRITE_UNACK | 0xCAD007 | 不带ACK写数据请求 | - |
READ | 0xCCD007 | 读状态请求 | - |
STATUS | 0xCBD007 | - | 保留 |
DATA | 0xCDD007 | - | 数据回复与上报 |
字段 | 字节数 | 说明 |
---|---|---|
命令字 | 1 | 数据类型: 0x01:DP数据 0x02:时间戳同步 … |
数据长度 | 1 | DP数据无此字段 |
数据 | N | - |
为尽量减小数据,压缩到1包输出,因此 DP 数据无数据长度字段。
涂鸦开发者平台主要使用 DP 来描述功能。当用标准 model 实现功能时,App 或网关主要做以下工作:
当使用 vendor model 实现 DP 数据传输功能时,App 或网关将 DP 按照约定格式进行透传。其透传规则如下:
数据段 | 字节数 | 说明 | |||
---|---|---|---|---|---|
dpid | 1 | 功能点序号 | |||
type | 1 | 对应开发者平台上某功能点具体的数据类型,通过如下 表示值 标识 | |||
类型 | 表示值 | 长度(字节) | 说明 | ||
Raw | 0x00 | N | 对应于 raw 型 datapoint | ||
Boolean | 0x01 | 1 | 范围:0x00/0x01 | ||
Value | 0x02 | 4 | 对应数值类型,大端表示 | ||
String | 0x03 | N | 对应于具体字符串 | ||
Enum | 0x04 | 1 | 枚举类型,范围 0-0xFF | ||
Bitmap | 0x05 | 4 | 长度大于1字节时,大端表示 | ||
len | 1 | 长度对应 data 的字节数 注意只有 raw/string/bitmap 才需要此字段 | |||
data | 1/4/N | hex 表示,大于 1 字节采用大端传输 |
op_code:0xC9D007 WRITE
App 或网关发送 WRITE 命令到设备端,设备需要回复 DATA(0xCDD007)数据。
op_code:0xCAD007 WRITE_UNACK
发送 WRITE_UNACK 命令时,设备无需回复。
App 或网关发送:
字段 | 字节数 | 说明 |
---|---|---|
命令字 | 1 | 0x01(DP数据,DataPoint) |
数据 | N | DataPoint 组合(格式见前文) |
op_code:0xCCD007 READ
App 或网关主动查询设备 DP 状态。发送 DPID 为 0 时,设备收到后通过 DATA 通道主动上报所有 DP 状态。
App 或网关发送:
字段 | 字节数 | 说明 |
---|---|---|
命令字 | 1 | 0x01(DP 数据) |
数据长度 | 1 | N |
数据 | N * DP_ID (N * 1byte) | DP 序号组合 |
op_code: 0xCDD007 DATA
子设备收到 WRITE 以及 READ 命令时回复此消息。
设备发送:
字段 | 字节数 | 说明 |
---|---|---|
命令字 | 1 | 0x01(DP 数据) |
数据 | N | DP 组合 |