Andreas, I spent over a week trying to get OTA Basic from the Examples to work with my ESP32 Cam. Finally, I gave up and used your OTA template and it worked the first time and every time since. I can't thank you enough for taking the time to help me and those less fortunate in electronics knowledge. You're a HERO. :))
@AndreasSpiess9 ай бұрын
Glad I could help!
@pcost4 жыл бұрын
Hello Andreas! I always wait anxiously for new videos from you, no matter the subject, I know that I will learn lots of things! Greetings from Canada! 🙌
@AndreasSpiess4 жыл бұрын
During the last weeks you did not have to wait for too long ;-) It must be late in Canada...
@PranavSharma25044 жыл бұрын
Same here! Of all the KZbinrs, @Andreas Spiess is my all-time favorite! A perfect mix of information, experimentation, and humor!
@georglinde39104 жыл бұрын
"It always sits in the in the first row!" - brilliant! :-D
@PranavSharma25044 жыл бұрын
@@nutsandguts2871 Maybe 17 other people (including me) get impressed easily too, then. Edit: 31 now
@gerdkah60644 жыл бұрын
5:44 so OTA is also a subscriber ^v^
@systemofapwne4 жыл бұрын
Or you just sort your projects differently and use a better IDE (like MS Visual Studio Code + Platform.io) instead of the limited Arduino IDE. Yet, I like his videos for being "always straight and basic" (which unfortunately implies to also fallback to arduino IDE)
@WistrelChianti4 жыл бұрын
@@PranavSharma2504 it was a great joke! (made me laugh anyhow =D)
@bowiejudah16173 жыл бұрын
i guess Im asking randomly but does anyone know a trick to get back into an Instagram account..? I was stupid lost my password. I appreciate any tricks you can offer me!
@listerdave12404 жыл бұрын
Thanks a lot for this tutorial. I had been wanting (and needing) to do OTA for a long time but always wrongly assumed it would be very difficult and had in fact tried a few times without success but after watching your video I got it working in a few minutes in one of my projects.
@AndreasSpiess4 жыл бұрын
Glad I could help!
@VildanAkchurin Жыл бұрын
Copying and pasting from sketch example works right away! PuTTY debugging works as a charm. Thank you for the clear explanation and extended OTA debugging.
@AndreasSpiess Жыл бұрын
Glad it helped!
@PeterAlbronda4 жыл бұрын
Again a wonderful presentation with much practical information in a short time. Each Sunday morning I am looking forward to your high value information, thank you!
@AndreasSpiess4 жыл бұрын
You are welcome! And thank you for your nice words.
@AndrewDanne4 жыл бұрын
This is so cool. 1. I am just starting to learn morse code. 2. I am just getting my head around ESZP32 and 8266. 3. I am working on a battery-powered automation controlled relay and am searching for information on very very low power devices (which you have previously covered). I really enjoy your ideas and how you go about explaining them. OTA will really help with all these projects.
@AndreasSpiess4 жыл бұрын
If you want to learn morse you have to have a look at my first videos. And if you are interested I have an updated version for the ESP32...
@teddavis18404 жыл бұрын
Grüezi Andreas, thanks for the many hours you devote to your viewers. I appreciate your dry humour very much. I tried to find if you have created any videos on motors and actuators without success. Monitoring & control systems would seem a natural progression to your sensor projects - LoRa especially. Hopp Schwiiz!
@isilverboy4 жыл бұрын
I'm seeing and seeing again your videos. They are very useful and help me to speed up my projects. Thank you very much for your work here, really!
@AndreasSpiess4 жыл бұрын
Glad you like them! And they help you in saving your valuable time.
@hygri4 жыл бұрын
Cool. I'd certainly like to see your take on RTOS, I've been using parts of it in my sketches and it looks incredibly powerful... A video from the guy with the Swiss accent would probably help many of us to get off the ground. Thanks!!
@AndreasSpiess4 жыл бұрын
Maybe in the future, as I said...
@hygri4 жыл бұрын
@@AndreasSpiess Fingers crossed ;)
@krishnanov214 жыл бұрын
Just when I needed it! Thank you🙌
@AndreasSpiess4 жыл бұрын
Perfect!
@Marc_Miller4 жыл бұрын
@@AndreasSpiess I'm having trouble finding your video shown at 6:19 talking about using the FTDI board to read the serial connection. Which video was that in?
@DaddyBusAdventures4 жыл бұрын
Danka viel mohl Andreas. I've played around with OTA but the debugging trick I was not aware off. Time to do some testing on my RV project where I have 8266's deployed to handle various tasks in the RV.
@AndreasSpiess4 жыл бұрын
I am not sure if everything works the same on the ESP8266. But you can try
@borishruby71314 жыл бұрын
Hello Andreas! I really love your videos and can't wait for another one. I like the way you do it. I didn't know something like this is possible in ESP32 at all! By the way, it works also on ESP8266 as I've just found out. Thanks a lot and keep up the great work! Greetings from Slovakia!
@leadeddeveloper95754 жыл бұрын
Thank you for your video, I like those ESP videos so much. Also, I'm planning to use ESP in my new project on my channel. It is a very exciting controller!
@AndreasSpiess4 жыл бұрын
Go for it!
@jeffbornes39863 жыл бұрын
I love the way that you did this... You made this so user friendly THANK YOU.
@AndreasSpiess3 жыл бұрын
You're welcome!
@santopino25464 жыл бұрын
Excellent, finally something that I will surely personally use. Thank you.
@AndreasSpiess4 жыл бұрын
Glad it was helpful!
@bombenlps79504 жыл бұрын
Thank you so much, i was just thinking of a way to upload code onto a smart bulb in the future without having to resolder all the connections. But i didnt know about OTA, you are a life saver. Thank you!
@AndreasSpiess4 жыл бұрын
Glad it helped!
@Thorathome4 жыл бұрын
This tutorial got me quickly onto OTA for my ESP8266 & 32s, thanks. Your helpful piece of #include code makes OTA smooth for both 8266 and ESP32s. I especially like the RTOS ESP32 twist. It works. Onward to TelNet for debugging OTA and to see how this all works with Blynk, which I use all the time. Thanks, Andreas. Much appreciated.
@AndreasSpiess4 жыл бұрын
You're welcome!
@Thorathome4 жыл бұрын
@@AndreasSpiess This quickstart into OTA is fabulous. Your code made it easy to get my Blynk-enabled ESP32s and 8266s updating OTA with little/no problems. All very quickly, thank you. (Change the 7 to an 8 in OTA.h line 23, and it's PERFECT!) Good intro to TelNet and PuTTY as well. So simple with your guidance. Thank you once again. Most helpful.
@tonysfun4 жыл бұрын
Just in nick of time for me Andreas! Thanks for several tips that will make our lives easier! You are just a machine that keeps going and going further than the battery commercial!
@AndreasSpiess4 жыл бұрын
I just have a schedule ;-) And you never know how long you live in my age...
@tonysfun4 жыл бұрын
@@AndreasSpiess I agree! I'm not the youngest either, but I have plans too.... I just admire you and the amount of work you can do!!! Wishing you health - the rest can be purchased.
@robertnickels15274 жыл бұрын
Thank you for this great tutorial, subscribed immediately - although I suspect it's getting crowded in the first row! I have Telnet remote debugging working on the ESP-01, all that's needed is to add "#include TelnetStream" and add "TelnetStream.begin();" in Setup. And I've only been playing with ESP-01 for a few days ;-)
@AndreasSpiess4 жыл бұрын
Welcome aboard of the channel!
@mattmanandeddie4 жыл бұрын
Oh Thank You! I never knew you could debug over WiFi, that will make things easier. I've done an OTA update before where I forgot to add OTA code block to new sketch. I did a Face Palm, back when you could touch your face. :) Can't wait to see more on the long range 2.4Ghz radio.
@AndreasSpiess4 жыл бұрын
If you refer to the satellite project I assume I will continue this or next week.
@wess7390 Жыл бұрын
Thanks!
@AndreasSpiess Жыл бұрын
Thank you for your support!
@DanielLopez-kt1xt4 жыл бұрын
And just by the work of your magic, i can program my esp32 ota... thank you very much! Your videos couldn't be easier to understand. This capability is perfect for an mqtt smart house.
@AndreasSpiess4 жыл бұрын
Glad it worked!
@davidhudd5777 Жыл бұрын
Thanks
@AndreasSpiess Жыл бұрын
Thank you for your support!
@WacKEDmaN4 жыл бұрын
funny that.. i was just setting up OTA on my ESP8266!... Great minds think alike!! :P nice info..as usual..Thanks Andreas :)
@AndreasSpiess4 жыл бұрын
My pleasure!
@Retrocomputernerd4 жыл бұрын
@@AndreasSpiess This is awesome, will the example sketch work with an ESP8266 though? The video indicated it would need someone to contribute a compatible version. I am still working through how to include the #include libraries
@WacKEDmaN4 жыл бұрын
@@Retrocomputernerd try this one i setup after watching.... i was using a version already in ESP_AsyncFSBrowser.. i just added esp8266s needed libs wrapped in #ifdef. the ArduinoOTA calls would complain during compile on esp8266 so i fixed them too.. github.com/WacKEDmaN/ESP32-OTA/blob/master/0TA_Template_Sketch/OTA.h
@stonecoldcnc4 жыл бұрын
@@WacKEDmaN Thanks for that, seems to work fine on the Wemos D1 board but not on the ESP-07, [ERROR]: Bad Answer: ERR: ERROR[4]: Not Enough Space
@WacKEDmaN4 жыл бұрын
@@stonecoldcnc make sure the partitions are set correct... im also guessing the low flash memory ESP (eg 512k/1Mb) chips wont be able to support OTA
@michaeldreher13724 жыл бұрын
You really nail it down in 10 minutes, that's great
@AndreasSpiess4 жыл бұрын
Thank you!
@massimomalesci3524 жыл бұрын
Great video, Andreas, and very well explained!!!! Greetings from Italy! And I always sit in the first row!!!
@AndreasSpiess4 жыл бұрын
Thank you!
@kallereunanen15754 жыл бұрын
This video was useful! Thanks a lot for a very dense set of excellent tips!
@AndreasSpiess4 жыл бұрын
Glad you can use it!
@paulrichard89124 жыл бұрын
Always enjoy your tutorials and your github contributions. Thanks for the time and effort you put into these.
@AndreasSpiess4 жыл бұрын
My pleasure!
@Zalo294 жыл бұрын
Good tricks Andreas. Creating a mock-up sketch with OTA&credentials , so smart I've been using remoteDebug to get a serial port when deployed, but recently I've got some troubles with websockets. I'll try your telnet suggestion. Thank you so much! BTW, I encourage you to dig into FreeRTOS as it gives you a lot more possibilities to manage many tasks concurrently
@AndreasSpiess4 жыл бұрын
I also had problems with other remote debugging libraries together with OTA. This one worked.
@ClementsProjects4 жыл бұрын
Thanks Andreas for the explainations. I worked with this beast during the last weeks and you complete informations i needed. Thank you !
@AndreasSpiess4 жыл бұрын
Glad it helped!
@ivanlogghe904 жыл бұрын
Very helpful tutorial! This opens so many "ports" ;-) for new projects !!
@AndreasSpiess4 жыл бұрын
Thank you!
@gaanpagla84174 жыл бұрын
Brilliant video. Now I don't have to find my data cable which has a tendency to disappear whenever I need it . Thanks so much !
@AndreasSpiess4 жыл бұрын
And you even do not have to find your ESP as long as it has Wi-Fi connection ;-)
@peerappel20124 жыл бұрын
Thanks very much! More information about RTOS would be great imo. Also cant the otahandle function be called every once in a while by a timer interrupt? Especially as it doesnt take to much time anyways.
@AndreasSpiess4 жыл бұрын
Try it, maybe it will work. I do would not like this structure.
@michaeldreher13724 жыл бұрын
@@AndreasSpiess Use another thread, not an interrupt.
@AndreasSpiess4 жыл бұрын
Another task did not work :-(
@michaeldreher13724 жыл бұрын
@Andreas Spiess : I tried it and also and had some problems, but I was able to fix them: 1. I had to reduce the sleep time between the calls to 5ms (10ms is too long) 2. I had to increase the stack size to at least 1900 byte, (1800 byte is not enough) call this in setup(): TaskHandle_t xOTATaskHandle = NULL; xTaskCreate( vOTATaskCode, "OTA", 2048, NULL, 1, &xOTATaskHandle); define the task function and remove the 'ArduinoOTA.handle()' call from loop(): void vOTATaskCode( void * pvParameters ) { for(;;) { sleep(5); ArduinoOTA.handle(); } }
@WistrelChianti4 жыл бұрын
@@michaeldreher1372 @Andreas Spiess I've managed to get this working slightly differently to Michael but had to change a few things. Mind if I send a pull request with the updates? (I'll have to do them in a tidy way first, currently code is full of debug prints)
@OldCurmudgeon3DP4 жыл бұрын
Very useful video, sir. I'm happy to see more code taking advantage of the ESP32. Dev boards are close enough to the 8266 in price that it's worth using the 32s even for simple projects. The extra uart is nice for Nextion screens. ITead just needs to rework their editor to be a little more user friendly.
@AndreasSpiess4 жыл бұрын
The ESP32 has many advantages. So there is no real benefit in investing into ESP8266.
@jstro-hobbytech3 жыл бұрын
This is a great video. Best explanation on how to do it. I know I'm a little late but credit where credit is due. I use the wemos d1 and have never had to reset after an ota update. My only complaint is that espressif should've released a more powerful board by now. They're the best other than a pi zero or whatever the new wifi mini pi is called. Anything pi related in Canada that isn't a Pico is at least 115 dollars where as an esp32 is about 20 now. More program memory and a faster cpu like the teensy has been doing for years but the teensy is 60cad.
@AndreasSpiess3 жыл бұрын
I most of the time use the ESP32 which is much stronger than the ESP8266 and not much more expensive...
@jstro-hobbytech3 жыл бұрын
@@AndreasSpiess the chip shortage has affected esp32 modules. Where you used to get 5 for 30 dollars, 2 for 30 is the going rate while the 8266 is now 5 for 50. It's made me realize (which is somewhat contradictory to what I said previously) the 8266 can do alot of the same things I need without any appreciable notice in lag for some of the devices I make. They're nothing special, just iot devices that do simple things usually lighting related. Haha. I've been doing alot more circuit stuff recently, like learning more about passive component along with digital logic ics, respectively. I have more of a software background than hardware and I find that more interesting learning wise.
@stupossibleify4 жыл бұрын
Thanks Andreas, your chosen topics are always interesting and very relevant. OTA is simpler than I thought. By the way, at the start of your videos are you saying "Greeting KZbinrs" or "Pretty KZbinrs"? Either is fine 😁
@nkronert4 жыл бұрын
He says "Grüezi KZbinrs", which is Swiss for "Hello KZbinrs" :-)
@stupossibleify4 жыл бұрын
@@nkronert thank you!
@WistrelChianti4 жыл бұрын
haha I always wondered too :D now I know :D
@mr.anonymous2984 жыл бұрын
I always learn something new or interesting from your great videos! Thank you very much.
@AndreasSpiess4 жыл бұрын
Glad to hear that!
@ronproveniers36554 жыл бұрын
Nice, i can use this for the solar weatherstation ( with bme280 and pms50003) which i develop now One Question: how can we OTA the esp32 when we use deepsleep? Yes, RTOS is also very interesting subject , special when to use or not to use? Maybe just use a scheduler?? Maybe you should explain about lockups and not putting watchdog triggers in a seperate task! Thanks for your good work Ron
@DO7DH4 жыл бұрын
You could add a switch to manually switch off deepsleep mode, if you have access to the weather station. Otherwise configure 15 min. each day for flashing e.g. 12:00 to 12:15.
@ronproveniers36554 жыл бұрын
DO7H, good suggestion. It makes the program a bit more complicated, need exact time and have no internet connection? The idea is that weatherunit hangs somewhere remote at a pole.
@bobpaydar4 жыл бұрын
thanks for your all’s videos you provided to us, very helpful for me and thank again 👍🏻
@AndreasSpiess4 жыл бұрын
Glad to hear that!
@saeedkizzy4 жыл бұрын
thanks for sharing.RTOS is a great tool in such systems.can't wait to see more about that :)
@AndreasSpiess4 жыл бұрын
Maybe...
@kevinfine93034 жыл бұрын
Hi Andreas, very useful video, as always. You've helped me a lot with my projects! I wanted to mention a correction to your description of OTA. It appears that the ESP32 maintains two areas of memory, OTA1 and OTA2. The Esspressif OTA mechanism always loads the new firmware in the unused portion, and, if successful, switches over the boot pointer to the new area of memory. Thus the previous firmware is not written over as implied in the video, and is available for a rollback. This from docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/ota.html Again, thanks for all your help, and also, Grüezi from Yverdon!
@AndreasSpiess4 жыл бұрын
You are right. Because it happens on the background I did not want to make it more complicated than necessary.
@raguaviva4 жыл бұрын
I know it is Sunday when I see a new video From Andreas! So good!
@AndreasSpiess4 жыл бұрын
:-)
@Taran724 жыл бұрын
Wow! I had no idea it was possibile to update the Arduino this way. Thank you for getting us know.
@AndreasSpiess4 жыл бұрын
It is not for the Arduino, it is for the Esp32
@Taran724 жыл бұрын
@@AndreasSpiess , ohhhhh...ok. got it as you can see I'm not familiar with the different processors. :) thank you for the clarification.
@arifindobson4 жыл бұрын
I am proud to say that I am enrolling in an IoT program from ASIT (Andreas-Spiess-Institute-of-Technology). and "ASIT" in the first row. Love it, awesome as always~
@AndreasSpiess4 жыл бұрын
Glad you think so! ASIT - I love it!
@arifindobson4 жыл бұрын
@@AndreasSpiess Thank you prof :D
@starlingwatch3921 Жыл бұрын
Greutzi Andreas, I'm back in Zürich 18 Aug to 21, part of my older son's wedding. I'm even planning to do the Limmat swim! I hope you are having a great holiday. Thanks for this video. I am writing a BLE-based logger for ESP32 devices and will post it to the Reflections repository on Github in the coming weeks. It will support multiple devices logging to what looks like local Serial, and a central logger will display the logs. It will also work over an Internet connection to a central log server. If you already have seen something like this please let me know, so I don't waste my time re-inventing the wheel. -Frank
@AndreasSpiess Жыл бұрын
There are loggers like github.com/jandrassy/TelnetStream (I even made a video about it, if I remember right). But all go via WiFi. I wish you a pleasant stay in Switzerland and hope the weather will be fine for the wedding! At the moment, we have quite a lot of rain (which is suitable for nature, of course).
@starlingwatch3921 Жыл бұрын
@@AndreasSpiess merci!
@toddpichler85784 жыл бұрын
Hello Andreas, Thank you for another great example. I finally got it working but I struggled a bit because I decided to use VSCode and PlatformIO (one of your other awesome videos). The part that stumped me was the way PlatformIO automatically selects the upload connection. Normally that is a good thing but I wanted to test the OTA connection. It turns out I needed to add a line to the platform.ini file like this "upload_port = " where "" is the value printed to the serial monitor. Maybe that will help someone else. Thanks again!
@AndreasSpiess4 жыл бұрын
There were a few other comments about the same fact. So you are not the only ;-)
@HimalayanPathik3 жыл бұрын
Thank you so much for this awesome tute. I am now able to solve my year-old problem. Very accurate and informative tutorial. God bless you.
@AndreasSpiess3 жыл бұрын
Glad it helped!
@DerTou4 жыл бұрын
Thank you, I have learned a lot of useful things from your videos. Looking forward to more ESP32 content :)
@AndreasSpiess4 жыл бұрын
More to come!
@sergeykorzukhin21324 жыл бұрын
So it is time for some refactoring in my projects :) Thank you Andreas!
@AndreasSpiess4 жыл бұрын
You are welcome!
@EXMattix4 жыл бұрын
Thanks for all of your videos, you are going to be my favorite youtuber about microcontroller. But I recommended that if you call another video for more details, you could link in a box that video in the video. Thanks anyways for the good stuff.
@AndreasSpiess4 жыл бұрын
You are welcome! Usually I place a card in the upper right corner if I mention another video.But maybe I forgot one or the other :-(
@EXMattix4 жыл бұрын
@@AndreasSpiess yeah, maybe there is a issue with cards, but it's easy to find the video because of the numbering of your videos.
@santorcuato4 жыл бұрын
Useful and necessary if you have sensors not on your workshop table but somewhere in the roof...
@AndreasSpiess4 жыл бұрын
Exactly!
@electronic79794 жыл бұрын
It was a video with useful information. I liked it
@AndreasSpiess4 жыл бұрын
Glad to hear that
@PranavSharma25044 жыл бұрын
Hey The Guy With The Swiss Accent! It would be great to expand the template sketch to incorporate Access Point and Captive Portal for setting the credentials, instead of hardcoding them. Then they will survive network changes too! On the side, would you like to take a look at Rust for ESP32? It seems to be gaining some traction and aims to be a production-focused language.
@AndreasSpiess4 жыл бұрын
As I said: WiFiManager does that, if you need it
@PranavSharma25044 жыл бұрын
@@AndreasSpiess ooh! I didn't notice wifimanager was already in place 😅
@DDBerlin4 жыл бұрын
Andreas, thanksfor the video. I'm sure you already know, but just for the records: OTA also works absolutelyflawless with ESP8266
@AndreasSpiess4 жыл бұрын
You are right.
@erwinkooi66694 жыл бұрын
Hi Andreas, great video as always! Do you know if this is also possible with VS Code and platformio? I completely switched over from the Arduino ide (which is great for starters, but not so much when you have large and diverse projects.
@AndreasSpiess4 жыл бұрын
I think it is possible, too
@MasseyLee4 жыл бұрын
@@AndreasSpiess Did you stop using PlatformIO and go back to Arduino IDE ?
@MennoLauwerens4 жыл бұрын
Yes, it also works from platformIO. I use it all the time.
@ulwur4 жыл бұрын
@@MennoLauwerens do you mind showing or explaining how you did the template stuff and how to do the wireless uploading?
@MennoLauwerens4 жыл бұрын
@@ulwur Just set these options in platformio.ini: board_build.partitions = min_spiffs.csv ; See:github.com/espressif/arduino-esp32/tree/master/tools/partitions ;upload_port = COM5 upload_protocol = espota upload_port = 192.168.0.35 ; IP of the ESP32 The rest is identical to this video.
@Jungmin_Seo4 жыл бұрын
wow.. The code works flawlessly. Thanks!
@AndreasSpiess4 жыл бұрын
You're welcome!
@patrickm99534 жыл бұрын
You made it very easy. Great tutorial
@AndreasSpiess4 жыл бұрын
Glad to hear that!
@dogastus4 жыл бұрын
Another excellent and useful video - thank you!
@AndreasSpiess4 жыл бұрын
Glad you enjoyed it!
@alanesq14 жыл бұрын
I have been very impressed using the OTA option to upload the bin file from a web browser rather than via the Arduino IDE. This is very handy if you have created a ESP project for someone else as you can send them the bin file and they can update it themselves. You can see how I use it here: github.com/alanesq/BasicWebserver
@Retrocomputernerd4 жыл бұрын
this also looks like a very cools solution, however Arduino IDE is rejecting the library zip file, even after renaming the subfolder. Any advise, or a tutorial link?
@alanesq14 жыл бұрын
@@Retrocomputernerd Hi, You need to manually unzip the file and copy the files to your arduino library folder. BTW - I have just noticed I give the wrong password in the instructions, it should be 12345678 I have just uploaded a newer version of the sketch which asks for a password to access OTA (Not very secure but a lot better than nothing)
@AndreasSpiess4 жыл бұрын
@alanesq: This is where IOTappstory began...
@SandeepSolankis4 жыл бұрын
Thanks for sharing. You resolve my broken microUSB problem. Appreciate it. One quick question - Why don't you make videos of development using ESP-IDF because i believe that building a production ready is more safer in esp-idf than arduino. Please comment.
@AndreasSpiess4 жыл бұрын
Because only a few people use theeIDF and my channel would crash...
@meinsda59834 жыл бұрын
Great Work Andreas! What would we do without you ;)
@AndreasSpiess4 жыл бұрын
Just drink a Sunday beer in a sunny Beergarden ? ;-)
@meinsda59834 жыл бұрын
@@AndreasSpiess Yes! I hope if you stay next time in vienna we have time together to do this and talking about technical news...
@drmocm4 жыл бұрын
Very interesting. I also have a trick for when you use a battery driven device that sleeps a lot, e.g. a sensor like the bme680. In that case loop is never reached and the device goes to sleep very fast. So, I use a loop in the setup that looks for the bme680 and in that loop I add the OTA handle. All I have to do is disconnect the sensor and the device keeps looping and I can connect via OTA. You could use a switch or button to disconnect the sensor.
@AndreasSpiess4 жыл бұрын
Great tip! Thanks!
@andreaswinter14004 жыл бұрын
Great stuff, as always. But one little remark: Usually you don't put any executable code into .h files. In almost all cases they only contain types, macros, defines, and function prototypes. But I'm not so familiar with the Arduino IDE so maybe this is the only way to split code into several files.
@AndreasSpiess4 жыл бұрын
I also do not know. I assume you can give it another name if you want ;-)
@JustinShaedo2 жыл бұрын
(a bit late but...) .h files are headers eg for storing constant variables. .cpp are used for declarations (functions, classes, etc) This is just convention and 99% of the time the compiler won't care what you use BUT might add well do it 'properly'.
@JulioSalim4 жыл бұрын
Andreas, you are "The Man". Thanks!
@avieleliyahu61994 жыл бұрын
Thank you, an educational and fun video as usual 😄
@AndreasSpiess4 жыл бұрын
Glad you enjoyed it!
@AJMansfield14 жыл бұрын
Instead of putting `ArduinoOTA.handle()` in your main loop, you should be able to set up an independant timer interrupt and have it run from there, as extra insurance in case `loop` (or for that matter, the rest of `setup`) crashes or delays or gets stuck in some way. edit: Actually you do address this briefly with your comment about setting up an RTOS task, which is probably a "more proper" way to do it than a raw interrupt.
@ZookeeperJohnG10 ай бұрын
Super helpful, thank you!🥸
@AndreasSpiess10 ай бұрын
You are welcome!
@Beatfreak198314 жыл бұрын
A great and useful video! Thanks Andreas!
@AndreasSpiess4 жыл бұрын
My pleasure!
@JBoek304 жыл бұрын
Wow vielen Dank ! nice Erweiterung/Erleichterung Klasse Zusammenstellung ! klappt auf anhieb : 7
@AndreasSpiess4 жыл бұрын
Sollte eigentlich ;-) Vielen Dank für's Feedback.
@caiopedreira66434 жыл бұрын
Hello Professor Spiess: How about using MQTT, CoAP or even raw UDP instead of Telnet, so we can debug anywhere on the world? It would be nice to see a video of you comparing the performance and latency between TCP and UDP debugging to some broker or even a remote CoAP server. It will be great for those people who don't want to do port forwarding on their routers to access the Telnet server over the Internet. Congratulations for your great master classes! Best Regards!
@AndreasSpiess4 жыл бұрын
I am no network specialist. So somebody else has to do that :-(
@VladimirErmakov4 жыл бұрын
Also small note about upload: image was uploaded to one of two partitions (free one), then if all ok and md5 match, bootloader would be told to switch to use that partition. So nothing to memmove. (i may be not accurate, digging into the code a few years ago to check what's wrong with http ota, and i don't know what is used for SPIFFS, because i only use it to store config.json).
@AndreasSpiess4 жыл бұрын
I think you are right.
@temyraverdana64214 жыл бұрын
Mr. Andreas thanks, this video is amazing! Thanks!
@AndreasSpiess4 жыл бұрын
You are welcome!
@Thorathome4 жыл бұрын
Thanks, Andreas. Just the two hints on creating your own sketch templates and #include "MY_WIFI_CREDENTIALS.h" made my day. Brilliant time-savers.
@AndreasSpiess4 жыл бұрын
Glad it helped!
@VladimirErmakov4 жыл бұрын
Actually there are two versions of OTA: 1. Arduino OTA, where initiator is Arduino IDE, so you should be in the same network; 2. HTTP OTA, where you have to code trigger, but then device downloads image from http server (may be served as a static file, but better to use something that adds checksum headers, like mine esp-ota-server). That method used by Tasmota and TasmoAdmin to update devices.
@AndreasSpiess4 жыл бұрын
I did not cover webOTA, because, if you need that, it is better to use IOTappstoy.com.
@WistrelChianti4 жыл бұрын
ah good to know this is there. I was wondering if there would be a way to dump an update somewhere online and have the board check/fetch from time to time. Will have a look. (although will maybe check Andreas' IOTappstory.com as an option)
@WistrelChianti4 жыл бұрын
feels like stage 2 though. Stage 1 is definitely just "avoidance of USB" for initial development work (as I'm getting close to "burying" the board)
@JohnJCouture4 жыл бұрын
Andreas, great job! Works like a charm. is there a way to SET the upload IP address? The IPAddress command doesn't seem to work. I suspect it has to do with the placement of the IPAddress command?
@AndreasSpiess4 жыл бұрын
The IP address is usually given by your network.
@B4x44 жыл бұрын
Thank you for another great episode. Please make the RTOS episode.
@AndreasSpiess4 жыл бұрын
We will see...
4 жыл бұрын
This video already helped me at 2:50... i never thought there are different partitioning schemes on ESP32s, since i had only 4 option in that menu by using a Lolin32 option. I am writing thing with lots of libraries and i run out of space. I will try these, i think it will help already.
@AndreasSpiess4 жыл бұрын
Available partitions depend on the board you select.
@chahilpatel29934 жыл бұрын
Perfect Timing 👌
@AndreasSpiess4 жыл бұрын
Glad you think so!
@johnpricejoseca17053 жыл бұрын
Hi Andreas, thanks for another great video. I was wondering: Would the ArduinoOTA.handle() call be a candidate to live in an RTOS Task? -- This way, you might not need to scatter calls to it all over the code. Thoughts? Thanks again.
@AndreasSpiess3 жыл бұрын
You are right. Maybe you watch my RTOS video. There I place it in the loop(task)
@johnpricejoseca17053 жыл бұрын
@@AndreasSpiess you are ahead of me! :)
@Павел-ж1щ7л4 жыл бұрын
Thanks for tutorial! Also one note - better to disable all interrupts right in begining of on ArduinoOTA.onStart function. As I see on my sketch with Ticker library - OTA not likes if someone interrupts it while transmission ) So I called .detach commands in begining of OTA.onStart
@AndreasSpiess4 жыл бұрын
If you do not attach interrupts it should not be a problem, I assume. But disabling them is for sure not wrong.
@harrytsang15013 жыл бұрын
The use of delay() inside a task will cause busy waititng and makes your system less real-time. The task will not yield to lower priority tasks so vTaskDelay() is preferred over delay(). However, your time will delay in increments of 15 ms so you may want to also use millis() to make it tighter
@AndreasSpiess3 жыл бұрын
You are right. I read somewhere that delay() is replaced with vTaskDelay() by the compiler (which would make sense). All my tests with RTOS showed that the ESP32 is way too fast for all tasks I created and had to wait most of the time anyway.
@katers53194 жыл бұрын
Just 2 suggestions for improvement: 1- incorporate the ArduinoOTA.setHostname() call into the setupOTA() function (which has then to be called with a hostname parameter), 2- append the lower 3 bytes of the MAC address to the OTA hostname. This will help identifying devices if you happen to have more than one device running the same sketch in your network.
@AndreasSpiess4 жыл бұрын
Good ideas. Maybe you create a pull request?
@katers53194 жыл бұрын
@@AndreasSpiess Here you go… :-)
@muriloteixeira44304 жыл бұрын
Thanks Andreas for not only being succinct, organized and creating very useful content. You are also fun and your videos are pleasurable. Now in addition to being a channel subscriber, I’ll put a zero at the beginning of my youtube username lol
@AndreasSpiess4 жыл бұрын
Good practice if you want to be first!
@necrodrucifver Жыл бұрын
I am going to experiment setting the handler on the setup, expecting been able to upload code only when the bard is rebooted, thank you! Very nice videos, please consider a video to code read protection on esp32
@AndreasSpiess Жыл бұрын
As I like open source I have no need for code protection ;-)
@foskolo4 жыл бұрын
Grüezi Andreas, great video again! The sketches I dowloaded from your link are quite different from them of the video ("#define ESP32_RTOS " at the begin of the "0TA_Template_Sketch" for example ). Can I use them without changes with an ESP32 (except SSID and password of course)? Thank you!
@AndreasSpiess4 жыл бұрын
I do not remember the details. I would just try it ;-)
@avejst4 жыл бұрын
Great walkthrough 👍 Thanks for sharing 👍😀
@AndreasSpiess4 жыл бұрын
Thanks for the visit
@ruudvanderheijden60192 ай бұрын
Love all your videos and your accent! when an update is loaded via OTA, it is loaded into memory. Does that mean that the size of the code can not exceed half the size of the memory?
@AndreasSpiess2 ай бұрын
Yes. But the ESP32 fortunately has a ton of memory...
@souzamce4 жыл бұрын
Always very good classes
@AndreasSpiess4 жыл бұрын
Thank you! 😃
@djayers4 жыл бұрын
Very helpful, thanks Andreas.
@AndreasSpiess4 жыл бұрын
You are welcome.
@collinsabraham85902 жыл бұрын
Hello Andreas, thanks a lot for the tutorial, I am new to microcontrollers and I have a little question. Please is it possible to link the Esp32 to the python IDE over the air just as you've done, but in a way that it sends data from a sensor, directly to the IDE so that I can manipulate the data with other blocks of code within the IDE?
@AndreasSpiess2 жыл бұрын
You can use MicroPython with the ESP32.
@vivekchauhan74684 жыл бұрын
As always great video...
@AndreasSpiess4 жыл бұрын
Thank you!
@McTroyd4 жыл бұрын
And here I was, wondering if something like a watchdog timer could be used to call the OTA handler. You beat me to it; I forgot about the RTOS aspect of the ESP32. It seems natural to run that as its own periodic task. I'd be worried about copying the call throughout my code -- later wonder "What's this doing here?" and delete it, in the name of "optimizing." 😁
@AndreasSpiess4 жыл бұрын
If you always use the same template to start with, the chance that you delete it is small ;-)
@McTroyd4 жыл бұрын
@@AndreasSpiess But that requires too much thinking ahead!! I'm American, I'm not supposed to make sense. 😉
@PetRatty4 жыл бұрын
yes setting up ArduinoOTA.handle(); on core 0 is pretty simple, you then need nothing in loop, same goes for the basic udp example, use netcat for the debugger as it doesn't disconnect like putty, minicom is another but haven't tried it
@AndreasSpiess4 жыл бұрын
I have tried it and it crashed. On both cores :-(
@blunoz29074 жыл бұрын
Great video as always. What do you think about offloading the OTA functionality to the second core? Might keep the main sketch cleaner. Also I’ve struggled to get remote debug working with Platform IO. Would love you to delve into this in a future video.
@AndreasSpiess4 жыл бұрын
1. I see no advantage to "offload" 41 microseconds to another core. Maybe in another process would be a possibility. 2. I will not cover platformIO on this channel other than teasers. Most of my viewers are on Arduino IDE
@graffygerry4 жыл бұрын
You could use a timer interrupt to execute the OTA handler
@AndreasSpiess4 жыл бұрын
You can try it. I will not do it.
@wjhoogervorst4 жыл бұрын
Thanks, just what I needed. With my ESP8266 I use ESP8266HTTPUpdateServer, but on my ESP32 I could not get the ESP32 version of this functionality working properly. Now I will switch to this way of OTA update, until I get the Webupdate working.
@AndreasSpiess4 жыл бұрын
Good plan!
@sblantipodi4 жыл бұрын
Wonderful videos, as always
@AndreasSpiess4 жыл бұрын
Glad you like them!
@javierpelaez14 жыл бұрын
Good job as always!! I would like you to record a video about OTA using SIM800 + Atmega328. Probably using a flash chip as Moteino guys use for LoRa upgrade firmware OTA.
@AndreasSpiess4 жыл бұрын
This topic is way too special for this channel :-(
@javierpelaez14 жыл бұрын
@@AndreasSpiess ok, I could understand. I mean update an Arduino device firmware via gprs chip. Maybe an example doing from fttp and a esp32 chip could be other possibility. Anyway, thanks for your videos and channel!!
@WistrelChianti4 жыл бұрын
Hi Andreas, I was just having a wang through your code, and noticed it looks like you found out something special about RTOS. Can I just check to be sure, it looks like you've somehow found a way to hand over the task of running the handle() function to RTOS, meaning it is no longer a requirement to actively run it in our own code. Is this correct? Would be great if you could say a few words on RTOS (if you didn't already). I'm guessing it is something "underneath" that has it's own thread and you can farm out (small/fast?) tasks to it. Thanks again for this work and your wonderful channel.
@AndreasSpiess4 жыл бұрын
This is a quite old video and I do not remember the details. I wanted once do a little more with RTOS. But so far it never reached the top of the list.
@WistrelChianti4 жыл бұрын
@@AndreasSpiess No worries I figured it out any how and will sort some changes to to the code on github and send a pull in due course
@WistrelChianti4 жыл бұрын
@@AndreasSpiess Hello again, all sorted. And I was able to get the TelnetStream bug fixed with help from the library author (well he fixed it, I just told him about it :D). Pull request is here github.com/SensorsIot/ESP32-OTA/pull/13