设备配网

用户登录/注册后,需要绑定设备才能够使用。对于普通的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...
        }
    }];

相关注意事项如下:

  1. 开发者调用配网方法之前请确认设备已经进入配网状态
  2. 超时时间建议设置长一些, 60s, 90s, 120s等.
  3. manager中的LinkerName为设备开发板的型号, 具体型号详见ACWifiLinkManager.h
  4. 调用接口中传入的参数, 请先检查是否合法, 尽量不要传空字符串, nil, 这类无意义的参数
  5. 在回调中拿到设备的id等参数, 然后可以调用绑定接口进行设备绑定

以下为该接口的详细错误信息描述

错误码 错误描述 可能原因
1960 局域网内没有发现设备 设备配网失败、发送广播失败、路由广播功能被禁用
1961 MCU注册失败 MCU与WiFi通信错误
1962 建立长连接失败 弱网络环境、路由器未能连接云端
1963 与云端激活认证失败 弱网络环境、密钥烧录错误
1999 网络错误或其他 app联网错误

若希望这个配网日志可以上报到云端,通过AbleCloud控制台设备管理查看该设备配网的详细流程,则还需要集成AbleCloud大数据分析SDK即可。

AP配网

配网原理

AP模式配网是指通过APP连接设备发出的AP热点, 然后将设备正常工作时候的WIFI信息发送给设备, 完成设备配网的过程

适用范围

所有支持AP模式的设备, 以及普通配网模式下设备搜索不到目标路由器等情况

整体实现流程

代码实现

步骤一、APP连接设备的AP热点

  1. 点击设备上对应的进入AP模式的按键, 确认设备进入配网模式
  2. 手机进入设置->无限局域网, 找到设备的AP热点, 点击进行连接

步骤二、APP获取设备可用WIFI列表

手机连接到设备AP热点后, 切换到APP页面, 发送请求给设备, 以获取设备可用的WIFI列表:

    ACWifiLinkManager *manager = [[ACWifiLinkManager alloc] initWithLinkerName:ACLinkerNameAPMode];
    [manager searchAvailableWifiTimeout:30 callback:^(NSArray<ACWifiInfo *> *wifiInfo, NSError *error) {
        if (!error) {
            //TODO...
        }
    }];

相关注意事项如下:

  1. LinkerName选择ACLinkerNameAPMode
  2. 请确认你连接的设备AP热点无误
  3. 如果该接口没有搜索到设备列表, 请检查设备是否支持获取可用WIFI
  4. 建议开发者在获取到WIFI列表后,弹窗或者以tableView展示,方便用户点击对应的WIFI直接输入密码.
  5. 因为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...
        }
    }];

相关注意事项如下:

  1. 在配网整个流程完成之前, 设备感知不到用户发送的WIFI和密码是否正确, 如果AP模式配网失败, 建议用户检查自己输入的WIFI信息是否正确.
  2. 有些设备对带有汉字的WIFI名称支持不好, 建议使用英文名称的WIFI信息.
  3. 由于该过程有一个设备连接云端的过程, 所以建议将该过程超时时长设置的长一些

步骤四、APP连接目标WIFI, 接收设备信息回调

手机进入设置->无限局域网, 选择目标WIFI, 连接. 然后切回到APP界面, 等待设备将物理ID等信息返回. 开发者拿到信息后可调用绑定接口进行设备绑定操作等