蓝牙 Mesh 设备 Vendor Model 透传规范

更新时间:2022-11-24 09:20:10下载pdf

本文通过规范定义涂鸦 Vendor Model 中协议格式,实现数据透传的功能,可以实现蓝牙 Mesh Model 中标准无法实现的控制逻辑或者数据传输。

概述

涂鸦蓝牙 mesh 产品大类主要包括照明、电工、传感、遥控等。涂鸦在设计蓝牙 mesh 产品体系时,尽量使用蓝牙的标准 Model 来实现功能。例如,对于照明品类的开关,使用的是 Generic_OnOff Model。

由于标准 model 实现的功能是有限的,此时需要用到 Vendor Model。例如,蓝牙照明产品会使用 Vendor Model 来实现场景配置和切换。

Vendor Model

Vendor Model ID

  • Server:0x07D00004
  • Client:0x07D00005

Vendor Model CMD

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 数据无数据长度字段。

基础协议

涂鸦 IoT 平台主要使用 DP 来描述功能。当用标准 model 实现功能时,App 或网关主要做以下工作:

  1. 查询标准 DP 与标准 model 映射表,将 DP 转换为标准 model 命令,发送到蓝牙 mesh 网络。
  2. 将标准 model 命令转换为 DP,上报到云端。

Datapoint

当使用 vendor model 实现 DP 数据传输功能时,App 或网关将 DP 按照约定格式进行透传。其透传规则如下:

数据段 字节数 说明
dpid 1 功能点序号
type 1 对应 IoT 平台上某功能点具体的数据类型,通过如下 表示值 标识
类型 表示值 长度(字节) 说明
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 组合