基础规范使用

广播规范

广播规范使用BLE设备类型,即将Subtype置为0b1011。广播格式与基本类型广播格式保持一致。详见《蓝牙设备GATT规范》

20190807200800.jpg

在基本类型的定义上扩展出2个字节的Ext字段,用来标识一些额外的信息。各Bit位定义如下:

Bit序 功能说明
0 是否有数据进行上报,0:没有数据,1:有数据上报
1~4 BLE设备子版本号,本文档固定为0b1001
5~15 保留将来使用,全部填0

数据传输规范

BLE数据传输使用基础规范定义的数据格式和规则。数据包如下图,详见《天猫精灵智能家居蓝牙设备GATT规范》
image.png

Payload业务规范

BLE_payload标准化.jpg
Flag标识业务数据的特征

Bit序 功能说明
6 消息为上行消息时表示云端还是精灵音箱/App本地处理,0为云端处理,1为本地处理;
消息为下行消息时表示消息来自云端还是精灵音箱/App本地,0为来自云端,1为来自本地
7 后续扩展,填0

DataType标识业务数据的类型,Bit序0~5,当前为0b000001,后续可做扩展。

DataType枚举 功能说明
0x01 默认使用该类型。适用于当前所有的使用场景

业务交互流程

接入设备类型

接入的产品必须符合标准的BLE GATT协议。由于GATT和Mesh协议不同,是基于连接的协议,也就是传输数据之前必须先进行连接,而天猫精灵和APP同时连接的BLE 设备是有限的,所以和天猫精灵连接的BLE设备,只有在需要传输数据的时候才建立GATT的连接,数据传输完成之后,GATT连接就需要断开。
由于这种差异性,根据产品业务不同,将接入的产品主要分为数据上报型设备和数据下发上报型设备。

数据上报型设备

此类设备以上传数据给天猫精灵或APP为主要业务场景,天猫精灵或APP侧没有主动下发命令的需求。体脂秤是典型的数据上报型设备,体脂秤都是主动将采集到的体脂信息主动上报到天猫精灵或APP,天猫精灵或APP在连接还没有建立的情况下,没有主动下发命令的场景。
此类设备只在需要上报数据的时候,向外发送BLE 广播包,天猫精灵和APP扫描到此广播包后就主动连接此设备,连接建立之后,设备主动上报数据到天猫精灵端或APP端,在连接没有断开之前,天猫精灵端或APP 端可以下发命令。
当设备和天猫精灵在2分钟内没有数据传输的话,精灵需要主动断开和设备的连接。同时也允许设备为了功耗的考虑,在完成数据传输后立刻主动断开和天猫精灵的连接。 蓝牙BLE业务说明 - 图4

数据下发上报型设备

此类设备除了上传数据给天猫精灵的业务场景之外,还有天猫精灵主动推送命令给设备的业务场景。此类设备要求此设备一直处在可被连接的状态。天猫精灵或APP需要主动推送命令的时候,先主动连接此设备,然后发送命令。 蓝牙BLE业务说明 - 图5

指令集

CMD对应数据格式Header中的Cmd Type。

1、设备主动上报:
0x01 :蓝牙设备主动上报的设备状态。 蓝牙BLE业务说明 - 图6 2、Request-Response模型:
0x02 :手机App/音箱发出请求指令,需要对方回复,与0x03对应。
0x03 :蓝牙设备回复请求指令,与0x02对应。 蓝牙BLE业务说明 - 图7 0x04 :蓝牙设备发出请求指令,需要手机APP/音箱回复,与0x05对应。
0x05 :手机APP/音箱回复请求指令,与0x04对应。 蓝牙BLE业务说明 - 图8 3、下发命令
0x06:手机App/音箱发送指令,无需对方回复。 蓝牙BLE业务说明 - 图9 4、异常上报:
0x0F :指令异常通知,用于蓝牙设备通知手机App,设备接收到错误的指令或流程出错。 蓝牙BLE业务说明 - 图10

数据(Payload)说明

厂商可以根据设备情况,自选Paylaod数据格式。即:使用厂商自定义私有格式或使用阿里格式。如果厂商选用自定义格式,设备端的改动较小,但需到云端配置脚本数据转换;如果选用阿里格式,则需要设备端实现阿里的数据规范。
自定义脚本规范,参考《自定义透传脚本》
阿里定义的数据格式,参考《智能家居设备蓝牙扩展协议》