设备配网
用户登录/注册后,需要绑定设备才能够使用。对于普通的WIFI连接类型设备,绑定设备之前,首先需在APP上给出配置设备进入SmartConfig状态的提示;然后填写当前手机连接的WiFi和密码,调用startAbleLink
将SSID与密码广播给设备,设备拿到WiFi密码后连接到云端然后开始局域网广播自己的物理Id和subdomainId,APP拿到回调后即可以调用bindDevice
接口绑定设备。
设备配网需要使用到ACWifiLinkManager
, 所以需要在项目相关的类的头部添加如下代码:
#import "ACWifiLinkManager.h"
普通SmartLink配网
示例是使用了庆科模块的设备配网方法(假设当前Wifi的密码是12345678):
ACWifiLinkManager *manager = [[ACWifiLinkManager alloc] initWithLinkerName:ACLinkerNameEasyLink];
[manager sendWifiInfo:[ACWifiLinkManager getCurrentSSID] password:@"12345678" timeout:60 callback:^(NSArray *localDevices, NSError *error) {
if (!error) {
//TODO...
}
}];
相关注意事项如下:
- 开发者调用配网方法之前请确认设备已经进入配网状态
- 超时时间建议设置长一些, 60s, 90s, 120s等.
- manager中的LinkerName为设备开发板的型号, 具体型号详见
ACWifiLinkManager.h
- 调用接口中传入的参数, 请先检查是否合法, 尽量不要传空字符串, nil, 这类无意义的参数
- 在回调中拿到设备的id等参数, 然后可以调用绑定接口进行设备绑定
以下为该接口的详细错误信息描述
错误码 | 错误描述 | 可能原因 |
---|---|---|
1960 | 局域网内没有发现设备 | 设备配网失败、发送广播失败、路由广播功能被禁用 |
1961 | MCU注册失败 | MCU与WiFi通信错误 |
1962 | 建立长连接失败 | 弱网络环境、路由器未能连接云端 |
1963 | 与云端激活认证失败 | 弱网络环境、密钥烧录错误 |
1999 | 网络错误或其他 | app联网错误 |
若希望这个配网日志可以上报到云端,通过AbleCloud控制台设备管理查看该设备配网的详细流程,则还需要集成AbleCloud大数据分析SDK即可。
AP配网
配网原理
AP模式配网是指通过APP连接设备发出的AP热点, 然后将设备正常工作时候的WIFI信息发送给设备, 完成设备配网的过程
适用范围
所有支持AP模式的设备, 以及普通配网模式下设备搜索不到目标路由器等情况
整体实现流程
代码实现
步骤一、APP连接设备的AP热点
- 点击设备上对应的进入AP模式的按键, 确认设备进入配网模式
- 手机进入设置->无限局域网, 找到设备的AP热点, 点击进行连接
步骤二、APP获取设备可用WIFI列表
手机连接到设备AP热点后, 切换到APP页面, 发送请求给设备, 以获取设备可用的WIFI列表:
ACWifiLinkManager *manager = [[ACWifiLinkManager alloc] initWithLinkerName:ACLinkerNameAPMode];
[manager searchAvailableWifiTimeout:30 callback:^(NSArray<ACWifiInfo *> *wifiInfo, NSError *error) {
if (!error) {
//TODO...
}
}];
相关注意事项如下:
- LinkerName选择ACLinkerNameAPMode
- 请确认你连接的设备AP热点无误
- 如果该接口没有搜索到设备列表, 请检查设备是否支持获取可用WIFI
- 建议开发者在获取到WIFI列表后,弹窗或者以tableView展示,方便用户点击对应的WIFI直接输入密码.
- 因为AP是一个点对点的操作, 所以超时时间不建议设置太长, 建议10s ~ 30s之间
步骤三、APP发送WIFI用户名和密码
建议开发者拿到设备可用WIFI列表后, 弹窗或者以tableView展示, 用户可以直接点击对应的WIFI, 然后输入密码发送即可(以WIFIName:Hello_World, 密码:12345678为例):
[self.manager APSendWifiInfo:@"Hello_World" password:@"12345678" timeout:120 callback:^(BOOL response, NSArray *localDevices, NSError *error) {
if (!error) {
//TODO...
}
}];
相关注意事项如下:
- 在配网整个流程完成之前, 设备感知不到用户发送的WIFI和密码是否正确, 如果AP模式配网失败, 建议用户检查自己输入的WIFI信息是否正确.
- 有些设备对带有汉字的WIFI名称支持不好, 建议使用英文名称的WIFI信息.
- 由于该过程有一个设备连接云端的过程, 所以建议将该过程超时时长设置的长一些
步骤四、APP连接目标WIFI, 接收设备信息回调
手机进入设置->无限局域网, 选择目标WIFI, 连接. 然后切回到APP界面, 等待设备将物理ID等信息返回. 开发者拿到信息后可调用绑定接口进行设备绑定操作等