一、说明
该配网功能需要使用蓝牙为设备配置网络,通过蓝牙通道传输WiFi网络信息和区域配置,最终实现设备P2P连接。
二、配网流程

图1:蓝牙配网完整流程图
三、流程说明与对接
(一)设备端进入蓝牙配网模式
设备通过硬件触发(如按键长按)进入蓝牙配网模式,启动蓝牙广播,对外发送设备标识信息。
(二)客户端解析蓝牙广播包
- 获取蓝牙名称用于APP界面显示
- 获取蓝牙地址(MAC地址)用于后续通信
- 解析设备型号、厂商等基础信息(可选)
实作过程:客户端通过蓝牙扫描功能获取周边蓝牙设备列表,过滤出处于配网模式的目标设备。
(三)用户选择待配网的设备
APP展示扫描到的可配网设备列表,用户选择目标设备后,进入WiFi信息配置页面。
(四)客户端发送WiFi配置给设备
客户端从DeviceProfile(每一个设备图标都有对应的profile)获取蓝牙设备的服务uuid和特征值uuid。
客户端通过蓝牙设备ID和uuid的write、read服务,与设备交互数据。
1. APP发送WiFi配置信息结构
{
"m": "",
"i": ,
"p":{
"s": "",
"p": "",
"r": ""
}
}
2. WiFi配置信息参数说明
| 参数 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
m | string | 是 | connect,固定值。表示请求发送网络配置信息 |
i | int | 是 | 请求ID(指令标识),需与设备回复保持一致 |
p | object | 是 | 请求参数对象,包含WiFi信息和区域配置 |
3. WiFi配置信息 - params 参数定义说明
| 参数 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
s | string | 是 | ssid,表示目标WiFi的SSID(网络名称) |
p | string | 是 | password,表示目标WiFi的连接密码 |
r | string | 是 | region,根据Kalay App当前所在环境,将区域信息同步给设备 |
4. 区域定义说明
| 参数值 | 说明 |
|---|---|
cn | 中国大陆地区 |
us | 北美地区(美国、加拿大) |
eu | 欧洲地区(符合GDPR合规要求) |
(五)设备端回复设备信息
设备接收并验证WiFi配置信息后,返回设备P2P连接所需的核心信息。
1. 设备连线信息结构
{
"i": ,
"r":{
"s": ,
"d": "",
"p": "",
"a": ""
}
}
2. 设备回复连线信息参数说明
| 参数 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
i | int | 是 | 请求ID,与APP发送的i值保持一致 |
r | object | 是 | 结果参数对象,包含连接状态和设备信息 |
3. result参数说明
| 参数 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
s | int | 是 | state,设备连接状态(参考下方状态定义) |
d | string | 是 | uid/udid,设备唯一标识(20位uid或40位udid) |
p | string | 是 | password,设备的AV连线密码,不能为空 |
a | string | 否 | authkey,设备的认证密钥(可选) |
备注:
- 当参数
"a"不存在,说明设备不支持authkey认证方式 - 当参数
"a"存在时:- 值为空或
"",APP将使用默认8个0作为authkey进行连线 - 值不为空,APP使用该值作为authkey进行连线
- 值为空或
4. state参数值说明
| 参数值 | 状态说明 |
|---|---|
0 | 待配网(设备已接收配置,准备连接WiFi) |
10 | 联网中(设备正在尝试连接目标WiFi) |
20 | 获取IP中(WiFi连接成功,正在获取IP地址) |
50 | 设备配网成功(已接入网络,等待P2P登录) |
100 | 设备配网成功,且P2P Login成功(可正常通信) |
(六)客户端获取设备配网状态
APP通过蓝牙发送状态查询请求,获取设备配网进度和结果。
1. 获取设备配网状态信息结构
{
"m": "",
"i":
}
2. 客户端获取设备状态信息参数说明
| 参数 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
m | string | 是 | status,固定值。表示请求查询配网状态 |
i | int | 是 | 请求ID(指令标识),需与设备回复保持一致 |
(七)设备端回复配网状态
设备根据当前配网进度,返回详细状态信息和错误提示(如有)。
1. 设备回复配网状态信息结构
{
"i": ,
"s": ,
"e":{
"c": ,
"m": ""
}
}
2. 设备回复配网状态信息参数说明
| 参数 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
i | int | 是 | 请求ID,与APP发送的i值保持一致 |
s | int | 是 | state,连接状态(参考3.5节state参数说明) |
e | object | 是 | 错误信息对象,包含错误码和描述 |
3. error参数说明
| 参数 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
c | int | 是 | 错误码:0表示无错误,其他值表示具体错误类型 |
m | string | 是 | 错误描述信息,用于APP展示给用户 |
四、注意事项
1. 建议在APP中添加配网超时处理(推荐超时时间30秒),避免用户长时间等待;
2. 设备端需实现蓝牙连接断开后的自动重广播逻辑,确保配网过程的稳定性;
3. 客户端需兼容不同蓝牙版本的设备,建议最低支持BLE 4.0及以上版本。
