Added OTAWebUpdater Doc (#1583)
This commit is contained in:
parent
4e5cbdaa7f
commit
0161e28614
@ -28,6 +28,7 @@ Most of the framework is implemented. Most noticable is the missing analogWrite.
|
|||||||
- [Using PlatformIO](docs/platformio.md)
|
- [Using PlatformIO](docs/platformio.md)
|
||||||
- [Building with make](docs/make.md)
|
- [Building with make](docs/make.md)
|
||||||
- [Using as ESP-IDF component](docs/esp-idf_component.md)
|
- [Using as ESP-IDF component](docs/esp-idf_component.md)
|
||||||
|
- [Using OTAWebUpdater](docs/OTAWebUpdate/OTAWebUpdate.md)
|
||||||
|
|
||||||
#### Decoding exceptions
|
#### Decoding exceptions
|
||||||
|
|
||||||
|
59
docs/OTAWebUpdate/OTAWebUpdate.md
Normal file
59
docs/OTAWebUpdate/OTAWebUpdate.md
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
# Over the Air through Web browser
|
||||||
|
OTAWebUpdate is done with a web browser that can be useful in the following typical scenarios:
|
||||||
|
- Once the application developed and loading directly from Arduino IDE is inconvenient or not possible
|
||||||
|
- after deployment if user is unable to expose Firmware for OTA from external update server
|
||||||
|
- provide updates after deployment to small quantity of modules when setting an update server is not practicable
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
- The ESP and the computer must be connected to the same network
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
The sample implementation has been done using:
|
||||||
|
- example sketch OTAWebUpdater.ino
|
||||||
|
- ESP32 (Dev Module)
|
||||||
|
|
||||||
|
You can use another module also if it meets Flash chip size of the sketch
|
||||||
|
|
||||||
|
1-Before you begin, please make sure that you have the following software installed:
|
||||||
|
- Arduino IDE
|
||||||
|
- Host software depending on O/S you use:
|
||||||
|
- Avahi http://avahi.org/ for Linux
|
||||||
|
- Bonjour http://www.apple.com/support/bonjour/ for Windows
|
||||||
|
- Mac OSX and iOS - support is already built in / no any extra s/w is required
|
||||||
|
|
||||||
|
Prepare the sketch and configuration for initial upload with a serial port
|
||||||
|
- Start Arduino IDE and load sketch OTAWebUpdater.ino available under File > Examples > OTAWebUpdater.ino
|
||||||
|
- Update ssid and pass in the sketch so the module can join your Wi-Fi network
|
||||||
|
- Open File > Preferences, look for “Show verbose output during:” and check out “compilation” option
|
||||||
|
|
||||||
|
![verbrose](esp32verbose.PNG)
|
||||||
|
|
||||||
|
- Upload sketch (Ctrl+U)
|
||||||
|
- Now open web browser and enter the url, i.e. http://esp32.local. Once entered, browser should display a form
|
||||||
|
|
||||||
|
![login](esp32login.PNG)
|
||||||
|
|
||||||
|
> username= admin
|
||||||
|
|
||||||
|
> password= admin
|
||||||
|
|
||||||
|
**Note**-*If entering “http://ESP32.local” does not work, try replacing “ESP32” with module’s IP address.This workaround is useful in case the host software installed does not work*.
|
||||||
|
|
||||||
|
Now click on Login button and browser will display a upload form
|
||||||
|
|
||||||
|
![upload](esp32upload.PNG)
|
||||||
|
|
||||||
|
For Uploading the New Firmware you need to provide the Binary File of your Code.
|
||||||
|
|
||||||
|
Exporting Binary file of the Firmware (Code)
|
||||||
|
- Open up the Arduino IDE
|
||||||
|
- Open up the Code, for Exporting up Binary file
|
||||||
|
- Now go to Sketch > export compiled Binary
|
||||||
|
![export](exportTobinary.PNG)
|
||||||
|
|
||||||
|
- Binary file is exported to the same Directory where your code is present
|
||||||
|
|
||||||
|
Once you are comfortable with this procedure go ahead and modify OTAWebUpdater.ino sketch to print some additional messages, compile it, Export new binary file and upload it using web browser to see entered changes on a Serial Monitor
|
||||||
|
|
||||||
|
|
||||||
|
|
BIN
docs/OTAWebUpdate/esp32login.PNG
Normal file
BIN
docs/OTAWebUpdate/esp32login.PNG
Normal file
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
BIN
docs/OTAWebUpdate/esp32upload.PNG
Normal file
BIN
docs/OTAWebUpdate/esp32upload.PNG
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.8 KiB |
BIN
docs/OTAWebUpdate/esp32verbose.PNG
Normal file
BIN
docs/OTAWebUpdate/esp32verbose.PNG
Normal file
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
BIN
docs/OTAWebUpdate/exportTobinary.PNG
Normal file
BIN
docs/OTAWebUpdate/exportTobinary.PNG
Normal file
Binary file not shown.
After Width: | Height: | Size: 19 KiB |
@ -4,18 +4,23 @@
|
|||||||
#include <ESPmDNS.h>
|
#include <ESPmDNS.h>
|
||||||
#include <Update.h>
|
#include <Update.h>
|
||||||
|
|
||||||
const char* host = "ESP32";
|
const char* host = "esp32";
|
||||||
const char* ssid = "xxx";
|
const char* ssid = "xxx";
|
||||||
const char* password = "xxxx";
|
const char* password = "xxxx";
|
||||||
|
|
||||||
WebServer server(80);
|
WebServer server(80);
|
||||||
|
|
||||||
const char* loginIndex = "<form name='loginForm'>"
|
/*
|
||||||
|
* Login page
|
||||||
|
*/
|
||||||
|
|
||||||
|
const char* loginIndex =
|
||||||
|
"<form name='loginForm'>"
|
||||||
"<table width='20%' bgcolor='A09F9F' align='center'>"
|
"<table width='20%' bgcolor='A09F9F' align='center'>"
|
||||||
"<tr>"
|
"<tr>"
|
||||||
"<td colspan=2><center><font size=4><b>ESP32 Login Page</b></font></center>"
|
"<td colspan=2>"
|
||||||
|
"<center><font size=4><b>ESP32 Login Page</b></font></center>"
|
||||||
"<br>"
|
"<br>"
|
||||||
|
|
||||||
"</td>"
|
"</td>"
|
||||||
"<br>"
|
"<br>"
|
||||||
"<br>"
|
"<br>"
|
||||||
@ -31,13 +36,12 @@ const char* loginIndex = "<form name='loginForm'>"
|
|||||||
"<br>"
|
"<br>"
|
||||||
"<br>"
|
"<br>"
|
||||||
"</tr>"
|
"</tr>"
|
||||||
|
|
||||||
"<tr>"
|
"<tr>"
|
||||||
"<td><input type='submit' onclick='check(this.form)' value='Login'></td>"
|
"<td><input type='submit' onclick='check(this.form)' value='Login'></td>"
|
||||||
"</tr>"
|
"</tr>"
|
||||||
"</table>"
|
"</table>"
|
||||||
"</form>"
|
"</form>"
|
||||||
"<script>"
|
"<script>"
|
||||||
"function check(form)"
|
"function check(form)"
|
||||||
"{"
|
"{"
|
||||||
"if(form.userid.value=='admin' && form.pwd.value=='admin')"
|
"if(form.userid.value=='admin' && form.pwd.value=='admin')"
|
||||||
@ -47,17 +51,17 @@ const char* loginIndex = "<form name='loginForm'>"
|
|||||||
"else"
|
"else"
|
||||||
"{"
|
"{"
|
||||||
" alert('Error Password or Username')/*displays error message*/"
|
" alert('Error Password or Username')/*displays error message*/"
|
||||||
|
|
||||||
"}"
|
"}"
|
||||||
"}"
|
"}"
|
||||||
"</script>";
|
"</script>";
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Server Index Page
|
||||||
|
*/
|
||||||
|
|
||||||
|
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'>"
|
||||||
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='file' name='update'>"
|
||||||
"<input type='submit' value='Update'>"
|
"<input type='submit' value='Update'>"
|
||||||
"</form>"
|
"</form>"
|
||||||
@ -91,6 +95,10 @@ const char* serverIndex = "<script src='https://ajax.googleapis.com/ajax/libs/jq
|
|||||||
"});"
|
"});"
|
||||||
"});"
|
"});"
|
||||||
"</script>";
|
"</script>";
|
||||||
|
|
||||||
|
/*
|
||||||
|
* setup function
|
||||||
|
*/
|
||||||
void setup(void) {
|
void setup(void) {
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user