mirror of
				https://github.com/0xFEEDC0DE64/arduino-esp32.git
				synced 2025-10-31 06:01:39 +01:00 
			
		
		
		
	
		
			
	
	
		
			68 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Arduino
		
	
	
	
	
	
		
		
			
		
	
	
			68 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Arduino
		
	
	
	
	
	
|   | /*
 | ||
|  |   To upload through terminal you can use: curl -F "image=@firmware.bin" esp8266-webupdate.local/update | ||
|  | */ | ||
|  | 
 | ||
|  | #include <WiFi.h>
 | ||
|  | #include <WiFiClient.h>
 | ||
|  | #include <WebServer.h>
 | ||
|  | #include <ESPmDNS.h>
 | ||
|  | #include <Update.h>
 | ||
|  | 
 | ||
|  | const char* host = "esp32-webupdate"; | ||
|  | const char* ssid = "........"; | ||
|  | const char* password = "........"; | ||
|  | 
 | ||
|  | WebServer server(80); | ||
|  | const char* serverIndex = "<form method='POST' action='/update' enctype='multipart/form-data'><input type='file' name='update'><input type='submit' value='Update'></form>"; | ||
|  | 
 | ||
|  | void setup(void) { | ||
|  |   Serial.begin(115200); | ||
|  |   Serial.println(); | ||
|  |   Serial.println("Booting Sketch..."); | ||
|  |   WiFi.mode(WIFI_AP_STA); | ||
|  |   WiFi.begin(ssid, password); | ||
|  |   if (WiFi.waitForConnectResult() == WL_CONNECTED) { | ||
|  |     MDNS.begin(host); | ||
|  |     server.on("/", HTTP_GET, []() { | ||
|  |       server.sendHeader("Connection", "close"); | ||
|  |       server.send(200, "text/html", serverIndex); | ||
|  |     }); | ||
|  |     server.on("/update", HTTP_POST, []() { | ||
|  |       server.sendHeader("Connection", "close"); | ||
|  |       server.send(200, "text/plain", (Update.hasError()) ? "FAIL" : "OK"); | ||
|  |       ESP.restart(); | ||
|  |     }, []() { | ||
|  |       HTTPUpload& upload = server.upload(); | ||
|  |       if (upload.status == UPLOAD_FILE_START) { | ||
|  |         Serial.setDebugOutput(true); | ||
|  |         Serial.printf("Update: %s\n", upload.filename.c_str()); | ||
|  |         if (!Update.begin()) { //start with max available size
 | ||
|  |           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)) { //true to set the size to the current progress
 | ||
|  |           Serial.printf("Update Success: %u\nRebooting...\n", upload.totalSize); | ||
|  |         } else { | ||
|  |           Update.printError(Serial); | ||
|  |         } | ||
|  |         Serial.setDebugOutput(false); | ||
|  |       } | ||
|  |     }); | ||
|  |     server.begin(); | ||
|  |     MDNS.addService("http", "tcp", 80); | ||
|  | 
 | ||
|  |     Serial.printf("Ready! Open http://%s.local in your browser\n", host); | ||
|  |   } else { | ||
|  |     Serial.println("WiFi Failed"); | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | void loop(void) { | ||
|  |   server.handleClient(); | ||
|  |   delay(1); | ||
|  | } |