Online Updates over MQTT for Field Units
Staged rollouts to connected units with resumable downloads and health-gated commits.
- Runs out of the box: yes
- Tests: no
- CI: no
- Docs: yes
- Used in production: no
Learning demo, not turnkey. This example is experimental: it shows an idea that works on the bench, but it has not been reviewed for production use. Expect rough edges and check with the owner before reusing it.
Purpose#
A controller-side agent and a small rollout service. The service announces a release to a cohort of units over MQTT, units download the image in resumable chunks and a unit only commits the new version once its own health checks pass for a configured period.
The prototype was built against a simulated fleet of a few dozen units to explore cohort sizing and what to do when units go offline mid-rollout.
Technologies & features#
- Technologies
- PythonMQTTLinux
- Features
- Automatic UpdateHealth Check
- Topics
- Update DeliveryprimaryDevice Comms & IoT
Lessons learned#
- Worked
Gating the commit on a health window caught a build that booted but could not reach its sensor bus, before it spread past the first cohort.
- Limitation
Units that stay offline for the whole rollout window are left on the old version with no automatic retry yet.
Try it#
git clone https://git.example.internal/controls-integration/ota-mqtt-spike.git
cd ota-mqtt-spike
docker compose up broker rollout
python3 sim/fleet.py --units 24Commands come from the owner’s README. Credentials are never stored here.




