ESP32 Cloud Based OTA Firmware Updates - Not Local Server Based

Hey guys, I have been struggling to find a good example/tutorial on how to set up a cloud based OTA firmware update scheme. Everything I come across is where you push an OTA firmware update through the local network via local server. I want to be able to put the binaries in the cloud, have the ESP32 periodically check the version number, and then download the binary and run it if the version number is greater than its current running one.

I am willing to use Azure IoT, Google Storage, AWS, etc. to manage the firmware deployments to the ESP32.

I have been searching around and trying misc exaples in Visual Studio Code - both PlatformIO and Azure IoT Device Workbench.

Thanks and any help or advice is greatly appreciated!

From the docs: JFrog Bintray OTAA demo. Though that one is 3 years old + Bintary has been obsoleted. May be due to for an update with the new JFrog cloud, @ivankravets

As long as these services provide an API to get the version number + download link to the .bin file, existing code examples like httpUpdateSecure.ino for Arduino-ESP32 or examples/system/ota for ESP-IDF already cover this. The code can be easily adapted to a new URL, though the extra logic for possible authenticating + checking wether an update is available must be custom-written.

Code that is already adapted to one of these platforms is e.g.:

1 Like

Are there any AWS specific examples using PlatformIO? I’ve been trying to understand/convert the linked example but I really jut need a working example to start from.

I don’t have an AWS account to end-to-end test it (I’m definitely not getting a credit card just to register), but I can for sure try to convert the AWS example project to be PlatformIO compilable.

1 Like

If you could that would be amazing!
There’s an example in the beta branch of the esp-aws-iot repo of OTA over MQTT, but being new to CMake I’m still trying to wrap my head around how the build process even works.