Unmatched Reliability
Temporal filtering plus a 4-state machine require a sustained signal before flipping ON or OFF.
Why it matters
Sleep through the night without your lights randomly clearing.
A statistical presence engine with temporal filtering delivers rock-solid bed occupancy detection. No more lights turning off while you sleep. No more mystery triggers when a cat walks by.
Lights stay on while you’re still in bed.
Pets and fans stop triggering false automations.
You can tune every parameter live in Home Assistant.
binary_sensor.bed_occupied
ON
text_sensor.presence_state_reason
DEBOUNCING_OFF • 02.1s
sensor.abs_clear_delay_remaining
27.9s
State Machine Log
03:14:01 z_still = 9.8 → DEBOUNCING_ON 03:14:04 timer met → PRESENT 03:18:29 z_still = 3.7 + abs_clear_delay running
Value Propositions
These are the headline features customers should see the moment they land on the site.
Unmatched Reliability
Temporal filtering plus a 4-state machine require a sustained signal before flipping ON or OFF.
Why it matters
Sleep through the night without your lights randomly clearing.
Statistical Intelligence
Z-score analysis adapts to the empty-room baseline so the sensor reacts to meaningful changes, not noise.
Why it matters
Works consistently across rooms, hardware revisions, and climates.
Privacy by Design
Millimeter-wave radar knows that someone is in bed—never who. All computation happens locally.
Why it matters
Your automations stay private because nothing leaves the ESP32.
Stillness Resilience
Absolute Clear Delay waits 30 seconds after the last confident reading before considering the bed empty.
Why it matters
No false OFF events when you lie perfectly still.
Fully Tunable
Expose every threshold, timer, and debug state in Home Assistant so power users can tune live.
Why it matters
Change parameters and watch the engine respond in real time.
Built for Real Rooms
Still-energy focus ignores fans, HVAC, and hallway traffic that defeat other sensors.
Why it matters
Pets jumping on the bed no longer ruin your automations.
How It Works
Each layer of the Bed Presence Sensor eliminates a class of false positives so your automations only fire when the bed is truly occupied—or truly empty.
A deliberate finite state machine validates every transition before it ever flips the presence bit in Home Assistant.
It filters out drive-bys and pet hops by verifying that presence is intentional and sustained.
Configurable 3s ON / 5s OFF debounce timers demand sustained signals before any change is announced.
No more twitchy sensors. The engine only moves when the signal proves it is real.
A 30s cooldown remembers the last confident presence so perfectly still sleepers do not trigger false 'off' events.
Lights stay on while you rest, yet the system still reacts quickly once the bed is truly empty.
Instead of raw amplitudes, we examine how far a reading deviates from the empty-bed baseline using z-scores.
This adaptive approach travels well between hardware variations and room conditions without manual retuning.
Deep Dive
Each transition has guardrails, timers, and abort paths so the Bed Presence Sensor behaves like the presence engine it is.
The bed is confidently empty. The engine watches for a z-score that breaks above the high threshold (k_on = 9.0).
Any transient blip that drops below k_on aborts the attempt before automations ever notice.
A strong signal appears, but the engine starts a 3-second timer instead of flipping to ON immediately.
If the energy falters during this window, it snaps back to IDLE. No false triggers from pets or hallway motion.
The signal held for the entire debounce, so the binary sensor finally turns ON and logs the last high-confidence timestamp.
This timestamp powers the Absolute Clear Delay so still sleepers remain counted as present.
The signal dipped below the k_off threshold (4.0), but the engine verifies that at least 30 seconds have passed since the last strong presence.
Only after those conditions does a 5-second OFF debounce begin while the sensor remains logically ON.
When the low signal holds through the OFF debounce, the system confidently declares the bed empty and resets to IDLE.
If presence returns at any point, it aborts and jumps back to PRESENT without confusing downstream automations.
Thresholds & Timers
These defaults ship ready for reliable presence out of the box, yet every parameter is adjustable live from the Home Assistant dashboard.
Technical Differentiators
The Bed Presence Sensor's architecture attacks the three failure modes that frustrate smart home power users.
We focus on still energy reflections so fans, HVAC, and hallway traffic do not register as presence.
Sleeping humans act like large stationary mirrors. That deliberate signal choice is why the sensor feels calm.
Every z-score calculation, debounce decision, and binary flip happens on the ESP32—no cloud tether.
Latency disappears, privacy is intact, and your automations keep running if the internet blinks.
Two thresholds (k_on vs k_off) create a deliberate dead zone so the sensor never chatters at the edge.
That built-in hysteresis is the secret to keeping HA dashboards quiet even when signals hover near a boundary.
Trusted by Home Assistant power users
“I've tried every mmWave board out there. This is the first sensor that stays ON while I'm reading in bed and instantly clears once I stand up. The debug text sensor makes it totally transparent.”
Sasha Monroe
Home Assistant Moderator
Live HA Dashboard
binary_sensor.bed_occupied
ON
text_sensor.presence_state_reason
DEBOUNCING_OFF → PRESENT
debug.last_high_confidence_at
03:18:29
log:
03:18:29 z=3.7 < k_off → start abs_clear_delay
03:18:59 delay met → DEBOUNCING_OFF
03:19:04 timer met → IDLE
Ready for dependable automations?
Primary CTA: Get Yours Today. Secondary: View Documentation. Tertiary: Read the Technical Architecture.
What you get
Complete mmWave sensor kit with tuned firmware and printed enclosure.
Live Home Assistant dashboard with tunable parameters and debug text sensor.
Documentation and GitHub repo with the full presence engine architecture.