Build notes for the v4 kit. Pins and parts come from the firmware on the main branch (train 8.2.0.0). Setting up a finished kit instead? Start with the user guide. Power down between changes. A couch already killed a board. Australian mains work needs a licensed electrician where the law requires it.
BUILD NOTES

Flashing and first boot

USB once. OTA forever. Unplug test last and not optional.

USB serial flash on a dark bench, no credential screens.
USB serial flash on a dark bench, no credential screens.

Applies to the hub, the DSC-Control panel, the soil probes and the Sonoff plugs. A kit's SD image already carries the binaries and their secrets; the Setup wizard flashes them over USB.

Problem

A board that boots into a guess is not adopted.

Build

Kit path: Setup › USB flash on the Pi, in order hub, panel, probes, then Sonoffs. Bench path: esphome run dsc-hub-kit.yaml from firmware/v4 (ESPHome 2026.6.5 or newer) with your own secrets.yaml.

Result

The hub opens DSC-Setup-XXXX, the fleet joins your Wi-Fi, and stopping the brain drops every Sonoff within 90 s.

How it works

Secrets

API, OTA and setup-hotspot passwords plus the ESP-NOW key. The kit card carries the hotspot passwords. Names only here. Values never; rotate anything that ever sat in a chat paste.

Validate

Tolerant YAML parse, esphome config with dummy secrets. A full PlatformIO compile failing offline is an environment limit, not a config fault.

First boot (hub)

Heartbeat grace, safe-boot ventilation (or persisted manuals), boot-resume prompt after a mid-photoperiod cut, SNTP Australia/Sydney.

Adopt

The brain finds the fleet in Kit › Inventory. Later updates go over the air from Settings › Devices › Firmware. Then stop the brain and watch the Sonoffs drop within 90 s.

Diagram

USB flash → hotspot join → brain adopts → over the air → unplug test

Milestones

  1. 1. Write secrets locally
  2. 2. Config check
  3. 3. USB flash
  4. 4. Adopt
  5. 5. Unplug

Cost band + next

Firmware files stay on Firmware releases, next to the flash notes.

You are live when the last test passes. Not before.