• System boots with no sensors connected
  • temp daemon reports health status to redis indicating no sensors connected
  • temp daemon reports regular schedule of events to pub-sub with no temp data
  • Control daemon reads temp updates with no sensors, reports health warning that sensors are not ready
  • User loads web interface
  • Web reads health from control daemon and temp daemon, shows warning to user that sensors aren't connected
  • User clicks "Diagnostic" -> "Sensor Setup"
  • User sees all 5 lights off
  • User connects either heat input sensor or water temp sensors
  • temp daemon reads the sensor(s) connected and records it in the config as either the heat input sensor or the water temp sensors, and reports the temperature (see src/temp/README.md "Probe bundles and identity setup")
  • Control daemon continues to report a warning that sensors are not configured
  • Web reads temp update showing some sensors reporting, shows appropriate lights on, allows user to continue to next step
  • User connects remaining sensor set
  • On the next tick, temp daemon reads from all sensors, noting the id(s) of the newly connected ones, and reports temperature data as normal (see src/temp/README.md "Probe bundles and identity setup")
  • Control Daemon reads temp events and sees all sensors connected, reports healthy status
  • Web notes temp events now have full sensor data and allows user to finish sensor connect diagnostics
  • system should operate as normal now

Implementation notes

  • Temp: health:temps reflects missing/incomplete probes; temps.reading includes setup_state and role-keyed roles (see src/temp/README.md).
  • Control: health:control is degraded while the latest reading has setup_state other than ready, stale/missing temps, or no tub_avg_f; ok when setup is complete and readings are fresh.
  • Web: Main Control page shows a warning banner with Open Sensor Setup when setup_state !== ready. Diagnostic → Sensor Setup wizard calls /api/sensor-setup/* → temps.command. Step 1 Continue requires all probe lights off before teach-in starts.