Added OTAWebupdated (#1544)
* added OTAWebUpdater * added OTAWebUpdater * Updated OTAWebUpdater
This commit is contained in:
		
							parent
							
								
									a8ccbd40a4
								
							
						
					
					
						commit
						47421b869f
					
				
							
								
								
									
										160
									
								
								libraries/ArduinoOTA/examples/OTAWebUpdater/OTAWebUpdater.ino
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										160
									
								
								libraries/ArduinoOTA/examples/OTAWebUpdater/OTAWebUpdater.ino
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,160 @@ | ||||
| #include <WiFi.h> | ||||
| #include <WiFiClient.h> | ||||
| #include <WebServer.h> | ||||
| #include <ESPmDNS.h> | ||||
| #include <Update.h> | ||||
| 
 | ||||
| const char* host = "ESP32"; | ||||
| const char* ssid = "xxx"; | ||||
| const char* password = "xxxx"; | ||||
| 
 | ||||
| WebServer server(80); | ||||
| 
 | ||||
| const char* loginIndex = "<form name='loginForm'>" | ||||
|                          "<table width='20%' bgcolor='A09F9F' align='center'>" | ||||
|                          "<tr>" | ||||
|                          "<td colspan=2><center><font size=4><b>ESP32 Login Page</b></font></center>" | ||||
|                          "<br>" | ||||
| 
 | ||||
|                          "</td>" | ||||
|                          "<br>" | ||||
|                          "<br>" | ||||
|                          "</tr>" | ||||
|                          "<td>Username:</td>" | ||||
|                          "<td><input type='text' size=25 name='userid'><br></td>" | ||||
|                          "</tr>" | ||||
|                          "<br>" | ||||
|                          "<br>" | ||||
|                          "<tr>" | ||||
|                          "<td>Password:</td>" | ||||
|                          "<td><input type='Password' size=25 name='pwd'><br></td>" | ||||
|                          "<br>" | ||||
|                          "<br>" | ||||
|                          "</tr>" | ||||
| 
 | ||||
|                          "<tr>" | ||||
|                          "<td><input type='submit' onclick='check(this.form)' value='Login'></td>" | ||||
|                          "</tr>" | ||||
|                          "</table>" | ||||
|                          "</form>" | ||||
|                          "<script>" | ||||
|                          "function check(form)" | ||||
|                          "{" | ||||
|                          "if(form.userid.value=='admin' && form.pwd.value=='admin')" | ||||
|                          "{" | ||||
|                            "window.open('/serverIndex')" | ||||
|                          "}" | ||||
|                          "else" | ||||
|                          "{" | ||||
|                          " alert('Error Password or Username')/*displays error message*/" | ||||
|                           | ||||
|                          "}" | ||||
|                          "}" | ||||
|                          "</script>"; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| const char* serverIndex = "<script src='https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js'></script>" | ||||
|                           "<form method='POST' action='#' enctype='multipart/form-data' id='upload_form'>" | ||||
|                           "<input type='file' name='update'>" | ||||
|                           "<input type='submit' value='Update'>" | ||||
|                           "</form>" | ||||
|                           "<div id='prg'>progress: 0%</div>" | ||||
|                           "<script>" | ||||
|                           "$('form').submit(function(e){" | ||||
|                           "e.preventDefault();" | ||||
|                           "var form = $('#upload_form')[0];" | ||||
|                           "var data = new FormData(form);" | ||||
|                           " $.ajax({" | ||||
|                           "url: '/update'," | ||||
|                           "type: 'POST'," | ||||
|                           "data: data," | ||||
|                           "contentType: false," | ||||
|                           "processData:false," | ||||
|                           "xhr: function() {" | ||||
|                           "var xhr = new window.XMLHttpRequest();" | ||||
|                           "xhr.upload.addEventListener('progress', function(evt) {" | ||||
|                           "if (evt.lengthComputable) {" | ||||
|                           "var per = evt.loaded / evt.total;" | ||||
|                           "$('#prg').html('progress: ' + Math.round(per*100) + '%');" | ||||
|                           "}" | ||||
|                           "}, false);" | ||||
|                           "return xhr;" | ||||
|                           "}," | ||||
|                           "success:function(d, s) {" | ||||
|                           "console.log('success!')" | ||||
|                           "}," | ||||
|                           "error: function (a, b, c) {" | ||||
|                           "}" | ||||
|                           "});" | ||||
|                           "});" | ||||
|                           "</script>"; | ||||
| void setup(void) { | ||||
|   Serial.begin(115200); | ||||
| 
 | ||||
|   // Connect to WiFi network
 | ||||
|   WiFi.begin(ssid, password); | ||||
|   Serial.println(""); | ||||
| 
 | ||||
|   // Wait for connection
 | ||||
|   while (WiFi.status() != WL_CONNECTED) { | ||||
|     delay(500); | ||||
|     Serial.print("."); | ||||
|   } | ||||
|   Serial.println(""); | ||||
|   Serial.print("Connected to "); | ||||
|   Serial.println(ssid); | ||||
|   Serial.print("IP address: "); | ||||
|   Serial.println(WiFi.localIP()); | ||||
| 
 | ||||
|   /*use mdns for host name resolution*/ | ||||
|   if (!MDNS.begin(host)) {            //http://esp32.local
 | ||||
|     Serial.println("Error setting up MDNS responder!"); | ||||
|     while (1) { | ||||
|       delay(1000); | ||||
|     } | ||||
|   } | ||||
|   Serial.println("mDNS responder started"); | ||||
|   /*return index page which is stored in serverIndex */ | ||||
|   server.on("/", HTTP_GET, []() { | ||||
|     server.sendHeader("Connection", "close"); | ||||
|     server.send(200, "text/html", loginIndex); | ||||
|   }); | ||||
|   server.on("/serverIndex", HTTP_GET, []() { | ||||
|     server.sendHeader("Connection", "close"); | ||||
|     server.send(200, "text/html", serverIndex); | ||||
|   }); | ||||
|   /*handling uploading firmware file */ | ||||
|   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.printf("Update: %s\n", upload.filename.c_str()); | ||||
|       if (!Update.begin(UPDATE_SIZE_UNKNOWN)) { //start with max available size
 | ||||
|         Update.printError(Serial); | ||||
|       } | ||||
|     } else if (upload.status == UPLOAD_FILE_WRITE) { | ||||
|       /* flashing firmware to ESP*/ | ||||
|       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); | ||||
|       } | ||||
|     } | ||||
|   }); | ||||
|   server.begin(); | ||||
| } | ||||
| 
 | ||||
| void loop(void) { | ||||
|   server.handleClient(); | ||||
|   delay(1); | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user