mmWave Presence Sensors: Automations That Stop Turning the Lights Off on You

Why radar presence detection fixes the single most annoying bug in home automation

Contents

There is one bug that turns people against home automation faster than any other, and it goes like this: you sit down in the study with a book, the light is on, and eight minutes later it switches off and leaves you in the dark. You wave your arms like a lunatic to bring it back, settle down again, and eight minutes later it happens once more. After the third time you rip out the automation and go back to a wall switch, muttering that smart homes are a scam.

The culprit is almost always a PIR motion sensor, and the problem is baked into how PIR works. Millimetre-wave radar sensors fix it, and doing so is the difference between “motion-activated lighting” that fights you and genuine presence detection that quietly knows the room is occupied even when you’re sitting perfectly still. Let me explain why PIR fails at this, because understanding the physics tells you exactly what mmWave buys you and where it in turn falls down.

Why your PIR sensor keeps giving up on you

Advertisement

A passive infrared sensor detects change in infrared radiation across its field of view. When a warm body moves across the sensor’s zones, the differential trips the detector. That word — change — is the whole problem. PIR detects motion, and a person reading a book, watching a film, or typing quietly at a desk is, from an infrared point of view, barely moving at all. The sensor sees no change, decides the room is empty, and the “no motion for 8 minutes” timer runs out.

You can paper over this by cranking the timeout up to twenty minutes, and now the light burns for twenty minutes after you’ve left, which is its own waste and its own annoyance. There is no timeout value that is both short enough to be efficient and long enough to cover a still human. PIR is answering the wrong question. It tells you about motion when what you actually want to know is occupancy.

What mmWave does differently

Millimetre-wave sensors emit a low-power radio signal in the 24GHz or 60GHz band and measure the reflections. Because they’re measuring reflected radio energy rather than infrared change, they can detect the tiny movements a PIR ignores — the rise and fall of your chest as you breathe, the micro-movements of a hand on a page. To a good mmWave sensor, a person sitting motionless on a sofa is still unmistakably present. That single capability is what kills the lights-off-while-I’m-still-here bug dead.

The trade-offs are real and worth knowing up front. mmWave sensors are more expensive than PIR, they draw more power (most want mains or USB rather than a coin cell), and they need tuning — a sensor that detects the flutter of a curtain or a person walking past in the hallway will hold your empty room’s lights on. They can also be too sensitive, picking up movement through a plasterboard wall from the next room. The skill with mmWave is dialling the sensitivity and distance gates so it sees the room you care about and nothing beyond it.

There’s also latency asymmetry to understand. mmWave is fast to detect presence but can be slow to declare absence, because it waits to be sure the room is genuinely empty before flipping the state. That’s usually what you want — better a few seconds of lights-on after you leave than the room going dark while you’re in it — but it means mmWave alone can leave lights on slightly too long. The best setups combine the two sensor types, which I’ll come to.

What to actually buy

Advertisement

The market splits into a few tiers, and I’ve run examples from each.

Integrated sensors. Devices like the Aqara FP2 are a finished product: a mains-powered mmWave sensor with zone detection that lets you draw regions on a floor plan and get separate presence states per zone (desk occupied, sofa occupied, doorway). They pair over your existing network and mostly just work. This is the buy-it-and-forget-it option, and for most people it’s the right one.

ESPHome DIY sensors. For a fraction of the price you can pair a bare LD2410 or LD2450 radar module with an ESP32 and flash it with ESPHome. You get a fully local sensor, every parameter exposed to Home Assistant, and the satisfaction of a device you understand completely. Projects like Everything Presence One package this up neatly if you don’t fancy soldering. This is the tinkerer’s option, and it’s genuinely excellent once tuned.

Combined mmWave-plus-PIR units. The best sensors pair a radar module with a PIR in one housing, and this combination is the technically correct answer. The PIR gives you instant, reliable first detection when someone walks in (radar can take a beat), and the mmWave holds presence while they sit still. You use the PIR for the fast on and the mmWave to prevent the premature off. Everything Presence One and several ESPHome designs do exactly this.

Wiring it up in ESPHome

Here’s a trimmed ESPHome configuration for an ESP32 with an LD2410 radar over UART, exposing presence and a tunable distance gate to Home Assistant:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
esphome:
  name: study-presence

esp32:
  board: esp32dev

# Local API to Home Assistant + OTA updates, no cloud anywhere
api:
ota:
  platform: esphome
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

uart:
  id: ld2410_uart
  tx_pin: GPIO17
  rx_pin: GPIO16
  baud_rate: 256000
  parity: NONE
  stop_bits: 1

ld2410:
  id: radar

binary_sensor:
  - platform: ld2410
    has_target:
      name: "Study Presence"      # true while a person is present, moving or still

number:
  - platform: ld2410
    still_threshold:
      name: "Study Still Sensitivity"   # raise to ignore next-room reflections
    timeout:
      name: "Study Absence Timeout"     # seconds of no target before 'clear'

That has_target binary sensor is the one your automations key off, and the exposed number controls let you tune sensitivity and the absence timeout live from Home Assistant without reflashing. Being able to nudge the still-sensitivity while sitting in the room and watching the state flip is what makes tuning bearable.

Placement is half the battle

People treat mmWave tuning as purely a software job — nudge the sensitivity numbers until it behaves — and then wonder why no value seems right. Half the answer is physical, and getting the mounting wrong makes the software fight impossible to win.

Radar sees best across a room, so a sensor high on a wall or in a ceiling corner, angled down across the seating area, gives it a clean view of the space you care about. Mount it low behind furniture and it stares at the back of a sofa, seeing a fraction of the room. Mount it pointing straight at an internal wall and it will happily read the person on the other side, because plasterboard is nearly transparent at these frequencies. The mental model to hold is that a mmWave sensor illuminates a volume, roughly a cone spreading out from its face, and your job is to aim that cone at the room and away from everything you don’t want it to notice.

Two placement mistakes cause most grief. The first is aiming across a doorway or hall, so anyone merely passing the room registers as present and the lights stay on for an empty room. The second is putting the sensor where it can see a repetitive mover — a ceiling fan, a curtain over a radiator, a hanging plant near a draught — because radar reads that steady rhythmic motion as a living target and never clears. Both are solved at the mounting stage far more easily than in software: point the cone away from the door and away from the fan before you touch a single sensitivity slider.

Distance and zone gating then do the fine work. A good sensor lets you set a maximum detection distance, so you can draw the far edge of the volume just inside the real wall and drop everything beyond it. On zone-capable devices you go further and define regions — desk, sofa, doorway — each with its own presence state, which is what lets you light only the corner someone’s actually sitting in. This zoning is the feature that turns a single sensor into something that understands a room rather than merely occupying it.

Building automations that respect a still human

Once you have a reliable presence sensor, the automation becomes simple and, more importantly, correct. The pattern is: turn the light on when presence goes true, turn it off when presence goes false and stays false for a short grace period. No more twenty-minute timeout guesswork, because the sensor genuinely knows the room is empty.

Where this gets powerful is combining presence with other conditions, and that logic is far easier to reason about in a Node-RED flow than in nested YAML: presence true AND after sunset AND the film-night scene isn’t active, then set the lights to a comfortable level; presence false for two minutes, off. Feed the same presence entities into your wider system and they become useful far beyond lighting — heating that only warms occupied rooms, a “nobody’s home” state that arms other automations, and a sanity check on the perimeter that your Frigate cameras are watching.

Troubleshooting the sensitivity dance

The lights turn on when nobody’s in the room. The sensor is seeing through a wall or picking up a draught. Reduce the still-sensitivity, and if your sensor supports distance gates, set the maximum detection distance to just inside the far wall so reflections from the next room fall outside the gate. mmWave passes through plasterboard happily, so a sensor aimed at an internal wall will absolutely detect the person on the other side unless you gate it out.

Presence flickers on and off while someone sits still. Sensitivity is too low for genuine stillness, or the sensor is mounted where it can’t see the sitting area. Raise the still-sensitivity a notch and check placement — ceiling-mounted or high on a wall aimed at the seating tends to work best. If it still flickers, add a short “off delay” so a one-second dropout doesn’t kill the lights.

Detection is slow when someone walks in. Pure mmWave can lag on that first entry. This is exactly the case for a combined PIR-plus-mmWave sensor: let the PIR handle the instant on and the radar handle the hold. If you only have radar, reduce the moving-target threshold so it triggers faster on entry.

A ceiling fan or curtain keeps the room “occupied”. Radar sees repetitive motion as a target. Either physically aim the sensor away from the fan, or use zone/distance gating to exclude that part of the room. This is the mmWave equivalent of PIR false triggers, and it’s solved the same way — narrow what the sensor is allowed to look at.

The verdict

If lights switching off on a still person is the bug that made you distrust home automation, mmWave presence sensing is the fix, and it’s transformative. It’s the single upgrade that most reliably turns “motion-activated lighting that annoys everyone” into automation the rest of the household stops noticing, which is the highest praise a smart home can earn.

Buy an integrated sensor if you want it to just work, or roll an ESPHome radar-plus-PIR sensor if you enjoy the tuning and want it fully local and cheap. Either way, budget an evening for dialling in the sensitivity — that tuning is the entire job, and skipping it is why people occasionally declare mmWave “too sensitive” and give up. Get the gates right and you end up with rooms that simply know whether you’re in them. That’s the thing PIR could never do, and it’s worth the extra outlay every time.

Advertisement
Advertisement
Smarc
Written by Smarc

Founder and editor of vo.rs. A lifelong tinkerer who self-hosts far more than is sensible, hardens Linux boxes for fun, and prods the latest AI tools to see what they can really do. The how-to guides here are the notes Smarc wishes had existed the first time round.