大数跨境
0
0

超详细的PB-01/02-KIT开发板接入天猫精灵过程解析。(文末有福利)

超详细的PB-01/02-KIT开发板接入天猫精灵过程解析。(文末有福利) 安信可科技
2021-01-08
0
导读:安信可科技新品蓝牙模块PB-01/02对接天猫精灵—超详细教程


上个月我们发布了基于奉加微芯片设计开发的新款蓝牙模组PB-01/PB-02,这款模组支持快速对接天猫精灵平台,加速产品的智能化。今天我们就已PB-01/02-Kit开发板模拟智能设备,来为大家讲解和演示如何对接天猫精灵。



本文目录 

1.准备工具

2.阿里云生活物联网平台(飞燕平台)

3.固件和配置文件烧录

4.PB-01/02开发板接入天猫精灵

5.对接协议调试及说明

(附件:设备参数列表)

1.准备工具
1.PB-01/02-Kit开发板。用于模拟智能设备灯;
2.PC主机。登录阿里云生活物联网平台(飞燕平台),用于新产品的开发和维护;
3.移动手机设备。用于与天猫精灵语音音箱进行配网,也可以远程操控智能设备;
4.天猫精灵语音音箱。用于与智能设备配网、解绑以及语音操控;
5.PhyPlusKit工具。用于烧录Mesh 程序。


2.阿里云生活物联网平台


2.1 进入阿里云生活物联网平台(飞燕平台)

地址:https://iot.aliyun.com/products/livinglink    
使用支付宝账号进行登录。
点击“免费开通”,切换到阿里云生活物联网平台(飞燕平台)。

点击“确认”,授权登录

2.2 添加新产品

点击“创建新项目”,进行设置。

设置项目名称,可自由填写,这里我们设置为“PB01_02KIT”;项目类型为“天猫精灵生态项目”,勾选“我同意...”,点击“确定”即可。


在新项目里创建新产品,我们先来创建一个灯。

设置新产品的各项参数:
产品名称——自定义
所属品类——电工照明/灯
节点类型——设备
是否接入网关——
接入网关协议——BLE Mesh
协议类型——
非低功耗
数据格式——ICA 标准数据格式
全部设置完成后,点击“确认”。

接下来就可以设置新产品的一些具体信息。
第一步、功能定义。点击“添加功能”,可以进行产品功能的添加与设置。

这里我们先尝试添加一个“色温功能”,点击“色温”,点击“确认”。

第二步、人机交互。
上传APP展示产品图;

1.支持png格式,最大不能超过1M,图片尺寸需大于或等于160px*160px

2.请遵守视觉规范设计图片 查看视觉规范

3.文件名仅限英文、数字、下划线(_)输入,20个字符以内。

填写APP展示产品名称。

展示名称由品牌、名称、型号组合而成,请仔细填写。

品牌设置为“安信可·Ai-Thinker”,其他可自定义。全部设置好后,点击“保存”。

设置面板;设置控制口令。可自定义,此处不做详细的介绍。
接下来添加配网引导。选择“一键配网”,点击“未配置”进行设置。

设置控制按钮;设置升级引导;设置设备告警。可自定义,此处不做详细的介绍。
第三步、设备调试。
上述设置完成后,点击“下一步”,进行模组选择。这里模组直接选择安信可-TB-02。接下来就可以新增测试设备了。

填写BLE设备的MAC地址,作为设备名。

2.3 生成三元组

 由于烧录工具只识别16进制的ProductID(平台是十进制),需要先进行转换。


3.固件和配置文件烧录


3.1 固件及三元组下载

烧录Boot和APP固件,以及CSV表格的三元组。关于模组烧录可以参考上一篇PB系列的入门教程。

也可以用AT+AliGenie=pid,mac,secret的指令设置天猫精灵三元组。

BLE设备正常启动的串口信息如下。

3.2 CSV文件内容格式描述

创建CSV格式文件,用记事本的方式编辑打开,按照以下范例整理申请到的三元组。


4.PB-01/02开发板接入天猫精灵


4.1 天猫精灵音箱联网

天猫精灵音箱进行正常联网,对天猫精灵说“发现队友”,可以通过AT指令查询是否连接成功。
AT+State?    |  Con_State:1   表示已连接天猫精灵Con_State:0   表示未连接天猫精灵

4.2 手机天猫精灵APP控制智能设备

点击添加的设备,进入如下界面,就可以实现调温、调色、调亮度啦!



5.对接协议调试及说明

5.1 语音调试

选择调试音响,在对话框输入需测试的语料,即可观察BLE设备的状态变化。

5.2 语料对应的数据协议控制

语料

设备接收的数据
备注

打开灯

{"aliGenie_data1":{"daddr":282c,"saddr":30,"opcode":8202,"data_len":4,"data":01144100}}

关闭灯

{"aliGenie_data1":{"daddr":282c,"saddr":30,"opcode":8202,"data_len":4,"data":003F4100}}


把灯的亮度
调到100

{"aliGenie_data1":{"daddr":282c,"saddr":30,"opcode":824c,"data_len":5,"data":FFFF4D4100}}


把灯的亮度
调亮一点

{"aliGenie_data1":{"daddr":282c,"saddr":30,"opcode":824c,"data_len":5,"data":8FC2DD4100}}

→FFFF
把灯的亮度
调暗一点

{"aliGenie_data1":{"daddr":282c,"saddr":30,"opcode":824c,"data_len":5,"data":0040AE4100}}

→8F02

把灯的亮度
调小一点

{"aliGenie_data1":{"daddr":282c,"saddr":30,"opcode":824c,"data_len":5,"data":0040E84100}}

→8F02

把灯的亮度
调大一点

{"aliGenie_data1":{"daddr":282c,"saddr":30,"opcode":824c,"data_len":5,"data":8FC2204100}}

→FFFF

把灯的亮度
调到最大

{"aliGenie_data1":{"daddr":282c,"saddr":30,"opcode":824c,"data_len":4,"data":FFFF9E4100}}


把灯的亮度
调到最小

{"aliGenie_data1":{"daddr":282c,"saddr":30,"opcode":824C,"data_len":5,"data":8F02C04100}}


把灯调成
红色

{"aliGenie_data1":{"daddr":282c,"saddr":30,"opcode":dla801,"data_len":9,"data":FD230100800000FFFF}}


把灯调成
蓝色

{"aliGenie_data1":{"daddr":282c,"saddr":30,"opcode":dla801,"data_len":9,"data":2D23010080AAAAFFFF}}


把灯调成
绿色

{"aliGenie_data1":{"daddr":282c,"saddr":30,"opcode":dla801,"data_len":9,"data":5C230100805555FFFF}}


把灯的色温
调到50

{"aliGenie_data1":{"daddr":12f3,"saddr":30,"opcode":825e,"data_len":9,"data":14AEA0280000DF4100}}


把灯的色温
调冷一点

{"aliGenie_data1":{"daddr":12f3,"saddr":30,"opcode":825e,"data_len":9,"data":14AEA0280000BD4100}}


把灯的色温
调暖一点

{"aliGenie_data1":{"daddr":12f3,"saddr":30,"opcode":825e,"data_len":9,"data":14AE20210000D64100}}


把灯调到最冷

{"aliGenie_data1":{"daddr":12f3,"saddr":30,"opcode":825e,"data_len":9,"data":14AE204E0000884100}}


把灯调到最暖

{"aliGenie_data1":{"daddr":12f3,"saddr":30,"opcode":825e,"data_len":9,"data":14AE20030000E34100}}


天猫精灵平台提供标准的语料,特定的语料需要通过走工单的形式跟平台人员联系。

设备接收的数据格式为json字符串,包括daddr目标地址,saddr源地址,opcode操作码,数据长度data_len,data数据内容。我们可以通过蓝牙设备接收到天猫精灵下发的opcode+data有限数据来判断对应的语音控制命令。

5.3 设备调试

根据上面多获取的数据协议,我们打开平台上的设备调试,直接Opencode和参数的命令对已配对天猫精灵的BLE设备进行操控。

如下,输入Opencode:8202,参数01334100,设备的串口就会有响应,说明是可以正常控制的。

5.4 对接天猫精灵协议详解

5.4.1 BLE SIG Mesh 的初始化

BLE设备完成BLE初始化后,就会获取天猫精灵三元组,并创建mesh设备,完成Mesh功能的初始化。

5.4.2、配网前的mesh广播包

 蓝牙mesh设备上电后如处于未配网状态,需要广播Unprovisioned Device Beacon,每次广播时长40ms,广播间隔100ms,广播持续时间默认10分钟。具体产品的广播启动方式和广播持续时间以产品的需求为准。超时后仍未被配网则进入静态广播状态,低功耗不需要进入静默广播状态。就是说未配网的设备一般会向外部广播自身的信息,我们的BLE SIG Mesh设备支持PB-GATT与PB-ADV两种配网方式。

(1)PB-GATT是通过BLE与设备直连进行配网的方式,设备为了支持PB-GATT配网会向外广播ADV_IND类型的unprovisioned dev beacon。
(2)PB-ADV是通过广播包对设备进行配网的方式,天猫精灵采用该种方式对设备配网。设备处于未配网状态下会广播ADV_NONCONN_IND类型的unprovisioned mesh beacon,beacon包含有设备的UUID信息;当用户命令天猫精灵“发现设备”时,天猫精灵会进行一段时间的mesh beacon接收,搜寻周围未配网的设备的UUID。广播包中的Device UUID是识别设备的关键信息,阿里巴巴对Device UUID的定义如下表所示,UUID中各字段采用小端模式进行存储。

Field

Size
(Octets)

Notes
CID
2
公司ID,设置为0x01A8:Taobao
PID
1

bit0-3 蓝牙广播包版本号,目前是0x01
bit4为1:一机一密
bit5为1:支持OTA
bit6~7:00:BLE4.0
             01:BLE4.2
             10:BLE5.0
             11:BLE5.0以上

ProductID
4
阿里巴巴平台颁布,一型一号

MAC
地址

6
阿里巴巴平台颁布,一机一号

Feature
Flag

1

bit7-1:uuid版本号,目前版本为1
bit0 0:处于未配网广播状态
       1:处于静默广播状态

RFU
2
0x00 Reserved for future use
 
5.4.3、mesh设备配网数据传输过程

SIG Mesh配网协议,配网协议的基本数据单元PDU,包含三种类型:start PDU、ack PDU、连续传输PDU。PB-GATT方式建立在BLE连接上,PB-ADV方式是通过广播包。配网时,由天猫精灵/手机APP生成随机的linkID,配网者与未配网的设备之间通过link_open(包括linkid)和link_ack消息建立配网承载层连接,配网结束通过link_close消息关闭配网承载层连接。

 

5.4.4、mesh设备配网流程

Provisioning Capabilities阶段

配网者需要向未配网的设备发出配网邀请provisioning invite,未配网的设备需要回复自身的provisioning capabilities给配网者。mesh设备在Provisioning Capabilities阶段提供OOB方式,要求唯一支持Static OOB方式,其中的AuthValue计算过程如下:AuthValue = SHA256(Product ID,MAC,Secret)
即:将ProductID,MAC,Secret三元组通过字符串用英文逗号连接,然后进行SHA256摘要计算,取前16字节。注:这里用于计算SHA256的英文字母全部为小写。
当作为配网者的设备获取到未配网设备的provisioning capabilities并决定对此设备进行配网,会向该设备发送provisioning start消息。BLE设备端接收到provisioning start消息后,知道天猫精灵对其进行配网使用的public key不包含OOB,认证使用static OOB数据。这决定了接下来配网者天猫精灵与被配网的BLE设备间的密钥交换流程。

Provisioning Public Key Exchange阶段

public keys用于FIPS P-256 Elliptic Curve算法加密使用。
根据配网是否采用带OOB的public key以及认证的方式,provisioning public exchange的过程是不同的;
天猫精灵对BLE设备配网采用的路径是:

① No OOB的public key

② static OOB方式的auth method

与之对应密钥交换时序是:

1、天猫精灵先将自身的public key发给BLE设备;

2、BLE设备再将自身的public key发给天猫精灵。

配网者与被配网设备间的密钥交换都是按照provisioning PDUs的格式多包传输的。
至此,public key exchange过程完成,天猫精灵与BLE设备各自拿到对方的public key,将开始认证过程。

Authentication阶段

 认证过程根据public key以及认证是否带OOB分为几种时序。No OOB的public key 与 static OOB authentication对应的认证时序是:
认证就是配网者与被配网者基于各自的随机数发生器、OOB数据以及配网期间交互过的数据包根据约定的算法生成各自的provisioning confirm数据发给对方;然后将各自用于生成provisioning confirm数据的随机数再发给对方;最后各自校验对方provisioning confirm数据是否正确的过程。
天猫精灵与BLE配网所使用的static OOB其实就是从阿里发放的三元组获取的。天猫精灵应该需要联网从服务器端拿到某个UUID对应的static OOB数据。
天猫精灵和mesh设备会使用Static OOB方式来做认证,如果天猫精灵和mesh设备两边计算得到的Confirmation值不相同,则认证失败,结束流程。
mesh协议在此阶段中有一个步骤是设备端生成一个随机数并发送给天猫精灵,天猫精灵会把这个随机数发送给云端鉴权,云端会保存设备端每次发送的随机数,如果设备端发送的随机数是之前使用过的,则云端将会拒绝该设备配网,所以务必保证每次生成的随机数都不重复。

Provisioning Data阶段

配网认证完毕,配网者就可向被配网设备下发配网数据;
配网数据的下发是加密的,包括两个部分:provisioning data与 provisioning data MIC,最终在BLE设备端被解密。BLE设备端已接收到配网者的下发的全部网络信息,基于这些信息,该设备与配网者同在一个BLE SIG Mesh网络,就可以互相访问控制。
对于多Element设备,天猫精灵在该阶段只会下发Pirmery Element的Unicast Address。其余Element的Unicast Address则根据上一Element的地址自行增加1。

Provision完成配置及绑定AppKey阶段

该阶段,provisioning要么Provisioning Complete要么 Provisioning Fail,天猫精灵在Provisioning Complete之后,会下发AppKey,而provisioning fail后失败的消息携带有错误码。
配网成功的设备已成为Mesh网络中的节点,配网成功后还需要为节点的models绑定AppKey。SIG MESH有两种类型的密钥:NetKey与AppKey。NetKey用于网络层消息认证,AppKey用于传输层应用程序的数据加密。NetKey与AppKey在BLE SIG Mesh网络的节点之间是存在共享的;因此还有另外一种DevKey,每个节点的DevKey可以不同,用于配置端与节点之间的加密。实际使用中,需要将AppKey依次绑定某个节点上需要交互的models。


5.4.5、mesh数据发送和接收

通常情况下,我们建议设备端的scan window/interval/period分别为10ms/10ms/100ms,advertising interval/period分别为5ms/100ms。
设备在状态改变的时候需要用vendor model向天猫精灵订阅地址(0xF000)发送状态改变的Indication;


5.4.6、操作码和操作参数介绍

在mesh协议中规定,操作码分为3种:1字节OpCode;2字节Opcode;3字节Opcode。
1字节Opcode的最高位为0,所以1字节Opcode的取值范围从0x00-0x7e(其中0x7f用于将来扩展用)。
2字节Opcode第一字节的最高位为1,第二位为0,所以2字节OpCode的取值范围从0x80000xbfff,都为SIG分配。
3字节Opcode第一字解的最高两位均为1,后两字节"z"是由SIG分配的Company ID,Company ID使用小端优先的方式传输,阿里巴巴使用的Company ID为0x01a8。"x"可由厂商定义64个opcodes。

操作码格式如下表。

 

Opcode Format 
Notes
0xxxxxxx(excluding 01111111)
1-octet Opcodes
01111111
Reserved for Future Use
10xxxxxx xxxxxxxx
2-octet Opcodes
11xxxxxx zzzzzzzz
3-octet Opcodes
操作参数是根据操作码的要求设置的,由固定数字字段和随机数字字段组成,比如在5.2章节获取到的"opcode":8202,"data":01144100"opcode":8202,"data":003F4100,opcode后面的8202是具体的开关操作码,data中的0114410000144100,红色是固定字段(其中前字段01代表打开状态,00代表关闭状态;后字段4100代表开关的属性),蓝色的是统计数字段(可以是任意16进制数)表示命令执行次数。


附件、Mesh蓝牙设备参数列表

附件、Mesh蓝牙设备参数列表

表①、颜色推荐-数据定义

0
黑色 8900331
天蓝色
139
深蓝色 10824234
棕色
255
蓝色 15631086
紫罗兰
35723
深青色 16711680
红色
65280
绿色 16711935
洋红
65535
青色 16753920
橙色
4915330
靛青 16761035
粉红
7048739
浅褐色 16776960
黄色
8087790
蓝灰色 16777215
白色
8388736
紫色

表②、模式-数据定义

3
阅读模式
226
明亮模式
4
影院模式
353
正常模式
5
温暖模式
378
休闲模式
6
夜灯模式
409
定时休息模式
14
睡眠模式
651
麦克风模式
15
生活模式
652
炫彩模式
33
音乐模式
653
摇一摇模式
57
护眼模式


开发板活动


本篇文章留言前5名的用户,可参与PB-01/02开发板买活动!



活动规则:



  • 本次活动为买 1 个PB-01/02开发板,送 1 个串口转TTL的转接板CP2102;

  • 本篇文章留言前五名的朋友,可向公众号发送“买一送一”,获取客服的微信(前5名以公众号手动回复的消息为准哦);

  • 参与活动的用户可添加微信获取福利,没有参与的朋友可关注下期活动哦!

  • 本活动支持包邮!



https://item.taobao.com/item.htm?spm=a1z10.5-c-s.w4002-16491566042.33.75015f99Ol2XP4&id=634235407419

https://item.taobao.com/item.htm?spm=a1z10.5-c-s.w4002-16491566042.36.75015f99Ol2XP4&id=634241899078



【声明】内容源于网络
0
0
安信可科技
全球领先的联网模组、智能家居等物联网硬件方案提供商。
内容 393
粉丝 0
安信可科技 全球领先的联网模组、智能家居等物联网硬件方案提供商。
总阅读420
粉丝0
内容393