CE-side commands (the touch panel)
highlight = CE belief (ui.active_button_id from
preset_changed); a click only pulses until the event confirms.
Bus side & fault injection (the simulator)
these bypass CE's command path — CE only overhears the resulting
frames (the <RX* console lines).
Ceiling (simulator truth — lights_changed only)
levels are NOT on the wire — a recall carries only area+preset; this matrix is the load controller's preset memory.
State readout (GET /api/state every 2 s)
connecting…
VACANT
(waiting for first poll)