Skip to content
#0836
FilesCron

The update server is a file, and the changelog is a hash

Forty ESP32 boards in the field wake once an hour and ask one question: GET firmware.bin?hash. The answer is 64 hex characters, plain text, no JSON to parse on a microcontroller. Each board compares it to the SHA256 baked in at build time. Same string, back to sleep. Different string, download the file, flash, reboot.

The build happens in the container. A cron line pulls main, compiles, and writes the new binary into the folder the boards are watching. There is no OTA service, no device registry, no manifest format to invent. The folder is the update server.

A bad build ships? The previous binary is still readable at ?revision=, so the rollback is a copy. The boards notice within the hour.

The update server is a file, and the changelog is a hash.