美文网首页cocoapods蓝牙
WiFi配网2 - 配网

WiFi配网2 - 配网

作者: 何以_aaa | 来源:发表于2021-02-24 17:29 被阅读0次

    项目暂时告一段落,整理下大概功能及遇到的问题。

    需求:给WiFi对讲机配网
    大概流程:1.获取本机连接的WiFi名称 2.将WiFi名称和密码发送给设备

    1. 配网

    WiFi配网无非是手机端将WiFi名称和密码发送给硬件,硬件接收到后连接到指定的WiFi 上;其中SmartConfig是主要实现方式,SmartConfig又名快连,原理大概是App发送包含Wifi名称和密码的UDP广播包,硬件接收到后,根据定好的数据组织形式,解出Wifi名和密码,然后连接。

    我们一共经历了3个方案,最终使用的方案3,主要是跟随硬件端的要求做修改,有一些使用心得:
    ESPTouch与AirKiss相较而言,AirKiss使用更加简洁,这两种具体用哪个和硬件小伙伴商量,据硬件小伙伴说后者成功率更高一点,但是并未验证;
    我们在使用AirKiss的时候,最开始是没问题的,但是后来配网成功率比较低(这个成功率是指将WiFi信息发到硬件的成功率,至于硬件能否连上是下一步),具体原因未查明,所以放弃了AirKiss,基于我们硬件的特殊性,使用了蓝牙方案,成功率100%。

    1.1 方案1 SmartConfig - ESPTouch

    下载demo修改使用即可:
    https://github.com/EspressifApp/EsptouchForIOS

    1.2 方案2 SmartConfig- AirKiss

    AirKiss是微信硬件平台提供的一种WiFi设备快速入网配置技术,与ESPTouch是两种不同的协议。
    下载demo修改使用即可:
    https://github.com/James-oc/JMAirKiss

    调试中可能会遇到的问题:
    1.绑定端口报错重复绑定,把调试的app杀死后再重新运行代码即可,偶尔直接覆盖安装的时会报错
    2.配网时候若成功率不高,可考虑重新发送数据,多尝试几次

    1.3 方案3 蓝牙

    这种方案比较特殊,只提供一种思路,因为只适用于我们这种硬件设备,同时包含蓝牙模块和WiFi模块,并且在app中已经连接设备蓝牙,并已实现通信的情况下使用:
    1.在app中连接设备蓝牙
    2.通过蓝牙将Wifi名称与密码发送给设备,设备自行连接

    app与硬件两端简单定义下数据格式:如WiFi名长度规定为32位,不足补0;后添加WiFi密码,最后以0结尾

            // 1.wifi名称
            NSData *nameData = [wifiName dataUsingEncoding:NSUTF8StringEncoding];
            NSMutableData *allData = [[NSMutableData alloc] initWithData:nameData];
            
            // 2.32位补0
            NSInteger nameLen = nameData.length;
            NSInteger count = 32-nameLen;
            Byte *zeroByte = (Byte *)malloc(count);
            if (nameLen < 32) {
                for (int i = 0; i < count; i++) {
                    zeroByte[i] = 0;
                }
            }
            [allData appendBytes:zeroByte length:count];
            
            // 3.wifi
            NSData *psdData = [wifiPsd dataUsingEncoding:NSUTF8StringEncoding];
            [allData appendData:psdData];
            
            // 4.以0结尾
            Byte *zeroByte1 = (Byte *)malloc(count);
            zeroByte1[0] = 0;
            [allData appendBytes:zeroByte1 length:1];
    

    相关文章

      网友评论

        本文标题:WiFi配网2 - 配网

        本文链接:https://www.haomeiwen.com/subject/ydvsfltx.html