本文来源电子发烧友社区,作者: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中去,后面我自己在代码里找,终于找到了真正的接口,见图片:
在代码中是这样:
如果是直接用官方的flash存储是长这样:
5).到这里我们的弹出式配网就已经完成了,后面就是添加板子启动的时候读取kv系统里面有没有保存账号密码,如果没有就启动热点模式让用户配网,如果有就直接用sta模式连接对应的wifi,然后该干啥干啥就行了
6).如果想重新配网就搞一个按钮长按恢复出厂就行,这个不用我来说了吧,大家应该都会.
怎么样,是不是挺简单的,具体的细节我就不过多码字了,这里我就直接把视频放出来,大家感受一下最终的效果就行.
5.来谈谈弹出式配网的小缺点:
1.跟手机兼容性有关,可能有的手机不会自动弹出配网界面,而是在系统通知栏出现一个通知,然后手机点击通知才能跳转到对应的网页,关于手机的兼容报告还有待大家共同测试,毕竟个人力量有限
2.需要占用比较大的flash空间,因为弹出式配网有一个网页要存储在芯片上,然后这个网页因为渲染和js脚本会占用比较多的字节,对于flash吃紧的设备不是那么友好
6.最后
有感兴趣想了解的同学可以跟我或者版主绿波电龙联系,视大家的意愿再公开源码,以免被yxh盗用
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中去,后面我自己在代码里找,终于找到了真正的接口,见图片:
在代码中是这样:
如果是直接用官方的flash存储是长这样:
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月,线
智能家居之旅(14):安信可IoT Blufi配网工具新功能介绍
今天给大家介绍一下小程序配网工具-安信可 IoT,近期刚发布了新的版本,新增了服务器地址配置的功能。这个新功能,给我们带来了不少便利,特别是 HomeAssistant 固件使用这
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
ESP-IDF-V4.4版本SmartConfig配网,APP端无法收到配网结果怎么解决?
用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
用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是一种无线网络技术,可以连接到互联网或局域网,为用户提供无线上网的便利。随着科技的
BT Wi-Fi模式是否可以通过ModustoolBox对套件进行编程来实现?
想配置用于分析 CYW43439 的 CY8CPROTO-062S2-43439 原型开发套件。
浏览文档我无法弄清楚如何在不同的 Wi-Fi 和蓝牙模式(电源模式、连接模式等)下配置套件
发表于 01-22 06:19
评论