0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【HarmonyOS HiSpark Wi-Fi IoT 套件试用连载】放大招啦,卸载你的配网app,wifiiot弹出式配网了解一下

开发板试用精选 来源:开发板试用 作者:电子发烧友论坛 2022-11-01 15:34 次阅读
本文来源电子发烧友社区,作者:cszzlsw, 帖子地址:https://bbs.elecfans.com/jishu_2037265_1_1.html


1.前情提要
继上次重磅发布对接腾讯云的帖子之后,地址在这:https://bbs.elecfans.com/jishu_2032877_1_1.html
有一个问题没有解决,那就是wifi联网问题,本期就来介绍一下不要任何app,直接用系统原生的功能实现配网,快来连接一下吧

2.初衷
传统的配网方式一般是搭配一个专用的app,操作比较繁琐,用户体验不太好,弹出式配网就是为了解决这个问题开发的,而且有种很酷炫的感觉而且学会了原理,把网页文件一换,换成一个创意动画神马的哄女朋友开心也是不错的

3.原理
其实弹出式配网的原理并不复杂,整体的原理是先创建一个热点让手机连接到热点,然后开启dns劫持,利用web服务器将访问地址跳转,然后把预先准备好的网页文件发送到连接热点的设备上,在网页上提供按钮点击操作读取wifi列表,然后输入密码,发送到板子去连接,保存,连接的设备可以是手机,电脑等等,连接完成之后就可以重启开发板执行真正的任务了.


4.实现
1).参考了润和仓库里的demo代码很快就创建好了热点:
https://gitee.com/hihopeorg/HarmonyOS-IoT-Application-Development/tree/master/04_wifi
创建热点之后测试一下手机能连接热点第一步就成功了
2).参考润和仓库的udp和tcp的代码demo也比较快的就搞好了dns劫持和web服务器:
https://gitee.com/hihopeorg/HarmonyOS-IoT-Application-Development/tree/master/05_network,这一步做好之后就可以出现弹窗了
3).弹窗出现之后下一步就是下发网页文件到手机,这一步着实花费了一些时间,倒不是网页的发送,而是网页文件的存储,整整花了我5,6个小时之久,到处问人也没问到,查阅了海量的官方文档,最后还是误打误撞(串口抓包研究固件下载流程发现的)找到了方法,具体是什么大家在视频中也可以看到
4).后面就是用户点击手机上的网页来搜索网络和配网了,板子接收到手机发过来的用户名和密码就尝试连接对应的wifi,如果连接成功就保存起来,然后重启板子就行了,这里还有一个问题就是配网的ssid和密码的保存和读取,这里有两种方法,一种是利用鸿蒙自带的kv系统来实现,第二种就是直接读写flash,这里我采用的是kv系统,之前参考了连老师的帖子:https://zhuanlan.zhihu.com/p/274411574
发现不行,根本没有存储到flash中去,后面我自己在代码里找,终于找到了真正的接口,见图片:
214209isdilwdimt70sml5.png
在代码中是这样:
221435r1hnb824nn3os1nb.png 221436my7f45ia8tovv4bc.png
如果是直接用官方的flash存储是长这样:
221437c50o5rutuapk530d.png
5).到这里我们的弹出式配网就已经完成了,后面就是添加板子启动的时候读取kv系统里面有没有保存账号密码,如果没有就启动热点模式让用户配网,如果有就直接用sta模式连接对应的wifi,然后该干啥干啥就行了

6).如果想重新配网就搞一个按钮长按恢复出厂就行,这个不用我来说了吧,大家应该都会.

怎么样,是不是挺简单的,具体的细节我就不过多码字了,这里我就直接把视频放出来,大家感受一下最终的效果就行.

5.来谈谈弹出式配网的小缺点:
1.跟手机兼容性有关,可能有的手机不会自动弹出配网界面,而是在系统通知栏出现一个通知,然后手机点击通知才能跳转到对应的网页,关于手机的兼容报告还有待大家共同测试,毕竟个人力量有限
2.需要占用比较大的flash空间,因为弹出式配网有一个网页要存储在芯片上,然后这个网页因为渲染和js脚本会占用比较多的字节,对于flash吃紧的设备不是那么友好


6.最后
有感兴趣想了解的同学可以跟我或者版主绿波电龙联系,视大家的意愿再公开源码,以免被yxh盗用

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • wi-fi
    +关注

    关注

    14

    文章

    2138

    浏览量

    124457
  • HarmonyOS
    +关注

    关注

    79

    文章

    1974

    浏览量

    30162
  • HiSpark
    +关注

    关注

    1

    文章

    156

    浏览量

    6926
收藏 人收藏

    评论

    相关推荐

    Wi-Fi 8要来了!未来Wi-Fi技术演进方向揭秘

    电子发烧友报道(文/梁浩斌)Wi-Fi 7芯片早在2022年就有产品推出,直到去年年底,Wi-Fi 7设备开始大量推出市场。但从普及率来看,根据奥维云的数据,截至2024年9月,线
    的头像 发表于 11-24 03:14 1588次阅读
    <b class='flag-5'>Wi-Fi</b> 8要来了!未来<b class='flag-5'>Wi-Fi</b>技术演进方向揭秘

    智能家居之旅(14):安信可IoT Blufi工具新功能介绍

    今天给大家介绍一下小程序工具-安信可 IoT,近期刚发布了新的版本,新增了服务器地址配置的功能。这个新功能,给我们带来了不少便利,特别是 HomeAssistant 固件使用这
    的头像 发表于 08-27 16:22 467次阅读
    智能家居之旅(14):安信可<b class='flag-5'>IoT</b> Blufi<b class='flag-5'>配</b><b class='flag-5'>网</b>工具新功能介绍

    BLE Mesh节点后如何不清除信息,进入待网状态?

    esp_ble_mesh_node_local_reset()会清除信息 需求:待节点设备超时未
    发表于 07-19 06:27

    ESP8266失败如何返回消息给APP

    我想知道,用ESP-TOUCH给8266时,如果8266由于某种原因(例如密码不对)无法连上AP,8266可以把失败的原因返回给APP吗? 我之前想过另外单独建立个UDP连接,
    发表于 07-11 07:53

    ESP32C3 wifi失败的原因?

    1, 采用官方提供的at固件,固件版本V2.4.2; 2,发送AT+CWSTARTSMART进入WiFi,启动app; 问题:在2
    发表于 06-26 06:00

    智能如果输入密码错误,程序怎么提示给手机APP

    如果密码输入错误,程序还是处于模式,如何提示给手机APP,说密码输入错误????不能用按键长按3s来重新,我想的是密码输入错误,如何
    发表于 06-19 06:50

    在官的WiFi/smart_config中把的任务改成个函数,为什么不能

    官方写的是任务,我想把任务改成个函数,结果发现
    发表于 06-19 06:08

    ESP-IDF-V4.4版本SmartConfigAPP端无法收到结果怎么解决?

    用ESP-IDF-V4.4,SmartConfig,设备可以拿到SSID和PASSWORD,但是设备上报结果会失败报错。导致APP
    发表于 06-18 07:07

    请问node怎么设置不被特定的provision

    请教一下大神们node怎么设置不被某个特定的provision 想做到的功能是 我想让我某个已经被provision的node主动脱离这个网络然后被另个provision设备
    发表于 06-18 06:31

    扫码时,LCD出现分屏是什么原因导致的?

    在扫码或者智能时,中间看串口好像是少了6,7帧画面,如图下图日志所示,应该是WIFI写flash原因导致psram进不去,时序不对了而分屏,有什么方法可以解决这个协调问题呢,看
    发表于 06-11 06:27

    使用爱星云失败了,我该怎么办?

    使用了5G失败,可长按设备上的恢复出厂按钮(般打开设备开关,并长按即为恢复出厂,如果是模组发送AT+RESTORE),待恢复出厂后使用非5G网络
    的头像 发表于 06-07 09:47 355次阅读
    使用爱星云<b class='flag-5'>配</b><b class='flag-5'>网</b>失败了,我该怎么办?

    用ble mesh provisioner示例给onoff cilent后无法成功发送消息怎么解决?

    请教一下,我用ble mesh provisioner示例给 onoff cilent后无法成功发送消息,报错: BLE_MESH: Model not bound to AppKey
    发表于 06-06 06:14

    Wi-Fi HaLow和传统Wi-Fi的区别

    Wi-Fi HaLow和传统Wi-Fi的区别  Wi-Fi种无线网络技术,可以连接到互联网或局域,为用户提供无线上网的便利。随着科技的
    的头像 发表于 02-02 15:28 1258次阅读

    BT Wi-Fi模式是否可以通过ModustoolBox对套件进行编程来实现?

    想配置用于分析 CYW43439 的 CY8CPROTO-062S2-43439 原型开发套件。 浏览文档我无法弄清楚如何在不同的 Wi-Fi 和蓝牙模式(电源模式、连接模式等)配置套件
    发表于 01-22 06:19

    故障定位:真的懂吗?

    当电力系统的出现故障,我们该如何进行准确的定位呢?这似乎是个复杂的问题,但请放心,恒峰智慧在这里为您详细解答。 首先,我们需要明确什么是
    的头像 发表于 01-04 10:09 388次阅读
    <b class='flag-5'>配</b><b class='flag-5'>网</b>故障定位:<b class='flag-5'>你</b>真的懂吗?