Thank you for the kind comment. I certainly try my best, and feel I've improved over time (still ways to go). I'm glad people like yourself find it useful. Thanks for watching!
so simple yet so elegant! i've just started messing with OTA programming and kept running into a wall with http server and OTA running side by side. i did one thing differently though - i implemented an async wait function, so it's not blocking the main loop.
Very good, thank you. I'm already using your '15 second from restart' idea on my light switches, together with Andreas's reed switch idea for the reset, now I don't need to bother with the reed switch, thank you!
Brilliant tutorial Thank you very much. I just wanted to add a finding of my own... If you open a second instance of Adruino and set port to the USB Com Port you can still have access to the Serial monitor in the second Arduino IDE whilst still be able upload via WiFi from the First Adduino IDE. Handy for debugging. Harry
Cisco - thank you so much for your tutorials. I went from zero to (very nearly) hero RE ESP8266 and OTA with these two tutorials. Simple, well explained, and no showing off... (apart from that neat trick with the LED - digitalWrite(2, !digitalRead(2)); ) That is cool! Thanks++
Sorry to be offtopic but does someone know a method to get back into an instagram account? I stupidly lost the login password. I would love any help you can offer me!
@Immanuel Hassan Thanks so much for your reply. I found the site thru google and I'm in the hacking process atm. Seems to take quite some time so I will reply here later with my results.
Thankyou , this is what I kneed, very clear and informative explenation for us who still is new to OTA. I like Your videos, please keep making them for us. Once again, a big thanx!
It worked quite OK, but I found that on a running system with 6 MQTT nodes which run all the time, if I turned up with my notebook to upgrade firmware on any node, the Arduino IDE does not see the controllers WiFi port. It only sees the port when ArduinoOTA.handle() is executed. What I do is I execute that function once a minute WHEN THE OTA flag is NOT set. At most the laptop only has to wait for a minute before the WiFi ports are recognized.
How to regain access to the ip address port from the IDE Another solution is to add a "fake programmer" to the "Tools" menu drop down. 1st, on Windows10, find the file "programmers.txt" . The one that worked for me was: C:\Users\joe\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.3\programmers.txt. 2. Add the following lines at the bottom of programmers.txt file, save it, restart the IDE. # ESP Wemos #2 50:02:91:AA:BB:CC (just a comment line) arduinoOTA142.name=ESP-Wemos-OTA (Drop down menu text) arduinoOTA142.program.tool=arduinoOTA (Don't know, just part of the IDE code) arduinoOTA142.ip=192.168.10.142 (The static dhcp IP addr) 3. Select "Tools", scroll down to Programmers and your devices should show up there. This is used instead of the com port which you typically choose. Note: I reserve my IP's in my router's DHCP pool, ie, MAC to IP is always the same. See "OTA Upload from IDE without 'network port'" in the article at: github.com/jandrassy/ArduinoOTA
Nice informative videos about OTA programming! I've been thinking about implementing it in some of my projects as well. Why didn't you choose to just call the OTA.handle in the main loop, say every second? Performance issues? Or would the Arduino IDE time out (does it need a continuous handle loop)?
Thanks! Yup, your instincts are correct. Whereas you can get it to work, if you start adding more tasks in your main loop like reading from sensors, moving motors, etc., then timing becomes an issue and OTA will suffer. With beefier processors like the ESP32 you can bypass this by using a separate core, but for the ESP8266 what I used is one of the better ways of handling OTA. HTH!
It's just so good. Could make a video how to optimize the OTA code to avoid that annoying 15 sek delay? Maybe we can use some script to poll esp8266 for reset and start OTA immediately?
what is the point of OTA if serial monitor is not supported. is it possible to direct the serial port data to a webserver so the serial port output can be seen on the webpage.
Your videos have really helped me learn the 8266, and the OTA stuff is awesome. However, no one ever really takes it to the next step to show how to incorporate code within the OTA feature -- Even a basic water sensor sketch. So, how does one make full-featured sketches incorporate into OTA code?
@@datasith Hi, thanks for your excellent videos. I also need to know how and where to insert my code in your OTA code. Do you have any idea when this will be available. Kind regards....
Is it possible to do this process if the arduino and system are not conected to the same Wi-Fi. I want to know if we can do this if both are connected via internet, at two different locations
Thanks for video. I am facing one issue, Not sure if its IDE issue or something else. I tried your code from github but I am unable to find any option to see network port in Tools->Port. I can see only COM ports option. Any suggestion? I m using latest Arduino IDE 1.8.12 in widows 10. Do we have any other option to validate.
One problem I see for larger code. You opened your IDE and made small modification to a rather bigger code than this minimalistic example. You want to upload, so you go to your browser and type the setflag thing. Now you will have 15 seconds to close your IDE, open it again, find and select the OTA port in the IDE and hit upload. As far as I understand the procedure, the IDE will at least have to start sending data to the device within 15 seconds. That's not realistic with bigger code. Or does your sketch broadcast it's OTA port even when the ota_flag is not set?
Honestly I dont understand what you are trying to show here. I have been using OTA long time already and the OTA handle does not interfere at all and I can update over the air any time I want
Hello Cisco, thank you very much for your work. It doesn't necessarily have something to do with the content of this video, however, I was wondering how one can regain access to error messages, especially those in ArduinoOTA.onError, without a terminal window. Thank you for your time.
One idea would be to log them to a file on SPIFFS, which would be accessible from a webpage (i.e., creating a route that filestreams the file). What do you think?
Hi Cisco, Two great videos, thank you. I am using two boards, i.e. an ESP32OLED (wifi and BT) and a Wemos D1 (wifi). The sketch compiles fine for both boards, but the wifi com port only appears for the ESP32. The OTA functionality works well on the ESP32. When I plug in the D1, and change boards on the IDE, the wifi com port disappears. Naturally I have run through the same setup steps for the D1. Any ideas? Thanks
That's very off, I wonder why. If the code uploads to the Wemos D1, it means that the board is okay so it's a software thing. I realize it's been 8 months so hopefully you figured it out, if not, by all means let me know (apologies for the late reply).
Hi Cisco, ESP01 also have procedure problem in OTA. As we know, ESP01 is programmed in shorting GPIO0 to GND. Normal operation in open of GPIO0. This also a good challenge for me. Do you have good idea ?
What's the problem, you can load OTA software once, and then each time after you upload the code using OTA. Am I missing something? Sorry for the late reply!
I am getting no answer error message. I tried every thing. No use. Have esp8266 12e. And use arduino r3 and jumper wire to flash initially. Ota doesn't work.
Thanks so much for this, it's such a great explanation as ever!! and it worked straight out of the box like a dream! I also managed to change it to work with ESPAsyncWebServer with no problems! I am also looking at your tutorial "ESP8266 Web Server Upload Files Quick To SPIFFS Flash Memory Over HTTP w/ Arduino IDE", as I will also probably want to be making changes to the pages my esp8266 is serving. I notice (in reading the code to try and understand it more, I don't like to just cut and paste ...) that the ArduinoOTA.onStart appears to be able to update the SPIFFS as an alternative to the sketch, but I have no idea where ArduinoOTA.getCommand() is set to U_FLASH and can't find anything about setting it to U_SPIFFS? Any ideas or should I just use the curl command over HTTP as explained in your video? Thanks again for all of your help, you make exploring the esp extremely clear and accessible to me!! Pete
hey pete, i'm glad you found it useful-and, most of all, that it worked! that is a really good question, to which i don't have a perfect answer as i haven't tried it myself. on the IDE, i suspect if you select the option "ESP8266 Sketch Data Upload" it'll send the contents of the sub-directory "data" inside your sketch folder to flash. obviously, there's an underlying tool that i had to teach myself about today (thank you!): what you'd want, outside of the IDE, is something along the lines of "python3 espota.py -i -I -p -P [-a password] -s -f " to send your data to the flash file system. here's more info about espota: github.com/esp8266/Arduino/blob/master/tools/espota.py really, really good question!
Hi Thank I tried in nodeMCU, it is working, is there any posible ways to do the OTA from other network means remotely Assumption esp connected in a Wi-Fi
Yes, you can setup a route to receive the firmware and make the update. It's not strictly OTA, but it's a way of updating the firmware wirelessly. HTH!
I tryed on NodeMCU and the webserver it's ok. I then choose the net port and put NodeMCU in Restarting... Then I take an error: "07:00:00 [ERROR]: No Answer" :-( Can you help me please ? Thanks a lot
After flashing the OTA firmware over serial, physically reset the NodeMCU before doing OTA (don't hold down the button, just press it once). After a few seconds, you should be able to upload the new firmware from the net port. Let me know if that works!
this is exactly how hackers owned the internet. by realizing that web apps have unprotected "/reset" urls. it should be illegal to teach like this in 21st century. it's sad truth that people who teach on youtube know little to nothing about proper software development. they just finished reading some arduino book and copy examples from it to teach others.
hello Cisco, a good video but still a thumbs down. why the music? it distracts from what you tell. if I want to hear music then I will go to the right channel on youtube. continue with your good explanation videos (without The music). greeting, Jan
Hello Jan. As you said, there are many channels on UA-cam. If my music bothers you, go to a different channel where videos have no music. Continue with your rude comments (just not on my channel). Greeting, Cisco
hello Cisco. I am sorry. I was not mean to be rude. the music is disturbing when I want to follow what you say. maybe this is because English is not my mother tongue and if you only focus on English speaking people then that is ok. I think it's a shame that a good explanation in my eyes is negated by music that is not important for what you want to say. greeting, Jan
@@datasith after ota programming , i am unable to store data in putty or not see the data in serial monitor..if serial monitor open it will gives error while uploading code wirelessly
@@ramakant610 Serial Monitor and Putty show the data transferred over USB. For OTA programming, there's no USB connection. You can see the data if you store it in a variable (RAM), or a text file in SPIFFS or SD Card, and then serve it over HTTP as a using the server.on() and server.streamFile() functions.
In theory yes, but you'd need to find an app to do so-or write your own. I think there's a way of uploading .bin files through the webserver, and have the ESP8266 update its firmware once you do. I'll do a demo in the future if this is possible.
Yes but it requires a WAN-accessible server where you can upload the firmware file. Once uploaded then the server needs to notify the ESP8266 that a new firmware file is available. It's doable by yourself, but tricky. If you check @AndreasSpiess channel, he has a service that does this for you.
@@datasith thats really interesting. It would be great if you do a tutorial on it. I haven't come across any such tutorials on UA-cam. I wish you you teach us how to do it. Thank you in advance.
Thanks for clarifying, I wouldn’t have guessed otherwise. If you’re looking at *introductory* UA-cam videos for a project where anything more secure is required, you’re gonna have a bad time.
Great tutorial. You speak very clearly and at a rate that can be absorbed by a learner. Well done!
Thank you for the kind comment. I certainly try my best, and feel I've improved over time (still ways to go). I'm glad people like yourself find it useful. Thanks for watching!
so simple yet so elegant! i've just started messing with OTA programming and kept running into a wall with http server and OTA running side by side.
i did one thing differently though - i implemented an async wait function, so it's not blocking the main loop.
Very good, thank you. I'm already using your '15 second from restart' idea on my light switches, together with Andreas's reed switch idea for the reset, now I don't need to bother with the reed switch, thank you!
It's awesome to hear that this is useful for an actual project. Thanks for sharing that info with me!
Brilliant tutorial Thank you very much.
I just wanted to add a finding of my own...
If you open a second instance of Adruino and set port to the USB Com Port you can still have access to the Serial monitor in the second Arduino IDE whilst still be able upload via WiFi from the First Adduino IDE. Handy for debugging.
Harry
Thanks for the kind words. That's awesome, thanks for sharing!
Cisco - thank you so much for your tutorials. I went from zero to (very nearly) hero RE ESP8266 and OTA with these two tutorials.
Simple, well explained, and no showing off... (apart from that neat trick with the LED - digitalWrite(2, !digitalRead(2)); ) That is cool!
Thanks++
thank you for the kind comment, it makes me really happy to hear that you enjoyed it and thought it was useful!
Sorry to be offtopic but does someone know a method to get back into an instagram account?
I stupidly lost the login password. I would love any help you can offer me!
@Brady Grady Instablaster :)
@Immanuel Hassan Thanks so much for your reply. I found the site thru google and I'm in the hacking process atm.
Seems to take quite some time so I will reply here later with my results.
@Immanuel Hassan It worked and I finally got access to my account again. Im so happy!
Thank you so much, you saved my ass!
Thankyou , this is what I kneed, very clear and informative explenation for us who still is new to OTA. I like Your videos, please keep making them for us. Once again, a big thanx!
Thank you for watching the video and for the kind comment. I'm glad you liked it!
Very Nice Explanation
Thanks and welcome to my channel!
Very useful video Cisco! Thanks
You're welcome Alcides, I'm glad you found it useful!
It worked quite OK, but I found that on a running system with 6 MQTT nodes which run all the time, if I turned up with my notebook to upgrade firmware on any node, the Arduino IDE does not
see the controllers WiFi port. It only sees the port when ArduinoOTA.handle() is executed.
What I do is I execute that function once a minute WHEN THE OTA flag is NOT set.
At most the laptop only has to wait for a minute before the WiFi ports are recognized.
I'm glad you were able to work things out!
How to regain access to the ip address port from the IDE
Another solution is to add a "fake programmer" to the "Tools" menu drop down.
1st, on Windows10, find the file "programmers.txt" . The one that worked for me was: C:\Users\joe\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.3\programmers.txt.
2. Add the following lines at the bottom of programmers.txt file, save it, restart the IDE.
# ESP Wemos #2 50:02:91:AA:BB:CC (just a comment line)
arduinoOTA142.name=ESP-Wemos-OTA (Drop down menu text)
arduinoOTA142.program.tool=arduinoOTA (Don't know, just part of the IDE code)
arduinoOTA142.ip=192.168.10.142 (The static dhcp IP addr)
3. Select "Tools", scroll down to Programmers and your devices should show up there.
This is used instead of the com port which you typically choose.
Note: I reserve my IP's in my router's DHCP pool, ie, MAC to IP is always the same.
See "OTA Upload from IDE without 'network port'" in the article at:
github.com/jandrassy/ArduinoOTA
thank you, have been looking for this
I'm glad you found it useful!
Nice demo and tutorial. Thanks
Nice informative videos about OTA programming!
I've been thinking about implementing it in some of my projects as well.
Why didn't you choose to just call the OTA.handle in the main loop, say every second? Performance issues?
Or would the Arduino IDE time out (does it need a continuous handle loop)?
Thanks!
Yup, your instincts are correct. Whereas you can get it to work, if you start adding more tasks in your main loop like reading from sensors, moving motors, etc., then timing becomes an issue and OTA will suffer. With beefier processors like the ESP32 you can bypass this by using a separate core, but for the ESP8266 what I used is one of the better ways of handling OTA. HTH!
Very good tutorial 👌 👍 👏 this is a great function!
Very good tutorial - thanks
love u bro for such informative videos. God bless you.
Awesome! I'm happy you found the content useful.
Thanks, you are making very useful video. keep it up (y)
You're welcome! I'm glad you find it useful.
Bro is Jacked :P
It's just so good. Could make a video how to optimize the OTA code to avoid that annoying 15 sek delay? Maybe we can use some script to poll esp8266 for reset and start OTA immediately?
Heya, funnily enough, I made one already without the annoying delay: ua-cam.com/video/gFK2EDNpIeM/v-deo.html
HTH!
Very useful and well explained video
Thanks, Lode, for the kind words. I'm glad you found it useful!
Arduino: 1.8.5 (Windows 7), Board: "NodeMCU 0.9 (ESP-12 Module), 80 MHz, Flash, 4M (1M SPIFFS), v2 Lower Memory, Serial, None, Only Sketch, 115200"
C:\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Arduino\hardware -hardware C:\Users
ama\AppData\Local\Arduino15\packages -tools C:\Arduino\tools-builder -tools C:\Arduino\hardware\tools\avr -tools C:\Users
ama\AppData\Local\Arduino15\packages -built-in-libraries C:\Arduino\libraries -libraries C:\Users
ama\Documents\Arduino\libraries -fqbn=esp8266:esp8266:nodemcu:CpuFrequency=80,VTable=flash,FlashSize=4M1M,LwIPVariant=v2mss536,Debug=Serial,DebugLevel=None____,FlashErase=none,UploadSpeed=115200 -ide-version=10805 -build-path C:\Users
ama\AppData\Local\Temp\arduino_build_943895 -warnings=none -build-cache C:\Users
ama\AppData\Local\Temp\arduino_cache_281809 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.xtensa-lx106-elf-gcc.path=C:\Users
ama\AppData\Local\Arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2 -prefs=runtime.tools.esptool.path=C:\Users
ama\AppData\Local\Arduino15\packages\esp8266\tools\esptool\0.4.13 -prefs=runtime.tools.mkspiffs.path=C:\Users
ama\AppData\Local\Arduino15\packages\esp8266\tools\mkspiffs\0.2.0 -verbose C:\Users
ama\Desktop\sensor\otawireless\otawireless.ino
C:\Arduino\arduino-builder -compile -logger=machine -hardware C:\Arduino\hardware -hardware C:\Users
ama\AppData\Local\Arduino15\packages -tools C:\Arduino\tools-builder -tools C:\Arduino\hardware\tools\avr -tools C:\Users
ama\AppData\Local\Arduino15\packages -built-in-libraries C:\Arduino\libraries -libraries C:\Users
ama\Documents\Arduino\libraries -fqbn=esp8266:esp8266:nodemcu:CpuFrequency=80,VTable=flash,FlashSize=4M1M,LwIPVariant=v2mss536,Debug=Serial,DebugLevel=None____,FlashErase=none,UploadSpeed=115200 -ide-version=10805 -build-path C:\Users
ama\AppData\Local\Temp\arduino_build_943895 -warnings=none -build-cache C:\Users
ama\AppData\Local\Temp\arduino_cache_281809 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.xtensa-lx106-elf-gcc.path=C:\Users
ama\AppData\Local\Arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2 -prefs=runtime.tools.esptool.path=C:\Users
ama\AppData\Local\Arduino15\packages\esp8266\tools\esptool\0.4.13 -prefs=runtime.tools.mkspiffs.path=C:\Users
ama\AppData\Local\Arduino15\packages\esp8266\tools\mkspiffs\0.2.0 -verbose C:\Users
ama\Desktop\sensor\otawireless\otawireless.ino
Using board 'nodemcu' from platform in folder: C:\Users
ama\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2
Using core 'esp8266' from platform in folder: C:\Users
ama\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2
Detecting libraries used...
"C:\Users
ama\AppData\Local\Arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2/bin/xtensa-lx106-elf-g++" -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ "-IC:\Users
ama\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2/tools/sdk/include" "-IC:\Users
ama\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2/tools/sdk/lwip2/include" "-IC:\Users
ama\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2/tools/sdk/libc/xtensa-lx106-elf/include" "-IC:\Users
ama\AppData\Local\Temp\arduino_build_943895/core" -c -w -Os -g -mlongcalls -mtext-section-literals -fno-exceptions -fno-rtti -falign-functions=4 -std=c++11 -ffunction-sections -fdata-sections -w -x c++ -E -CC -DF_CPU=80000000L -DLWIP_OPEN_SRC -DTCP_MSS=536 -DDEBUG_ESP_PORT=Serial -DARDUINO=10805 -DARDUINO_ESP8266_NODEMCU -DARDUINO_ARCH_ESP8266 -DARDUINO_BOARD="ESP8266_NODEMCU" -DESP8266 "-IC:\Users
ama\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\cores\esp8266" "-IC:\Users
ama\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\variants
odemcu" "C:\Users
ama\AppData\Local\Temp\arduino_build_943895\sketch\otawireless.ino.cpp" -o "nul"
"C:\Users
ama\AppData\Local\Arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2/bin/xtensa-lx106-elf-g++" -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ "-IC:\Users
ama\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2/tools/sdk/include" "-IC:\Users
ama\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2/tools/sdk/lwip2/include" "-IC:\Users
ama\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2/tools/sdk/libc/xtensa-lx106-elf/include" "-IC:\Users
ama\AppData\Local\Temp\arduino_build_943895/core" -c -w -Os -g -mlongcalls -mtext-section-literals -fno-exceptions -fno-rtti -falign-functions=4 -std=c++11 -ffunction-sections -fdata-sections -w -x c++ -E -CC -DF_CPU=80000000L -DLWIP_OPEN_SRC -DTCP_MSS=536 -DDEBUG_ESP_PORT=Serial -DARDUINO=10805 -DARDUINO_ESP8266_NODEMCU -DARDUINO_ARCH_ESP8266 -DARDUINO_BOARD="ESP8266_NODEMCU" -DESP8266 "-IC:\Users
ama\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\cores\esp8266" "-IC:\Users
ama\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\variants
odemcu" "-IC:\Arduino\libraries\Keyboard\src" "C:\Users
ama\AppData\Local\Temp\arduino_build_943895\sketch\otawireless.ino.cpp" -o "nul"
"C:\Users
ama\AppData\Local\Arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2/bin/xtensa-lx106-elf-g++" -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ "-IC:\Users
ama\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2/tools/sdk/include" "-IC:\Users
ama\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2/tools/sdk/lwip2/include" "-IC:\Users
ama\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2/tools/sdk/libc/xtensa-lx106-elf/include" "-IC:\Users
ama\AppData\Local\Temp\arduino_build_943895/core" -c -w -Os -g -mlongcalls -mtext-section-literals -fno-exceptions -fno-rtti -falign-functions=4 -std=c++11 -ffunction-sections -fdata-sections -w -x c++ -E -CC -DF_CPU=80000000L -DLWIP_OPEN_SRC -DTCP_MSS=536 -DDEBUG_ESP_PORT=Serial -DARDUINO=10805 -DARDUINO_ESP8266_NODEMCU -DARDUINO_ARCH_ESP8266 -DARDUINO_BOARD="ESP8266_NODEMCU" -DESP8266 "-IC:\Users
ama\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\cores\esp8266" "-IC:\Users
ama\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\variants
odemcu" "-IC:\Arduino\libraries\Keyboard\src" "C:\Users
ama\AppData\Local\Temp\arduino_build_943895\sketch\otawireless.ino.cpp" -o "C:\Users
ama\AppData\Local\Temp\arduino_build_943895\preproc\ctags_target_for_gcc_minus_e.cpp"
In file included from C:\Users
ama\Desktop\sensor\otawireless\otawireless.ino:1:0:
C:\Arduino\libraries\Keyboard\src/Keyboard.h:25:17: fatal error: HID.h: No such file or directory
#include "HID.h"
^
compilation terminated.
Using library Keyboard at version 1.0.1 in folder: C:\Arduino\libraries\Keyboard
exit status 1
Error compiling for board NodeMCU 0.9 (ESP-12 Module).
The error tells you what's wrong.
Thank you Cisco.
No problem, Neil. Thank _you_ for being a viewer all this time!
what is the point of OTA if serial monitor is not supported. is it possible to direct the serial port data to a webserver so the serial port output can be seen on the webpage.
Hey, I want to use NodeMCU ESP8266 to flash code on STM32 based MCU, what are the steps should I take ?
Great!
I know this joke! You have a wireless programmer in your power bank! 😁👍
thanks for watching!
Your videos have really helped me learn the 8266, and the OTA stuff is awesome. However, no one ever really takes it to the next step to show how to incorporate code within the OTA feature -- Even a basic water sensor sketch. So, how does one make full-featured sketches incorporate into OTA code?
you're right, i'll add it to the list! thanks for watching!
@@datasith Hi, thanks for your excellent videos. I also need to know how and where to insert my code in your OTA code. Do you have any idea when this will be available. Kind regards....
this is helpfull.
thank you
You're very welcome, John. It makes me happy you found it useful!
very nice topic
like always great, but as i saw you missed about telling linux users about "avahi" installation to be able to use mdns
:) thanks again
o btw take a look at this might come handy
tttapa.github.io/ESP8266/Chap01%20-%20ESP8266.html
Good point! My thinking is that Linux users should be able to figure it out :) Thanks for sharing the link!
Is it possible to do this process if the arduino and system are not conected to the same Wi-Fi. I want to know if we can do this if both are connected via internet, at two different locations
I have a mega 2560(ch340) pro micro running my project. Can sketches be uploaded wirelessly through an esp32 UART ports ?
Thanks for video. I am facing one issue, Not sure if its IDE issue or something else. I tried your code from github but I am unable to find any option to see network port in Tools->Port. I can see only COM ports option. Any suggestion? I m using latest Arduino IDE 1.8.12 in widows 10. Do we have any other option to validate.
Thank you for this video. Very helpfull. I see you modified w/in loop, but can one also modify setup section?
Thanks! Yes you can also modify the setup section.
If the upload fails at 0% the firewall on your computer is blocking the ESP from downloading the file.
Thanks for sharing, Harvey!
One problem I see for larger code.
You opened your IDE and made small modification to a rather bigger code than this minimalistic example.
You want to upload, so you go to your browser and type the setflag thing.
Now you will have 15 seconds to close your IDE, open it again, find and select the OTA port in the IDE and hit upload.
As far as I understand the procedure, the IDE will at least have to start sending data to the device within 15 seconds.
That's not realistic with bigger code.
Or does your sketch broadcast it's OTA port even when the ota_flag is not set?
Old sketch waited 15 seconds. New sketch doesn't. You can configure the OTA flag with an HTTP request.
Honestly I dont understand what you are trying to show here. I have been using OTA long time already and the OTA handle does not interfere at all and I can update over the air any time I want
Thanks. I have seen some firmwares that allows ota upgrade via wifi without going through lots of code. If you are aware, pls make a video about it.
Why to spin up the whole web server to manipulate with this, instead of just keep calling OTA.handle() in the program main loop unconditionally
Brilliant!
Thank you!
Hello Cisco, thank you very much for your work. It doesn't necessarily have something to do with the content of this video, however, I was wondering how one can regain access to error messages, especially those in ArduinoOTA.onError, without a terminal window. Thank you for your time.
One idea would be to log them to a file on SPIFFS, which would be accessible from a webpage (i.e., creating a route that filestreams the file). What do you think?
Hi Cisco,
Two great videos, thank you. I am using two boards, i.e. an ESP32OLED (wifi and BT) and a Wemos D1 (wifi). The sketch compiles fine for both boards, but the wifi com port only appears for the ESP32. The OTA functionality works well on the ESP32. When I plug in the D1, and change boards on the IDE, the wifi com port disappears. Naturally I have run through the same setup steps for the D1. Any ideas? Thanks
That's very off, I wonder why. If the code uploads to the Wemos D1, it means that the board is okay so it's a software thing. I realize it's been 8 months so hopefully you figured it out, if not, by all means let me know (apologies for the late reply).
Hi Cisco, ESP01 also have procedure problem in OTA. As we know, ESP01 is programmed in shorting GPIO0 to GND. Normal operation in open of GPIO0. This also a good challenge for me. Do you have good idea ?
What's the problem, you can load OTA software once, and then each time after you upload the code using OTA. Am I missing something? Sorry for the late reply!
I am getting no answer error message. I tried every thing. No use. Have esp8266 12e. And use arduino r3 and jumper wire to flash initially. Ota doesn't work.
make sure your mdns is woking and you can access the board both by its IP address and local domain name
Hi! I have ESP32. I'm using the library httpUpdate for OTA Updates. What is the difference between httpUpdate and ArduinoOTA? Thanks
Outside of a few function calls it should work just the same. Thanks for watching my videos!
Thanks so much for this, it's such a great explanation as ever!! and it worked straight out of the box like a dream! I also managed to change it to work with ESPAsyncWebServer with no problems!
I am also looking at your tutorial "ESP8266 Web Server Upload Files Quick To SPIFFS Flash Memory Over HTTP w/ Arduino IDE", as I will also probably want to be making changes to the pages my esp8266 is serving.
I notice (in reading the code to try and understand it more, I don't like to just cut and paste ...) that the ArduinoOTA.onStart appears to be able to update the SPIFFS as an alternative to the sketch, but I have no idea where ArduinoOTA.getCommand() is set to U_FLASH and can't find anything about setting it to U_SPIFFS? Any ideas or should I just use the curl command over HTTP as explained in your video?
Thanks again for all of your help, you make exploring the esp extremely clear and accessible to me!!
Pete
hey pete, i'm glad you found it useful-and, most of all, that it worked!
that is a really good question, to which i don't have a perfect answer as i haven't tried it myself. on the IDE, i suspect if you select the option "ESP8266 Sketch Data Upload" it'll send the contents of the sub-directory "data" inside your sketch folder to flash. obviously, there's an underlying tool that i had to teach myself about today (thank you!):
what you'd want, outside of the IDE, is something along the lines of "python3 espota.py -i -I -p -P [-a password] -s -f " to send your data to the flash file system. here's more info about espota:
github.com/esp8266/Arduino/blob/master/tools/espota.py
really, really good question!
very good
Thank you! I'm glad you liked it.
Hi Thank
I tried in nodeMCU, it is working, is there any posible ways to do the OTA from other network means remotely
Assumption esp connected in a Wi-Fi
Yes, you can setup a route to receive the firmware and make the update. It's not strictly OTA, but it's a way of updating the firmware wirelessly. HTH!
I tryed on NodeMCU and the webserver it's ok.
I then choose the net port and put NodeMCU in Restarting...
Then I take an error: "07:00:00 [ERROR]: No Answer" :-(
Can you help me please ?
Thanks a lot
After flashing the OTA firmware over serial, physically reset the NodeMCU before doing OTA (don't hold down the button, just press it once). After a few seconds, you should be able to upload the new firmware from the net port. Let me know if that works!
@@datasith I have same problem, I did reset ESP, but still same error - NO answer
How can 7 not like?
this is exactly how hackers owned the internet. by realizing that web apps have unprotected "/reset" urls. it should be illegal to teach like this in 21st century.
it's sad truth that people who teach on youtube know little to nothing about proper software development. they just finished reading some arduino book and copy examples from it to teach others.
Can you provide the link for the CH340g driver
It's in the video description under "Detailed guide for getting started with the WeMos ESP8266 Development Board..."
what is the t for in uint8_t
Don't mean this as disrespectful: google it.
hello Cisco,
a good video but still a thumbs down. why the music? it distracts from what you tell. if I want to hear music then I will go to the right channel on youtube. continue with your good explanation videos (without The music).
greeting,
Jan
Hello Jan.
As you said, there are many channels on UA-cam. If my music bothers you, go to a different channel where videos have no music. Continue with your rude comments (just not on my channel).
Greeting,
Cisco
hello Cisco.
I am sorry. I was not mean to be rude. the music is disturbing when I want to follow what you say. maybe this is because English is not my mother tongue and if you only focus on English speaking people then that is ok. I think it's a shame that a good explanation in my eyes is negated by music that is not important for what you want to say.
greeting,
Jan
how to store data of ota programing if sensor is connected
You can save the data either to an SD card or SPIFFS so that it doesn't get erased when you upload a new program.
collect result like serial monitor
@@ramakant610 the data will be stored in a text file in the SD card or SPIFFS.
@@datasith after ota programming , i am unable to store data in putty or not see the data in serial monitor..if serial monitor open it will gives error while uploading code wirelessly
@@ramakant610 Serial Monitor and Putty show the data transferred over USB. For OTA programming, there's no USB connection. You can see the data if you store it in a variable (RAM), or a text file in SPIFFS or SD Card, and then serve it over HTTP as a using the server.on() and server.streamFile() functions.
Can i upload code to esp8266 through ota from Android??
In theory yes, but you'd need to find an app to do so-or write your own. I think there's a way of uploading .bin files through the webserver, and have the ESP8266 update its firmware once you do. I'll do a demo in the future if this is possible.
@@datasith Thank you😊
Can this code work on NodeMCU V3 also please ? thanks.
Yep, you just need to select the right board from the Tools menu.
@@datasith Yeah… thanks a lot :-)
Can this be done out side the LAN ?
Yes but it requires a WAN-accessible server where you can upload the firmware file. Once uploaded then the server needs to notify the ESP8266 that a new firmware file is available. It's doable by yourself, but tricky. If you check @AndreasSpiess channel, he has a service that does this for you.
@@datasith thats really interesting. It would be great if you do a tutorial on it. I haven't come across any such tutorials on UA-cam. I wish you you teach us how to do it. Thank you in advance.
why do you have });
Don't mean this as disrespectful: google it.
Restarting via unsecured HTTP endpoint - grand idea. (sarcasm)
Thanks for clarifying, I wouldn’t have guessed otherwise. If you’re looking at *introductory* UA-cam videos for a project where anything more secure is required, you’re gonna have a bad time.