Parameters
Automation tuning for this room. Changes autosave and take effect on the next tick.
Sunrise alarm
Sunrise ramp length — also the ALARM light fade duration.
State durations
how long each state lasts before auto-transitioningIN_BED → SETTLING after this many sec of bed occupied
SETTLING → SLEEPING after this — also the SETTLING light fade length.
IN_BED/SETTLING → AWAKE if bed empty this long
PREPARE → AWAKE after this
PRE_BED → AWAKE if nobody got in bed this long
Anti-chatter: block leaving a state this soon after entering (except 'left bed'). Higher = less flapping
Restlessness → cooling boost
A time-boxed AC overlay (−temp, max fan, swing). Not a sleep state.Fraction of the movement window that must be motion to ARM the boost. Lower = more sensitive (0.1 ≈ very sensitive, 0.4 = calm)
Trailing window motion is measured over. Shorter = twitchier; longer = only sustained tossing counts
How long the boost stays active after restlessness. Any further restlessness refreshes the FULL timer (sliding). Runs across state changes.
Degrees below the current state's setpoint while boosting. Fan goes to max + swing both automatically.
When armed (while SLEEPING): AC setpoint −1°, fan max, swing both — held for 1 min (refreshed on more movement), then reverts to the state's setting. The manual "Reset cooling boost" button is on the bedroom page. Tunable live, over the config API, or auto-adjusted nightly by the learner after ~14 days of morning feedback.
Clock schedules
used by clock-relative factsPRE_BED auto-fires at this clock time
Demo / testing
Restores settings + states + transitions + every device scene to the captured demo baseline. Snapshotted first, so it's revertable. Reload the page to see the values.
Per-state device targets
Per-state target for each device. Lights: ON/OFF + brightness. AC: ON/OFF + temp / mode / fan. Changes auto-save.
| Device | NULL | AWAKE | PRE_BED | IN_BED | SETTLING | SLEEPING | NIGHT_LIGHT | PREPARE | ALARM |
|---|---|---|---|---|---|---|---|---|---|
Dimmer Switch dim light | 80% s | 90% s | s | 1% s | 1% fade = settling duration | s | s | 60% s | 89% fade = sunrise duration |
E27 Dim dim light | 80% s | 90% s | s | 60% s | 1% fade = settling duration | s | s | 60% s | 89% fade = sunrise duration |
Light belt switch | s | s | s | s | fade = settling duration | s | s | s | fade = sunrise duration |
tracklight - 1 switch | s | s | s | s | fade = settling duration | s | s | s | fade = sunrise duration |
tracklight - 2 switch | s | s | s | s | fade = settling duration | s | s | s | fade = sunrise duration |
Carrier AC AC (Carrier) | °C | °C | °C | °C | °C | °C | °C | °C |
Import JSON config (settings / states / transitions / device payloads)
Paste a config bundle — same schema as GET/POST /api/app/bedrooms/76e17173-0672-4397-9e01-e5cbdf15853c/config. Any subset of the four sections is applied; settings merges, deviceStateConfig upserts per (device, state).
Full parameter access (settings, states, transitions, per-device payloads) is available over the config API: POST /api/app/bedrooms/76e17173-0672-4397-9e01-e5cbdf15853c/config with bearer = APP_API_TOKEN (or TICK_SHARED_SECRET). The mobile app uses the same endpoint; the Import JSON box above posts the identical schema.
✨ AI bedroom setup
Describe how the room should behave; the LLM writes and applies a per-state config for the synced devices.
No OpenRouter key set — add one in Settings first.