From 0161e2861458a5694038503cf31d3b7971a2fd3c Mon Sep 17 00:00:00 2001 From: Karan Sharma Date: Wed, 4 Jul 2018 00:13:18 +0530 Subject: [PATCH] Added OTAWebUpdater Doc (#1583) --- README.md | 1 + docs/OTAWebUpdate/OTAWebUpdate.md | 59 ++++++ docs/OTAWebUpdate/esp32login.PNG | Bin 0 -> 12468 bytes docs/OTAWebUpdate/esp32upload.PNG | Bin 0 -> 9044 bytes docs/OTAWebUpdate/esp32verbose.PNG | Bin 0 -> 13872 bytes docs/OTAWebUpdate/exportTobinary.PNG | Bin 0 -> 19432 bytes .../examples/OTAWebUpdater/OTAWebUpdater.ino | 170 +++++++++--------- 7 files changed, 149 insertions(+), 81 deletions(-) create mode 100644 docs/OTAWebUpdate/OTAWebUpdate.md create mode 100644 docs/OTAWebUpdate/esp32login.PNG create mode 100644 docs/OTAWebUpdate/esp32upload.PNG create mode 100644 docs/OTAWebUpdate/esp32verbose.PNG create mode 100644 docs/OTAWebUpdate/exportTobinary.PNG diff --git a/README.md b/README.md index 4c0c046e..4b3c14a4 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,7 @@ Most of the framework is implemented. Most noticable is the missing analogWrite. - [Using PlatformIO](docs/platformio.md) - [Building with make](docs/make.md) - [Using as ESP-IDF component](docs/esp-idf_component.md) +- [Using OTAWebUpdater](docs/OTAWebUpdate/OTAWebUpdate.md) #### Decoding exceptions diff --git a/docs/OTAWebUpdate/OTAWebUpdate.md b/docs/OTAWebUpdate/OTAWebUpdate.md new file mode 100644 index 00000000..383f6214 --- /dev/null +++ b/docs/OTAWebUpdate/OTAWebUpdate.md @@ -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 + + + diff --git a/docs/OTAWebUpdate/esp32login.PNG b/docs/OTAWebUpdate/esp32login.PNG new file mode 100644 index 0000000000000000000000000000000000000000..48c90c7f452b3f87c22b6936cd2f02d2c05ab39d GIT binary patch literal 12468 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%0D;Z|bG! zqR8~~PhW7?e@#2T{im*2#q7-4_vODa%O$@#Yz-@uuGxP0_fh`;#`E8vec!k0*d^;- zB`<>twik1KdHVi)&71t)2X6at+8m2`judcz56b^(towC&zS|eOpC|o=Dtb1qgO@Y! z8oz(Lo$vmIX}>$DjJJZvwiEOFtKsoiqx1KQUgX|$cFKX|p3*+pTy-nkJ$1W}oVBl` z?{~dmRhsI5F$GoDeV)z4(@(ozu+DSFEdC9T&B%m@3i4V-(1P93RlW=oqbr+7S91^7 d73_|`{>OOTxTJY_MKLJ5d%F6$taD0e0syC2$iM&q literal 0 HcmV?d00001 diff --git a/docs/OTAWebUpdate/esp32upload.PNG b/docs/OTAWebUpdate/esp32upload.PNG new file mode 100644 index 0000000000000000000000000000000000000000..81f2eaba79d5124bb08adb2cf8eb73d302dafc9d GIT binary patch literal 9044 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 G&;$SsXWYpE literal 0 HcmV?d00001 diff --git a/docs/OTAWebUpdate/esp32verbose.PNG b/docs/OTAWebUpdate/esp32verbose.PNG new file mode 100644 index 0000000000000000000000000000000000000000..bd9c3fc41fed1dfd93629bb83faaf3e70665deec GIT binary patch literal 13872 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

Tv7A54Sz04;J}IRaXbbt&5S*Qk-B^ zsTHrsku#^jFj4Q#!6t_s=c+rG9F`oVgb(LGw zoNn*XF+K0NQ+ECK{!g{LcD+niYB!l1U-QxR^U3g2U$mF{rhksz@HqVCuNk%LcuOs6n+vAVUr~j0gYYmTuz@Gi5 z@_GArt;o70e$PNQF5oF^`1G6CTdzF-m9#f@{gGD7TF0q|Z+DdJIWVUpwX@=7VfV(T z$JYKfoS&-`yZplbHOo(XeVqI_>)GajGLJbEDxyE-?tb(wZ}uEv`)m6mF0YKcU-@)u z_^R{v|6`V~Em{_@nQ8TP&yi%QUG|4dcIos@UM*f{fBEaIP0Yvk@Gm$2ml&D!kL$MH z<%>09`^2?u%Zr}ZGce3hTP*ospmzG+oeXW_`(H4i6R4jBlvuz3QxqXGz z+k2m>^ljC@RJ zx36+v^Q#;Aeobmg_IY}8V`*=6(rdfgUte?nD=z)iE9$5Eor%x9?fvVKyyR7J7Kvk)R z)OLyJ%sa0(zj5wgIxo{>s3RAk~xnXYI|E`W1Y| z6GL(rb?45=%65GCB?|;Q5NzV@akY}U3I$~O&YKcva#KT_)XkJNc&5bN2`_?W+T#^Imx3=A@hrC=RR#fV(LK;A6*?M5}t~GP7A7Og|5{WYfP?>wcS~s%Dp?`0yj(aw>7)=7I8C1 zrv0`PJN0Gxnf<1J-|zdqZuXY4qbC+Da{_@xvt;d>YS801M zznoeq^S;=?EPGmT?eYuB`8>P-#ms*GwklMnfA8YiQB$@QPR@P&>uA-<%G^^1-}h=r z*5|&;7M6d?d00=JX;Yktw!yD5MT2Xx|1bQR?z5i>ISg#h$kr#$E8Uf_uiMRB%lr68 zyX<0}vpW`U|9HK$XXm!^@1Z`W(_{0u$BMkDl3oA0qwdh2n7>JTGvblqBmr?!qSmOVKsgnhg9pqp1)nC}I z(lh7u***7;L^*8hAu-S)EnX7tXK#%wNUM02y%j)VuM^d#!BcT`}S3zw$>O zy<3pzNDkKbS z-Aw-_3(t!CkXZLk-Q?eNu4D4QK1={*(;M@5Ft^=|#g@?VAx>4+3X*~aj0^5Q#{e&hSv*0gRl*W$Bx~fc>y#+m;HHvO#b3s&Jve@EI$QZU7m1nPV2|(m9s;)Myy$N zR&U?xyi-Sno30+a8oAqOcfo|WXVWikbF+=T0UDHhsc%+df4X$*+T#hIFMVt}-)Xp` ztZu*2y7=|g(T7Ub&7HGeR!Tj1 z^=i|#AJ&I6donJo3Eoe7B>8z)tiJ8y{gFS@cH}A_7p@gc7T9>WwN+>G#?nZ`zWus) z|4x7OEH8;of7;jj!d)yhMdDi{<#E(Yv7gss%SM4ffoA!0Jc5i*v zn#A2AzjL%fX7D`L>Dgafs!|#rH`6QgMCsjIEA07u_Z!TQtCqE1qkgHEQBN{lKkiv^ z%=!BKxQ(&vZ|$07SNKM@^zZH#xxdE?n~d`JeM;uNeRJE&+DTPW;Kj+uK@q)IO=zE% zkaSq&_Bry~!ZVYn&8}KKHGEmX`rkL?_b%%=E?m#|dgm6|c;Ei;&PkcMmwbDkR^6TU z^>zF;(PY7|F|mR7dQ5v}u92PsN;(HV&RqJ@o=wx)s^vqU70BHOL=OIt&-(LqwZoqI zd?10#&r**47YH)se;RRY|7%lukXVCefe>UKiGiORG(^n6fNw46livUOtN!zIAFZnR Sbgi!iWP+!wpUXO@geCy=|D-qo literal 0 HcmV?d00001 diff --git a/docs/OTAWebUpdate/exportTobinary.PNG b/docs/OTAWebUpdate/exportTobinary.PNG new file mode 100644 index 0000000000000000000000000000000000000000..62d858317243fa65685c2d21274b70c8a093b027 GIT binary patch literal 19432 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 literal 0 HcmV?d00001 diff --git a/libraries/ArduinoOTA/examples/OTAWebUpdater/OTAWebUpdater.ino b/libraries/ArduinoOTA/examples/OTAWebUpdater/OTAWebUpdater.ino index aa8aaf03..ed93c59f 100644 --- a/libraries/ArduinoOTA/examples/OTAWebUpdater/OTAWebUpdater.ino +++ b/libraries/ArduinoOTA/examples/OTAWebUpdater/OTAWebUpdater.ino @@ -4,93 +4,101 @@ #include #include -const char* host = "ESP32"; +const char* host = "esp32"; const char* ssid = "xxx"; const char* password = "xxxx"; WebServer server(80); -const char* loginIndex = "

" - "" - "" - "" - "
" - "
" - "" - "" - "" - "" - "
" - "
" - "" - "" - "" - "
" - "
" - "" +const char* loginIndex = + "" + "
ESP32 Login Page
" - "
" +/* + * Login page + */ - "
Username:
Password:
" + "" + "" + "
" + "
" + "" + "" + "" + "" + "
" + "
" + "" + "" + "" + "
" + "
" + "" + "" + "" + "" + "
" + "
ESP32 Login Page
" + "
" + "
Username:
Password:
" +"" +""; + +/* + * Server Index Page + */ + +const char* serverIndex = +"" +"
" + "" + "" + "
" + "
progress: 0%
" + ""; - "" - "" - "" - "" - "" - ""; - - - - - -const char* serverIndex = "" - "
" - "" - "" - "
" - "
progress: 0%
" - ""; +/* + * setup function + */ void setup(void) { Serial.begin(115200); @@ -110,7 +118,7 @@ void setup(void) { Serial.println(WiFi.localIP()); /*use mdns for host name resolution*/ - if (!MDNS.begin(host)) { //http://esp32.local + if (!MDNS.begin(host)) { //http://esp32.local Serial.println("Error setting up MDNS responder!"); while (1) { delay(1000);