#include <WiFi.h>
#include <WebServer.h>
#include <Update.h>
const char* ssid = "Ateca";
const char* password = "q1w2e3r4t5";
WebServer server(80);
// Cambiamos el diseño HTML para comprobar visualmente la actualización
const char* indexHTML =
"<!DOCTYPE html><html><head><meta charset='utf-8'><title>ESP32 OTA V2</title>"
"<style>body{font-family:Arial;text-align:center;margin-top:50px;background:#e3f2fd;}"
"div{display:inline-block;padding:25px;background:#fff;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,0.15);}"
"h2{color:#0d47a1;}p{color:#2e7d32;font-weight:bold;}"
"input[type=file]{margin:20px 0;}input[type=submit]{padding:10px 20px;background:#0288d1;color:#fff;border:none;border-radius:5px;cursor:pointer;}</style></head>"
"<body><div><h2>ESP32 OTA Portal - Versión 2.0 🚀</h2>"
"<p>¡Felicidades! Esta versión fue cargada por WiFi sin cables.</p>"
"<form method='POST' action='/update' enctype='multipart/form-data'>"
"<input type='file' name='update' accept='.bin'><br>"
"<input type='submit' value='Actualizar Firmware'>"
"</form></div></body></html>";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\n--- Firmware V2 Ejecutándose ---");
Serial.print("IP: ");
Serial.println(WiFi.localIP());
server.on("/", HTTP_GET, []() {
server.send(200, "text/html", indexHTML);
});
server.on("/update", HTTP_POST, []() {
server.sendHeader("Connection", "close");
server.send(200, "text/html", "<h2>Actualizando a nueva versión... Reiniciando</h2>");
delay(1000);
ESP.restart();
}, []() {
HTTPUpload& upload = server.upload();
if (upload.status == UPLOAD_FILE_START) {
Serial.printf("Actualización iniciada: %s\n", upload.filename.c_str());
if (!Update.begin(UPDATE_SIZE_UNKNOWN)) {
Update.printError(Serial);
}
} else if (upload.status == UPLOAD_FILE_WRITE) {
if (Update.write(upload.buf, upload.currentSize) != upload.currentSize) {
Update.printError(Serial);
}
} else if (upload.status == UPLOAD_FILE_END) {
if (Update.end(true)) {
Serial.printf("Éxito: %u bytes escritos.\n", upload.totalSize);
} else {
Update.printError(Serial);
}
}
});
server.begin();
}
void loop() {
server.handleClient();
}