Code Sample — Champion
The full-featured tier: over-the-air updates, persistent configuration, device provisioning, and the device side of every platform feature.
Champion-ArduinoIDE and Champion-PlatformIO firmware repositories. Reach for it once you're comfortable with the OhioIoT pattern and you're ready to manage devices in the field rather than at your desk.Over-the-air updates
Champion implements the device half of OTA Updates. It listens for the update message the platform sends to a device's group, downloads the image from the group's URL using the supplied credential, writes it to the spare flash partition via the ESP32 HttpsOTAUpdate flow, and reboots into it. It honors the abort, accept, and rollback controls, and republishes its firmware version after a successful update so the dashboard can confirm the change landed.
Persistent configuration (NVS)
Settings that must survive a reboot — the device's identity, its per-device configuration, OTA group — are kept in the ESP32's non-volatile storage. The device ID in particular is generated once and persisted, so a board keeps the same identity across reboots and reflashes (see Device Identity).
Provisioning and the config echo
Champion supports pushing settings down from the dashboard and confirming them back with the config echo pattern: the device receives a setting, applies it, and republishes the adopted value so the user sees the change take effect rather than just hoping it did. That closed loop is the difference between "I sent a setting" and "the device is running that setting."
Everything from the lower tiers
Champion is a superset: it keeps the clean pub/sub of Minimalist and the fleet conventions and twin-building of Scaler, then adds the management layer on top. If you've followed the ladder up to here, none of it will feel unfamiliar — it's the same patterns, with the device-management pieces filled in.
