阿里云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配置”章節。