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# 常用配置
4243
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