Sensor Connect Workflow
- 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.