Summary
- Moves the real ESPHome device configs into
stackdrift/grow-fleetforatlas-hydro-kit,atoms3u-sensor-rig, andm5stack-airq. - Adds a
fleet.yamlmanifest with package names, release eligibility, local assets, and the pinnedstackdrift/esphome-componentsdependency. - Adds Forgejo Actions CI for PR impacted-device compiles,
mainall-device compiles, and tag-based firmware packaging/publishing. - Adds release packaging helpers that produce
.ota.bin,.factory.bin, and.manifest.jsonfiles for Forgejo generic packages.
Notes
- Refs stackdrift/esphome-components#16.
- The migrated Atlas config uses
μS⁄cmfor the EC calibration labels, matching stackdrift/esphome-components#14's config fix direction. - VPD precision from stackdrift/esphome-components#15 is still reusable component code and is not closed by this fleet bootstrap.
- The external component source needs
path: .because the currentesphome-componentsrepo keeps component directories at repo root rather than undercomponents/.
Validation
python3 -m py_compile scripts/*.pypython3 scripts/list_devices.py --matrixpython3 scripts/impacted_devices.py --path fleet.yaml- YAML parse for
fleet.yamland.forgejo/workflows/firmware.yml git diff --check HEADdocker run --rm --entrypoint python3 --user "$(id -u):$(id -g)" -e HOME=/tmp -v "$PWD:/config" -w /config ghcr.io/esphome/esphome:2026.5 scripts/compile_devices.py --all- Packaged all three devices with
scripts/package_device.py --version v0.0.0-testinside the same ESPHome container image. - Codeberg Actions PR run #4742150 succeeded:
pr_preparepluspr_compileforatlas-hydro-kit,atoms3u-sensor-rig, andm5stack-airq.
Follow-up
After this PR lands, tag releases as firmware/<device>/vX.Y.Z to publish immutable firmware packages. Site-local OTA pull/deploy remains intentionally out of scope.
## Summary
- Moves the real ESPHome device configs into `stackdrift/grow-fleet` for `atlas-hydro-kit`, `atoms3u-sensor-rig`, and `m5stack-airq`.
- Adds a `fleet.yaml` manifest with package names, release eligibility, local assets, and the pinned `stackdrift/esphome-components` dependency.
- Adds Forgejo Actions CI for PR impacted-device compiles, `main` all-device compiles, and tag-based firmware packaging/publishing.
- Adds release packaging helpers that produce `.ota.bin`, `.factory.bin`, and `.manifest.json` files for Forgejo generic packages.
## Notes
- Refs stackdrift/esphome-components#16.
- The migrated Atlas config uses `μS⁄cm` for the EC calibration labels, matching stackdrift/esphome-components#14's config fix direction.
- VPD precision from stackdrift/esphome-components#15 is still reusable component code and is not closed by this fleet bootstrap.
- The external component source needs `path: .` because the current `esphome-components` repo keeps component directories at repo root rather than under `components/`.
## Validation
- `python3 -m py_compile scripts/*.py`
- `python3 scripts/list_devices.py --matrix`
- `python3 scripts/impacted_devices.py --path fleet.yaml`
- YAML parse for `fleet.yaml` and `.forgejo/workflows/firmware.yml`
- `git diff --check HEAD`
- `docker run --rm --entrypoint python3 --user "$(id -u):$(id -g)" -e HOME=/tmp -v "$PWD:/config" -w /config ghcr.io/esphome/esphome:2026.5 scripts/compile_devices.py --all`
- Packaged all three devices with `scripts/package_device.py --version v0.0.0-test` inside the same ESPHome container image.
- Codeberg Actions PR run #4742150 succeeded: `pr_prepare` plus `pr_compile` for `atlas-hydro-kit`, `atoms3u-sensor-rig`, and `m5stack-airq`.
## Follow-up
After this PR lands, tag releases as `firmware/<device>/vX.Y.Z` to publish immutable firmware packages. Site-local OTA pull/deploy remains intentionally out of scope.