如何用MicroWebSrv构建ESP32 captive portal:5分钟实现设备配网页面
如何用MicroWebSrv构建ESP32 captive portal5分钟实现设备配网页面【免费下载链接】MicroWebSrvA micro HTTP Web server that supports WebSockets, html/python language templating and routing handlers, for MicroPython (used on Pycom modules ESP32)项目地址: https://gitcode.com/gh_mirrors/mi/MicroWebSrvMicroWebSrv是一款轻量级HTTP Web服务器专为MicroPython设计特别适用于Pycom模块和ESP32等嵌入式设备。它支持WebSockets、HTML/Python模板渲染和路由处理是构建嵌入式Web应用的理想选择。本文将详细介绍如何利用MicroWebSrv快速搭建ESP32 captive portal实现设备配网功能。什么是Captive PortalCaptive Portal强制门户是一种网络技术当用户连接到特定Wi-Fi网络时会自动重定向到一个网页通常用于认证、信息展示或设备配置。在ESP32等物联网设备中Captive Portal常被用于设备首次配网用户无需手动输入设备IP地址即可通过自动弹出的网页完成Wi-Fi信息配置。MicroWebSrv核心功能解析要构建Captive Portal我们需要利用MicroWebSrv的以下核心功能1. 路由处理MicroWebSrv提供了灵活的路由装饰器允许开发者将特定URL路径映射到处理函数。在main.py中我们可以看到路由定义的示例MicroWebSrv.route(/test) def func_test(httpClient, httpResponse) : # 处理逻辑通过这种方式我们可以轻松定义Captive Portal所需的各个页面路由如配网表单页面、提交结果页面等。2. WebSocket支持MicroWebSrv内置了WebSocket支持通过microWebSocket.py实现。这使得设备与配网页面之间可以建立实时双向通信便于动态反馈配网进度和结果。在main.py中通过设置AcceptWebSocketCallback来处理WebSocket连接srv.AcceptWebSocketCallback _acceptWebSocketCallback3. HTTP服务器配置MicroWebSrv的核心配置在microWebSrv.py中实现。我们可以设置服务器端口、最大WebSocket接收长度、是否启用多线程WebSocket处理等参数srv MicroWebSrv() srv.MaxWebSocketRecvLen 256 srv.WebSocketThreaded False5分钟快速实现Captive Portal步骤步骤1准备MicroWebSrv环境首先将MicroWebSrv库克隆到本地git clone https://gitcode.com/gh_mirrors/mi/MicroWebSrv然后将库文件上传到ESP32设备中确保以下核心文件存在microWebSrv.pyWeb服务器核心实现microWebSocket.pyWebSocket支持main.py应用入口文件步骤2配置ESP32为接入点模式在main.py中首先需要将ESP32配置为Wi-Fi接入点模式让用户设备能够连接import network ap network.WLAN(network.AP_IF) ap.active(True) ap.config(essidESP32-Captive-Portal, password12345678)步骤3实现Captive Portal路由利用MicroWebSrv的路由功能定义Captive Portal的主要页面MicroWebSrv.route(/) # 根路径Captive Portal入口 def handle_root(httpClient, httpResponse): # 返回配网表单页面 httpResponse.WriteResponseOk( headers { Content-Type: text/html }, content html body h1ESP32设备配网/h1 form action/configure methodPOST labelWi-Fi名称:/label input typetext namessidbr labelWi-Fi密码:/label input typepassword namepasswordbr input typesubmit value配置 /form /body /html ) MicroWebSrv.route(/configure, POST) # 处理配网数据提交 def handle_configure(httpClient, httpResponse): # 解析表单数据 formData httpClient.ReadRequestPostedFormData() ssid formData.get(ssid, ) password formData.get(password, ) # 连接到用户Wi-Fi # ... 连接逻辑 ... # 返回配置结果 httpResponse.WriteResponseOk( headers { Content-Type: text/html }, content htmlbodyh1配网成功/h1/body/html )步骤4启动Web服务器在main.py的最后创建并启动MicroWebSrv实例srv MicroWebSrv(webPath/www) # 指定网页文件目录 srv.Start(threadedTrue) # 以线程方式启动服务器 print(Web server started)步骤5测试Captive Portal功能上电启动ESP32使用手机或电脑搜索并连接ESP32-Captive-Portal Wi-Fi网络系统会自动弹出配网页面或手动打开浏览器访问任意网址输入Wi-Fi名称和密码点击配置等待ESP32连接到指定Wi-Fi完成配网进阶优化使用HTML模板和WebSocket使用HTML模板MicroWebSrv支持Python模板渲染可以将配网页面的HTML代码分离到单独的模板文件中。在www目录下创建portal.html文件然后在路由处理函数中渲染模板from microWebTemplate import render_template MicroWebSrv.route(/) def handle_root(httpClient, httpResponse): content render_template(portal.html) httpResponse.WriteResponseOk(headers{Content-Type: text/html}, contentcontent)添加WebSocket实时反馈利用microWebSocket.py提供的WebSocket功能可以实时反馈配网进度def _acceptWebSocketCallback(webSocket, httpClient): webSocket.RecvTextCallback _recvTextCallback webSocket.RecvBinaryCallback _recvBinaryCallback webSocket.ClosedCallback _closedCallback def _recvTextCallback(webSocket, msg): # 处理来自网页的消息 print(Received message: %s % msg) # 发送配网进度 webSocket.SendText(Connecting to Wi-Fi...)在前端页面www/wstest.html中可以参考WebSocket测试页面的实现添加实时进度显示var websocket new WebSocket(ws:// window.location.host /ws); websocket.onmessage function(evt) { document.getElementById(status).innerText evt.data; };总结通过MicroWebSrv我们可以快速构建功能完善的ESP32 Captive Portal实现设备的便捷配网。MicroWebSrv的路由处理、WebSocket支持和模板渲染等功能为嵌入式Web应用开发提供了强大而灵活的工具。无论是简单的配网页面还是复杂的嵌入式Web应用MicroWebSrv都是一个值得尝试的选择。希望本文能够帮助你快速掌握MicroWebSrv的使用为你的ESP32项目添加便捷的配网功能。如果需要更详细的API文档和示例可以参考项目中的源代码和示例文件。【免费下载链接】MicroWebSrvA micro HTTP Web server that supports WebSockets, html/python language templating and routing handlers, for MicroPython (used on Pycom modules ESP32)项目地址: https://gitcode.com/gh_mirrors/mi/MicroWebSrv创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

dddlib与Spring集成指南:快速上手企业级DDD开发

dddlib与Spring集成指南:快速上手企业级DDD开发

dddlib与Spring集成指南:快速上手企业级DDD开发 【免费下载链接】dddlib A DDD (Domain Driven Design) Library, derived from the idea of Eric Evans book: Domain-Driven Design: Tackling Complexity in the Heart of Software 项目地址: https://gitcode.co…

2026/10/7 22:50:13 阅读更多 →
fetch-mcp最佳实践:10个技巧让你的内容获取工作流更顺畅

fetch-mcp最佳实践:10个技巧让你的内容获取工作流更顺畅

fetch-mcp最佳实践:10个技巧让你的内容获取工作流更顺畅 【免费下载链接】fetch-mcp A flexible HTTP fetching Model Context Protocol server. 项目地址: https://gitcode.com/gh_mirrors/fe/fetch-mcp fetch-mcp是一款灵活的HTTP内容获取工具,…

2026/10/12 5:26:12 阅读更多 →
Core Web Vitals 变差:把字段数据和实验室数据分开看

Core Web Vitals 变差:把字段数据和实验室数据分开看

Core Web Vitals 变差:把字段数据和实验室数据分开看 LCP、INP 和 CLS 描述不同体验。实验室工具便于复现,真实用户数据反映设备与网络分布,两者不能互相替代。 从用户路径定位 为关键页面记录版本、路由和设备档位。LCP 追到具体元素与请求&…

2026/10/7 18:36:49 阅读更多 →

最新新闻

KMP算法深度解析:从next数组到nextval优化,彻底掌握字符串匹配

KMP算法深度解析:从next数组到nextval优化,彻底掌握字符串匹配

1. 为什么我要花一整个周末把 KMP 算法彻底拆开字符串匹配这件事,看起来简单到不值一提——不就是在一段文本里找一个词吗?很多语言的标准库一行代码就搞定了。但如果你真的动手写过底层文本处理工具,或者被面试官按在椅子上追问过“next 数组…

2026/10/12 6:06:34 阅读更多 →
SpringBoot2+Vue3+MyBatis-Plus:电子销售系统毕业设计全拆解

SpringBoot2+Vue3+MyBatis-Plus:电子销售系统毕业设计全拆解

前几天后台有位读者给我留言,说自己马上要交毕业设计了,问有没有一套能拿得出手的Java Web项目——要求不高,能跑、能改、能写进论文、答辩的时候能讲清楚就行。我第一反应就是:那这套基于SpringBoot2 Vue3 MyBatis-Plus MySQL…

2026/10/12 6:06:34 阅读更多 →
泊松方程深度解析:从静电场推导到仿真应用

泊松方程深度解析:从静电场推导到仿真应用

做电磁场仿真或者静电场分析的人,几乎没有不跟泊松方程打交道的。无论是算一个电容器的场分布、设计高压绝缘结构的电场强度,还是做半导体器件中的电势分析,最后往往会落到同一个问题:给定电荷分布和边界条件,求解 ∇φ…

2026/10/12 6:06:34 阅读更多 →
从12345说起:编程中的类型转换、边界条件与测试陷阱

从12345说起:编程中的类型转换、边界条件与测试陷阱

前阵子接手一个项目,代号就叫“12345”。别笑,第一眼我也觉得这名字太敷衍,像是随手敲键盘敲出来的。可真正做起来之后才发现,这个看似平平无奇的数字串,几乎引发了一场关于编程习惯、数据边界和业务设计的连环思考。从…

2026/10/12 6:06:34 阅读更多 →
禁用EDGE更新程序(默认开机自启,并且不经允许更新)

禁用EDGE更新程序(默认开机自启,并且不经允许更新)

如果不用这破浏览器,就直接禁用即可。不禁用就会开机自启。擅自更新,按 Win R,输入 services.msc 并回车。在服务列表中找到以下两个服务:Microsoft Edge Update Service (edgeupdate)Microsoft Edge Update Service (edgeupdate…

2026/10/12 6:06:34 阅读更多 →
项目进度管理10.1-10.3思维导图:定规矩、拆动作、排顺序

项目进度管理10.1-10.3思维导图:定规矩、拆动作、排顺序

做项目管理系统学习的人,十有八九都会在“项目进度管理”这一章卡过壳。第10章的10.1到10.3,也就是规划进度管理、定义活动、排列活动顺序这三小节,是整个进度管理知识域的起手式。看似只有三节,但信息密度极高,术语之…

2026/10/12 6:05:34 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →