最近客户突然新增一个本地OTA需求,要求能实现让用户通过手机按需对设备进行程序更新,经评估后,考虑直接使用芯片自带的WiFi功能,以实现上电后,5分钟内开启WiFi热点,用于进行OTA升级,具体实现代码如下:
1、WiFi热点配置以及简易网页效果优化(居于esp32 ota demo修改,手机页面效果见下方图片),先贴代码段
wifi_conf.h:
#ifndef _WIFI_CONF_H_
#define _WIFI_CONF_H_
#include <WiFi.h>
#include <WiFiClient.h>
#include <WebServer.h>
#include <ESPmDNS.h>
#include <Update.h>
const char* AP_SSID = "FO1_PLUS"; //热点名称
const char* host = "esp32";
const char* ssid = "ssid"; //用户名
const char* password = "password"; //密码
static char web_ack_buf[40];
WebServer server(80);
/*
* Login page
*/
const char* loginIndex =
"<!DOCTYPE html> "
"<html>"
"<head>"
"<title>FO1_PLUS Login</title>"
"<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"> "
"</head>"
"<body>"
"<form name='loginForm'>"
"<div></div>"
"<table width='50%' bgcolor='A09F9F' align='center'>"
"<tr>"
"<td colspan=2>"
"<center><font size=4><b>FO1 PLUS Login Page</b></font></center>"
"<br>"
"</td>"
"<br>"
"<br>"
"</tr>"
"<tr>"
"<td>Username:</td>"
"<td><input type='text' size=15 name='userid'><br></td>"
"<br>"
"<br>"
"</tr>"
"<tr>"
"<td>Password:</td>"
"<td><input type='Password' size=15 name='pwd'><br></td>"
"<br>"
"<br>"
"</tr>"
"<tr>"
"<td colspan=2>"
"<center><input type='submit' size=15 onclick='check(this.form)' value='Login'></center>"
"<br>"
"</td>"
"<br>"
"<br>"
"</tr>"
"</table>"
"</form>"
"</body>"
"</html>"
"<script>"
"function check(form)"
"{"
"if(form.userid.value=='admin' && form.pwd.value=='admin')"
"{"
"window.open('/s