阿里云IoT生活物联网平台对低功耗蓝牙通信类型(BLE)的设备,提供了Breeze协议接入方案,可以便捷实现App-设备-云的完整链路。
背景介绍
本文主要介绍在具备低功耗蓝牙(BLE)能力的设备端上,如何集成Breeze协议,并与手机端App建立连接、对BLE设备的身份进行认证、建立BLE设备与手机之间的安全通信通道,以及将BLE设备端数据通过手机App通道推送至云端等。手机端客户端和云端开发请参见蓝牙连接开发指南。
Breeze协议类似于BLE协议栈中的Profile(配置文件),需要适配并运行于BLE协议栈之上。
设备端Breeze SDK
Breeze协议规定了接入阿里云IoT生活物联网平台的BLE设备与移动端App之间的通信协议,为了方便用户实现更快速的接入,生活物联网设备端SDK提供了Breeze协议的代码实现:Breeze SDK,其结构框图如下所示。
- HAL层:Breeze SDK需要适配BLE Stack,HAL层就是用来适配BLE Stack之用,不同的BLE Stack需要适当修改进行移植和适配。
- 核心组件层:实现了设备端-移动端-云端的认证、通道等逻辑的源码,用户一般不用做修改即可使用。
- 应用层:Breeze提供了设备OTA通道、辅助Wi-Fi配网通道等,用户需要根据实际场景进行使用。
设备端Breeze SDK代码结构
设备端Breeze SDK随生活物联网设备端SDK对外开源,最新版本请获取最近发布的获取SDK含AliOS Things版本。
代码位于$(SDK Src)/framework/bluetooth/breeze
,目录如下。
.
├── Config.in //配合meunconfig组件配置
├── breeze.mk //makefile文档
├── README.md //readme文档
├── api //目录,展示给应用的接口为breeze_export.*是Breeze SDK提供的接口; breeze_awss_export.*是蓝牙辅助配网的接口。依照应用场景选择其一使用
├── core //目录,源码核心实现,包含安全,通道以及扩展指令等的实现
├── hal //参考移植实现,使用AliOS Things OS, BLE协议栈,以及内部mebdtls和安全部分参考
├── include //Breeze SDK的头文件
使用开发指南
开发者可以通过SDK提供的HAL接口进行对接,在自己的运行了BLE协议栈的设备上支持Breeze协议。
移植SDK到第三方平台
breeze_hal_sec
对接安全部分,包含AES128 CBC加解密算法和SHA256接口。其余部分代码和应用维持不变。参见源代码目录下的hal,将第三方的实现替换此文件夹下的HAL实现:OS、BLE协议栈、Security,定义在$(SDK Src)/framework/bluetooth/breeze/hal下,其余部分代码和应用维持不变。
- breeze_hal_ble:对接BLE蓝牙协议栈部分接口,包含蓝牙广播,注册Breeze蓝牙服务等
- breeze_hal_sec:对接安全部分,包含AES128 CBC加解密算法
- breeze_hal_os:对接不同OS的接口,包含OS timer的资源,KV(存储和读取接口)操作等
API接口列表
详细定义和说明参见蓝牙设备端SDK用户编程接口。
HAL接口列表
详细定义和说明参见蓝牙设备端SDK移植接口。
在生活物联网平台定义产品
由于设备最终要通过生活物联网平台认证,所以需要在生活物联网平台申请对应的产品认证信息。
设备端高级应用场景开发
在SDK基础建立安全通道基础上,主要有以下两应用场景:低功耗蓝牙辅助Wi-Fi配网和低功耗蓝牙设备OTA。
蓝牙辅助配网
- 使用场景
Wi-Fi设备需要连接Wi-Fi热点(Wi-Fi AP)之后才能与其它设备进行IP通信。对于没有键盘、没有触摸屏、没有Web Server的Wi-Fi IoT设备而言,如何获取Wi-Fi热点的SSID、密码是实现设备远程管理的第一个关键步骤。
我们将Wi-Fi设备获取到Wi-Fi热点的SSID、密码的步骤称为Wi-Fi配网,蓝牙辅助Wi-Fi配网方案适用于同时支持蓝牙BLE以及Wi-Fi的设备,该方案通过蓝牙BLE通道将Wi-Fi热点的SSID/密码发送给Wi-Fi设备,从而让Wi-Fi设备可以连接到Wi-Fi AP(通常为Wi-Fi无线路由器)。蓝牙辅助Wi-Fi配网的工作原理示意图如下。
可以很容易得出蓝牙辅助Wi-Fi配网构成。
- 设备端SDK:设备端硬件支持Combo芯片(同时支持Wi-Fi和BLE),并运行基于Breeze SDK的蓝牙配网例程。
- 配网手机端SDK:手机集成配套的蓝牙配网SDK或者“云智能”App。
- 开发流程
如果您是一个Wi-Fi的模组商或者设备商,您的模组/设备支持蓝牙BLE以及Wi-Fi并且希望集成阿里云IoT生活物联网平台提供的蓝牙辅助Wi-Fi配网功能,可以按照下面的过程进行模组/设备开发。
- 设备端comboapp开发
在完成设备移植Breeze SDK步骤后,可参考
example/comboapp
实现低功耗蓝牙辅助Wi-Fi配网的功能,并将“产品注册”阶段的设备信息设置到comboapp中。
Breeze设备OTA
- OTA编译配置
可以参考breezeapp示例,默认已经使能OTA功能。
- OTA对接移植
OTA模块代码实现在
framework/uOTA/src/device/ble
下,包含以下目录。. ├── README.md ├── ble.mk ├── inc //包含了对外的接口和对接API │ ├── ais_ota.h │ ├── ota_breeze.h │ ├── ota_breeze_export.h │ ├── ota_breeze_plat.h │ └── ota_breeze_transport.h └── src // OTA内部逻辑的实现 ├── ota_breeze.c ├── ota_breeze_plat.c ├── ota_breeze_service.c └── ota_breeze_transport.c
具体对接函数请参见蓝牙设备端SDK OTA接口。
- OTA调试和使用
OTA的具体用法请参见蓝牙连接开发指南中“运营中OTA配置”章节。