I’m looking into cloud-based OTA updates (for an ESP32-based solution, but this question is mostly platform agnostic). I’ve seen the bintray code to upload a binary from PlatformIO to a cloud-based provider, and I’ve seen examples that use the Update library in Arduino to update firmware on the device, so I definitely see the path to roll my own solution. However, not having to build my own would be awesome. I also see that AWS and Azure have IoT offerings that include IoT, but looking at the docs, I can barely understand what these platforms are aiming at, as it seems vastly more than what I need. I have to wonder if I’d spend less time building my own cloud OTA solution than I would integrating with AWS or Azure IoT.
What I am looking for, requirements:
- Some means of uploading binaries
- Devices can call an HTTP(S) endpoint to check for updates
- Devices can download a binary and get a checksum or some other means of validating the binary before rebooting
- Ability to partition devices so that some can receive “beta” updates
- Web interface to manage the device partitioning
Additional nice-to-have features:
- Ability to upload binaries from PlatformIO (or a way to script it easily enough)
- Some form of signing the binary and validation on the device
- Basic device telemetry, but really nothing fancy as I want to keep the client code as simple as possible
- Rolling updates and support for rollback (assuming the updated devices still function)
- Very basic analytics about version distribution
To clarify what I am looking for in this post:
- Does something exist that I can use for the above requirements? It must also be pretty affordable as this is just for a hobby project I intend to distribute in small quantities.
- AWS/Azure IoT pricing is fine, but is the implementation of the above trivial? It doesn’t seem like it. It looks easier to upload binaries to S3 myself and pull them down from clients.
- Any related feedback is welcome. I don’t mind hosting a simple web service if I roll my own. Uptime doesn’t need to be amazing and the features I’m looking for are pretty minimal.