1@page ble_netconfig ble_netconfig 2 3[更正文档](https://gitee.com/alios-things/ble_netconfig/edit/master/README.md)      [贡献说明](https://help.aliyun.com/document_detail/302301.html) 4 5# 概述 6AliOS Things 3.3提供ble_netconfig组件,用BLE功能传递配置信息,包括Wi-Fi配网需要的SSID和密码信息,连接阿里云需要的三元组信息。 7 8<div align=left display=flex> 9 <img src="https://img.alicdn.com/imgextra/i3/O1CN01eJ3mvA27dbuS4ofU3_!!6000000007820-2-tps-768-277.png" style="max-width:800px;" /> 10</div> 11 12## 功能支持 13ble_netconfig组件主要支持如下功能: 14 15- 开启和关闭BLE配置通道功能 16- 在BLE配置通道上传递消息给手机支付宝小程序功能 17 18 19## 版权说明 20> Apache license v2.0 21 22 23## 目录结构 24 25 26```tree 27|-- ble_netconfig.c #BLE网络配置核心代码 28|-- ble_netconfig.h #BLE网络配置头文件 29|-- example #BLE网络配置实例 30| |-- netcfg_example.c 31|-- package.yaml #makefile 32|-- README.md #README文档 33``` 34 35## 依赖组件 36 37- osal_aos 38- ble_host 39- netmgr 40 41# 常用配置 42无 43 44 45# API说明 46## API列表 47| BLE_NetCfg_init | 初始化BLE配置通道 | 48| :--- | :--- | 49| BLE_NetCfg_start | 开启BLE配置通道功能 | 50| BLE_NetCfg_stop | 关闭BLE配置通道功能 | 51| BLE_NetCfg_notificate | HaaS开发板通过蓝牙发送消息给HaaS小程序 | 52| BLE_NetCfg_wifi_get | 获取Wi-Fi热点信息,SSID和密码 | 53| BLE_NetCfg_wifi_set | 设置Wi-Fi热点信息,SSID和密码,配网逻辑会连接Wi-Fi热点 | 54| BLE_NetCfg_devinfo_get | 获取设备三元组信息 | 55| BLE_NetCfg_devinfo_set | 设置设备三元组信息 | 56 57 58 59## API详情 60### BLE_NetCfg_init 61初始化BLE配置通道功能。 62**函数原型** 63 64 65```c 66BLE_NETCFG_STATE BLE_NetCfg_init(BLE_netCfg_callck callback) 67``` 68**输入参数** 69 70| args | description | 71| :--- | :--- | 72| callback | 回调函数 | 73 74**返回参数** 75`0:`成功, `其他值`:失败。 76 77 78### BLE_NetCfg_start 79开启BLE配置通道功能。该功能在收到Wi-Fi热点SSID和密码后,会自动连接网络,并在获得IP后抛出事件。 80 81**函数原型** 82 83 84```c 85BLE_NETCFG_STATE BLE_NetCfg_start(void) 86``` 87**输入参数** 88 89| args | description | 90| :--- | :--- | 91| 无 | | 92 93**返回参数** 94`0:`成功, `其他值`:失败。 95 96 97### BLE_NetCfg_stop 98关闭BLE配置通道功能。 99**函数原型** 100 101 102```c 103BLE_NETCFG_STATE BLE_NetCfg_stop(void) 104``` 105**输入参数** 106 107| args | description | 108| :--- | :--- | 109| 无 | | 110 111**返回参数** 112`0:`成功, `其他值`:失败。 113 114### BLE_NetCfg_notificate 115 116HaaS开发板通过蓝牙发送消息给HaaS小程序 117 118**函数原型** 119 120```c 121BLE_NETCFG_STATE BLE_NetCfg_notificate(const uint8_t *data, uint16_t size) 122``` 123 124**输入参数** 125 126| args | description | 127| :--- | ------------ | 128| data | 传输消息内容 | 129| size | 传输消息长度 | 130 131**返回参数** 132 133`0:`成功, `其他值`:失败。 134 135### BLE_NetCfg_wifi_get 136 137获取Wi-Fi热点信息,SSID和密码 138 139**函数原型** 140 141```c 142BLE_NETCFG_STATE BLE_NetCfg_wifi_get(char **ssid, char **passwd) 143``` 144 145**输入参数** 146 147| args | description | 148| :----- | --------------------------------------- | 149| ssid | 用于存放返回Wi-Fi热点SSID信息的存储空间 | 150| passwd | 用于存放返回Wi-Fi热点密码信息的存储空间 | 151 152**返回参数** 153 154`0:`成功, `其他值`:失败。 155 156### BLE_NetCfg_wifi_set 157 158设置Wi-Fi热点信息,SSID和密码,配网逻辑会连接Wi-Fi热点 159 160**函数原型** 161 162```c 163BLE_NETCFG_STATE BLE_NetCfg_wifi_set(char *ssid, char *passwd) 164``` 165 166**输入参数** 167 168| args | description | 169| ------ | --------------------- | 170| ssid | 传入Wi-Fi热点SSID信息 | 171| passwd | 传入Wi-Fi热点密码信息 | 172 173### BLE_NetCfg_devinfo_get 174 175获取设备三元组信息 176 177**函数原型** 178 179```c 180BLE_NETCFG_STATE BLE_NetCfg_devinfo_get(char **pk, char **dn, char **ds) 181``` 182 183**输入参数** 184 185| args | description | 186| ---- | --------------------------------------- | 187| pk | 用于存放返回设备三元组信息product key | 188| dn | 用于存放返回设备三元组信息device name | 189| ds | 用于存放返回设备三元组信息device secret | 190 191**返回参数** 192 193`0:`成功, `其他值`:失败。 194 195### BLE_NetCfg_devinfo_set 196 197设置设备三元组信息 198 199**函数原型** 200 201```c 202BLE_NETCFG_STATE BLE_NetCfg_devinfo_set(char *pk, char *dn, char *ds) 203``` 204 205**输入参数** 206 207| args | description | 208| ---- | ------------------------------- | 209| pk | 传入设备三元组信息product key | 210| dn | 传入设备三元组信息device name | 211| ds | 传入设备三元组信息device secret | 212 213**返回参数** 214 215`0:`成功, `其他值`:失败。 216 217# 使用示例 218 219组件使用示例相关的代码下载、编译和固件烧录均依赖AliOS Things配套的开发工具,所以首先需要参考[《AliOS Things集成开发环境使用说明之搭建开发环境》](https://help.aliyun.com/document_detail/302378.html),下载安装。 220待开发环境搭建完成后,可以按照以下步骤进行示例的测试。 221 222## 步骤1 创建或打开工程 223 224**打开已有工程** 225 226如果用于测试的案例工程已存在,可参考[《AliOS Things集成开发环境使用说明之打开工程》](https://help.aliyun.com/document_detail/302381.html)打开已有工程。 227 228**创建新的工程** 229 230组件的示例代码可以通过编译链接到AliOS Things的任意案例(solution)来运行,这里选择helloworld_demo案例。helloworld_demo案例相关的源代码下载可参考[《AliOS Things集成开发环境使用说明之创建工程》](https://help.aliyun.com/document_detail/302379.html)。 231 232## 步骤2 添加组件 233 234案例下载完成后,需要在helloworld_demo组件的package.yaml中添加对组件的依赖: 235```yaml 236depends: 237 - ble_netconfig: master 238``` 239 240## 步骤3 下载组件 241 242在已安装了 的开发环境工具栏中,选择Terminal -> New Terminal启动终端,并且默认工作路径为当前工程的workspace,此时在终端命令行中输入: 243 244```shell 245 246aos install ble_netconfig 247 248``` 249 250上述命令执行成功后,组件源码则被下载到了./components/ble_netconfig路径中。 251 252## 步骤4 添加示例 253 254ble_netconfig组件的package.yaml中添加示例代码 255 256```yaml 257source_file: 258 - ble_netconfig.c 259 - example/netcfg_example.c 260``` 261 262## 步骤5 编译固件 263 264在示例代码已经添加至组件的配置文件,并且helloworld_demo已添加了对该组件的依赖后,就可以编译helloworld_demo案例来生成固件了,具体编译方法可参考[《AliOS Things集成开发环境使用说明之编译固件》](https://help.aliyun.com/document_detail/302384.html)。 265 266## 步骤6 烧录固件 267 268helloworld_demo案例的固件生成后,可参考[《AliOS Things集成开发环境使用说明之烧录固件》](https://help.aliyun.com/document_detail/302383.html)来烧录固件。 269 270## 步骤7 打开串口 271 272固件烧录完成后,可以通过串口查看示例的运行结果,打开串口的具体方法可参考[《AliOS Things集成开发环境使用说明之查看日志》](https://help.aliyun.com/document_detail/302382.html)。 273 274当串口终端打开成功后,可在串口中输入help来查看已添加的测试命令。 275 276## 步骤8 测试示例 277 278**CLI命令行输入:** 279netcfg_example 280 281**案例工具** 282 283- 串口工具 284- 支付宝HaaS小程序 285 286打开支付宝,搜索"HaaS小程序"进入小程序操作界面 287 288<div align=left display=flex> 289 <img src="https://img.alicdn.com/imgextra/i2/O1CN01dhcdE21uTS7SSsFCb_!!6000000006038-2-tps-664-704.png" style="max-width:800px;" /> 290</div> 291 292**多个待配网设备** 293 294当存在多个待配网设备时,在小程序界面点击“选择设备”,会弹出设备选择列表。在列表中选择待配网设备。 295 296在CLI命令行输入以下命令,可以查看设备名称和蓝牙地址 297 298```sh 299(ash)# ble_netCfg name 300netconfig device name HaaS-0000004333c5 301BT address 6c-33-33-22-11-11 302``` 303 304netconfig device name和小程序待配网设备列表是对应的。 305 306这里要注意蓝牙地址BT address一定要不一样。如果蓝牙地址一样,则小程序待配网列表只会出现一个设备。此时说明该开发板蓝牙地址没有烧录,需要手动烧录蓝牙地址。 307 308```sh 309aos_mac WIFI xx:xx:xx:xx:xx:xx 310aos_mac BT xx:xx:xx:xx:xx:xx 311``` 312 313设置成功后,输入ble_netCfg name确认蓝牙地址设置成功。重启设备,小程序待配网设备列表会出现多台设备。 314 315<div align=left display=flex> 316 <img src="https://img.alicdn.com/imgextra/i3/O1CN01HCkaIe1hM2hp6d48i_!!6000000004262-0-tps-1170-2532.jpg" style="max-width:800px;" /> 317</div> 318