本文來源電子發燒友社區,作者: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文章
2169瀏覽量
124824 -
HarmonyOS
+關注
關注
79文章
1982瀏覽量
30412 -
HiSpark
+關注
關注
1文章
156瀏覽量
6945
發布評論請先 登錄
相關推薦
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用例的MM6108-EKH08開發套件來啦
驗證物聯網Wi-Fi HaLow用例的MM6108-EKH08開發套件來啦 MM6108-EKH08開發套件專為驗證物聯網Wi-Fi HaLow用例而設計。該
Wi-Fi HaLow和傳統Wi-Fi的區別
Wi-Fi HaLow和傳統Wi-Fi的區別? Wi-Fi是一種無線網絡技術,可以連接到互聯網或局域網,為用戶提供無線上網的便利。隨著科技的
評論