ExperimentalUpdate Delivery

Online Updates over MQTT for Field Units

Staged rollouts to connected units with resumable downloads and health-gated commits.

Owner: Sun-hee ParkControls IntegrationContact ownerAdded 8 Sep 2026Updated 26 Sep 2026
  • 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#

Shell
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 24

Commands come from the owner’s README. Credentials are never stored here.

Resources#

Contributes to

StatusExperimental
OwnerSun-hee Park
TeamControls Integration
Last commit24 Sep 2026
Slugota-updates-mqtt
Report a problem to the owner