HiveTech is a local-first firmware repo.
Current runtime flow:
- local
src/config.hprovides Wi-Fi SSID, password, and MQTT broker - firmware boots on ESP32
- node connects to Wi-Fi
- OTA is initialized
- BME280 values are read and published to MQTT
- node returns to timed deep sleep
platformio.ini currently contains a developer-local upload_port. Treat that as local machine state, not as committed team-wide truth.
python scripts/compile_check.pyis the default compile-only validation pathpython scripts/hardware_smoke_check.pyis the preflight path before OTA upload- the script creates a temporary
src/config.hfromsrc/config_template.hwhen needed - the hardware preflight checks local config completeness, OTA target reachability, and MQTT broker reachability
- CI uses the same path so local and remote validation stay aligned
- separate local credentials from committed templates
- keep
src/config.huntracked - verify the target IP/device before OTA uploads
- document any destructive or risky deployment step explicitly
- If Wi-Fi or MQTT details change, update only local config files.
- If OTA fails, fall back to a direct flash path rather than repeatedly retrying against the wrong node.
- If BME280 detection fails, check wiring and I2C address assumptions before changing code.