Presence sensing automation without cameras works best when you stop asking one device to know everything. A camera can see a room, but most lighting, HVAC, and media automations only need four smaller answers: is someone still here, who is probably here, did someone just enter or leave, and is an appliance giving useful context?

That distinction matters because indoor cameras carry social overhead before the first automation even fires. In the 2026 Forbes/Copeland Smart Home Data Privacy Report, 70% of respondents said they would switch brands for better privacy, and 55% said they do not understand how their devices collect data.[1] You do not need to turn that into a manifesto to see the practical problem: a motion sensor mounted above a doorway is a setup detail; a camera in a living room is a household negotiation.

Four camera-free sensor layers feeding a home automation hub: mmWave, Bluetooth, PIR or door signals, and smart plug energy cues

The camera-free sensor map

Use mmWave radar as the room-presence anchor, Bluetooth Low Energy as the identity hint, PIR or door contacts as transition signals, and smart plugs or router presence as supporting context. That mix sounds more complicated than a camera until the first time someone reads motionless on a sofa and the lights stay on without recording video.

LayerBest atWeak atTypical automation job
mmWave radarHolding presence for still occupantsKnowing who the person is; avoiding false zones without tuningKeep lights, HVAC, or media modes active while someone remains in a room
Bluetooth room presenceEstimating which person, phone, or watch is nearbyDetecting still bodies without a beacon; clean room boundaries in dense layoutsPersonalize scenes, desk setups, comfort modes, or notifications
PIR or door sensorsFast entry, exit, and short hallway transitionsStill occupantsStart timers, wake lights quickly, confirm bathroom or closet use
Smart plugs and router presenceAppliance or home/away contextPrimary room occupancyAdd confidence when a TV, kettle, heater, or computer is actually being used

The wired mmWave anchors worth knowing are the Aqara FP2 and Everything Presence Lite. The Aqara FP2 uses 60–64 GHz radar, supports up to 40 m² and 30 zones, and is described as offline-capable after firmware 1.1.6; its early-2026 street price was around $83.[2][3] Everything Presence Lite uses a 24 GHz LD2450 radar module, has a reported 5–6 m range, can track three people, is fully local through ESPHome, and was around $45 in the same early-2026 pricing window.[3]

Those numbers are useful for planning, not for pretending a spec sheet can see through furniture. mmWave placement changes the result. A sensor staring across a room may see sofa breathing and ceiling-fan noise differently from one mounted near a doorway. A zone that looks perfect in an empty calibration pass can become messy when a partner adds a floor lamp or a dog bed.

For identity, ESPresence and Bermuda use ESP32 listeners to estimate room-level location from BLE signal strength emitted by devices such as phones or watches. They stay camera-free and cloud-free in typical Home Assistant deployments, and they can drive per-person automations, but BLE does not solve the seated-person problem by itself because it is not sensing micro-movement from a body.[4][5]

A base Home Assistant pattern before room tuning

Most rooms become easier to reason about if you split detection into three helpers: occupied, recently active, and known person nearby. The first should come from mmWave when possible. The second can come from PIR, a door contact, or a short timer. The third can come from BLE. Then automations subscribe to the helper instead of every raw sensor.

template:
  - binary_sensor:
      - name: "Living Room Occupied Layered"
        unique_id: living_room_occupied_layered
        state: >
          {{ is_state('binary_sensor.living_room_mmwave_presence', 'on')
             or is_state('binary_sensor.living_room_recent_motion', 'on')
             or is_state('binary_sensor.tv_energy_active', 'on') }}
        delay_off:
          minutes: 5

That is deliberately boring YAML. It gives you one stable entity to test, graph, and override. If the room misbehaves, you can look at the raw mmWave, PIR, and smart plug entities separately instead of rewriting the lighting automation every evening.

Living room: wired mmWave earns its outlet

Living room cross-section with mmWave radar rings detecting a seated person, Bluetooth pulses from a phone, smart plug energy glow, and a crossed-out camera icon

The living room is where PIR-only automations usually embarrass themselves. Someone watches a film, stops moving, and the lights decide the room is empty. This is the room where a wired mmWave sensor is least optional if you want camera-free presence to feel finished.

Start with a wired mmWave sensor facing the seating area rather than the whole room. If you use an Aqara FP2, its zone support lets you separate sofa, media console, doorway, and maybe a reading chair; the FP2’s published capabilities include up to 30 zones across up to 40 m².[2] If you prefer a local ESPHome path, Everything Presence Lite is attractive because it exposes radar data locally and avoids a cloud dependency, but it expects more tinkering comfort than a retail puck.[3]

Living-room choiceUse it whenWatch for
Aqara FP2You want zones for sofa, TV area, or doorway logicZone calibration, placement drift, firmware behavior
Everything Presence LiteYou want ESPHome and local radar entitiesDIY expectations, enclosure and mounting decisions
BLE listenerYou want person-specific scenes or media preferencesPhone/watch signal overlap with adjacent rooms
TV smart plugYou want media context without integrating the TV directlyStandby power thresholds that change by model

A good living-room recipe does not turn lights on simply because the TV is drawing power. It uses TV power as a modifier. If mmWave says someone is on the sofa and the TV plug crosses your tested active threshold, shift to a media scene. If mmWave says the room is empty, the TV plug should not keep the whole space alive forever; it might only delay shutoff or send a notification that something was left on.

alias: Living room - media presence scene
mode: restart
trigger:
  - platform: state
    entity_id: binary_sensor.living_room_occupied_layered
    to: "on"
  - platform: state
    entity_id: binary_sensor.tv_energy_active
    to: "on"
condition:
  - condition: state
    entity_id: binary_sensor.living_room_mmwave_presence
    state: "on"
action:
  - choose:
      - conditions:
          - condition: state
            entity_id: binary_sensor.tv_energy_active
            state: "on"
        sequence:
          - service: scene.turn_on
            target:
              entity_id: scene.living_room_movie
    default:
      - service: light.turn_on
        target:
          entity_id: light.living_room_lamps
        data:
          brightness_pct: 55

For multi-occupant homes, resist the temptation to make BLE the only decider. BLE can help choose whose lamp scene or thermostat preference wins, but mmWave should keep the room occupied when everyone’s phone is charging elsewhere. ESPresence and Bermuda are better treated as identity layers than body sensors.[4][5]

Bedroom: presence has to respect sleep

Bedrooms punish aggressive automations. A sensor that is wonderful in a living room can become annoying beside a bed if it sees through the wrong doorway, wakes lights during sleep, or needs a USB cable in the one place nobody wants another visible cable.

If an outlet and clean mounting angle exist, wired mmWave still gives the best stationary hold. If not, battery mmWave or PIR/mmWave hybrids become more reasonable. The Aqara FP300 combines 60 GHz mmWave with PIR, uses Zigbee and Thread, and has a manufacturer battery-life claim of three years on CR2450 cells; early-2026 pricing was around $40.[3][6] The SwitchBot Presence Sensor also combines 60 GHz mmWave and PIR, has a manufacturer battery-life claim of two years on AAA batteries, and was around $25 in the cited comparison period.[3][6]

Battery-life claims should be treated as planning hints, not promises. Update frequency, signal conditions, and network routing can change the experience. In a bedroom, the more important question is whether the device can reliably hold occupied while someone is asleep without making every blanket adjustment look like a reason to blast ceiling lights.

  • Use bed-zone mmWave for sleep-aware climate or fan logic, not for bright wake lighting.
  • Use BLE only for personalization, such as deciding which bedside lamp or comfort profile applies.
  • Use a door contact or PIR to detect entry quickly, then let mmWave decide whether the room remains occupied.
  • Keep a manual override near the bed. Presence automation feels clever until someone is sick, reading late, or trying not to wake another person.
alias: Bedroom - gentle occupied lighting
mode: restart
trigger:
  - platform: state
    entity_id: binary_sensor.bedroom_door_motion_recent
    to: "on"
condition:
  - condition: state
    entity_id: input_boolean.sleep_mode
    state: "off"
action:
  - wait_template: "{{ is_state('binary_sensor.bedroom_mmwave_presence', 'on') }}"
    timeout: "00:00:10"
    continue_on_timeout: false
  - service: light.turn_on
    target:
      entity_id: light.bedside_lamps
    data:
      brightness_pct: 25

The wait is doing useful work here. The door or PIR signal wakes the automation quickly, but the room does not fully commit until mmWave confirms someone stayed. That avoids a hallway pass-by turning the bedroom into a stage.

Bathroom: humidity, privacy, and short occupancy windows

Bathrooms are the easiest rooms to justify camera-free design and the hardest rooms to wire neatly. People sit still. Steam happens. Doors close. Outlets may be badly placed or unavailable. A ceiling PIR alone will eventually fail someone in the shower or on the toilet.

A practical bathroom setup starts with a door contact and either a humidity-tolerant presence sensor or a conservative PIR/mmWave hybrid. The Meross MS605 is described as IP67-rated, around $50, and carrying a three-year battery-life claim in the cited material, making it relevant where moisture and wiring are the constraints.[7] Low-cost PIR plus mmWave combinations can also work, but the placement matters more than the shopping list.

  • Place the sensor so it sees the occupied zones, not the hallway through a cracked door.
  • Use the door closing as a confidence boost, not as permanent proof that someone is inside.
  • Use humidity rise for fan logic, not as a substitute for presence.
  • Give lights a longer off-delay than a hallway, because bathroom stillness is normal.
alias: Bathroom - presence and fan logic
mode: restart
trigger:
  - platform: state
    entity_id: binary_sensor.bathroom_presence
    to: "on"
  - platform: numeric_state
    entity_id: sensor.bathroom_humidity
    above: 65
action:
  - choose:
      - conditions:
          - condition: state
            entity_id: binary_sensor.bathroom_presence
            state: "on"
        sequence:
          - service: light.turn_on
            target:
              entity_id: light.bathroom
      - conditions:
          - condition: numeric_state
            entity_id: sensor.bathroom_humidity
            above: 65
        sequence:
          - service: fan.turn_on
            target:
              entity_id: fan.bathroom_exhaust

Treat the humidity threshold in that example as a placeholder. Your baseline humidity, fan strength, and sensor placement decide the real value. The important separation is that the fan can react to moisture while the lights react to presence.

Kitchen: appliance clues help, but they do not prove presence

Kitchens tempt people into overfitting. A coffee machine turns on, so someone must be present. The dishwasher runs, so the kitchen is occupied. A kettle spikes, so start the morning scene. Sometimes that is correct. Often it is just an appliance doing appliance things.

Smart plug energy monitoring from devices such as TP-Link Kasa or Shelly PM can add appliance-level clues, and router presence can help with broader home/away state, but both are adjunct cues rather than primary room sensors.[4][5] In a kitchen, that distinction keeps automations from turning into folklore.

Use mmWave or PIR/mmWave to decide whether someone is in the kitchen. Use energy monitoring to decide what kind of kitchen activity is happening. A coffee-machine draw might trigger under-cabinet lights in the morning if presence is already true. A stove-adjacent smart plug might extend the occupied timeout while cooking, assuming the appliance is safe and appropriate to monitor. A dishwasher cycle should usually inform notifications or energy dashboards, not human presence.

alias: Kitchen - appliance-assisted lighting
mode: restart
trigger:
  - platform: state
    entity_id: binary_sensor.kitchen_presence
    to: "on"
  - platform: state
    entity_id: binary_sensor.coffee_machine_active
    to: "on"
condition:
  - condition: state
    entity_id: binary_sensor.kitchen_presence
    state: "on"
action:
  - choose:
      - conditions:
          - condition: state
            entity_id: binary_sensor.coffee_machine_active
            state: "on"
          - condition: time
            after: "05:30:00"
            before: "10:30:00"
        sequence:
          - service: light.turn_on
            target:
              entity_id: light.kitchen_counter
            data:
              brightness_pct: 45
    default:
      - service: light.turn_on
        target:
          entity_id: light.kitchen_ceiling
        data:
          brightness_pct: 70

The kitchen also benefits from shorter off-delays than a living room and longer ones than a hallway. People step away while cooking. They also pass through with groceries. The sensor mix should make that ambiguity visible rather than hiding it inside a single motion entity.

Hallways, closets, and transition spaces

Hallways do not need identity, zones, or philosophical purity. They need speed. A PIR sensor is often fine because the automation goal is brief: turn on a path light, then turn it off. If you want a cheap powered mmWave option, the Sonoff SNZB-06P was cited around $15 in the 2026 room-recipe material, but this is exactly the kind of price to check at purchase time.[3]

Closets are similar unless someone regularly stands still inside one. A door contact can be better than a presence sensor: door opens, light turns on; door closes, light turns off after a short grace period. Battery mmWave only becomes worth it when the closet behaves more like a small room.

alias: Hallway - fast path light
mode: restart
trigger:
  - platform: state
    entity_id: binary_sensor.hallway_motion
    to: "on"
action:
  - service: light.turn_on
    target:
      entity_id: light.hallway
    data:
      brightness_pct: 35
  - wait_for_trigger:
      - platform: state
        entity_id: binary_sensor.hallway_motion
        to: "off"
        for: "00:01:00"
  - service: light.turn_off
    target:
      entity_id: light.hallway

Where zero-hardware presence fits

Wi-Fi router presence through Home Assistant device trackers is useful for home and away state. It is not room presence. It can help prevent the whole house from going into away mode while a phone remains connected, but it cannot tell whether someone is reading in the living room or napping in the bedroom.[4][5]

The same is true for smart plug energy monitoring. It is excellent as a clue: the TV is active, the desk monitor is drawing power, the kettle just boiled. It is weak as a claim about bodies. A room can be occupied with every appliance off, and an appliance can run after the person leaves.

Tuning layered presence without making it endless

Calibration feels less annoying when each room has one pass/fail test. Do not tune a sensor until it is vaguely perfect. Tune it until the room’s actual automation stops failing in the way that matters.

RoomTest that mattersIf it fails
Living roomSit still through a show or reading session; lights stay correctNarrow the mmWave zone, reduce doorway spill, add TV energy as context
BedroomEnter briefly versus stay in bed; automation reacts differentlySeparate entry trigger from sleep or bed-zone presence
BathroomDoor closed and person still; lights do not time outIncrease off-delay, adjust sensor angle, add door state as confidence
KitchenAppliance runs with and without a person presentMake energy a modifier, not the occupied source
HallwayWalk-through lights feel immediate and shut off soonUse PIR or shorter timers; avoid overbuilding

A good layered setup should also expose uncertainty. If BLE says a phone is in the living room but mmWave says empty, the system should not confidently run a personal scene. It might wait, check recent motion, or fall back to a neutral lighting state. The goal is not to make every sensor agree; it is to make disagreement harmless.

Camera-free presence automation becomes reliable when every sensor has a limited job. mmWave holds the room for still people. BLE adds identity when a phone or watch is available. PIR and door contacts catch transitions. Smart plugs and router presence add context. Designed that way, cameras can be left out of room automation entirely without pretending that any one puck can understand a home by itself.

References

  1. Forbes/Copeland 2026 Smart Home Data Privacy Report, Forbes, May 2026
  2. LinknLink guide, LinknLink
  3. SmartHomeScene 2026 roundup, SmartHomeScene, 2026
  4. XDA Developers' 5-ways article, XDA Developers
  5. How-To Geek's Home Assistant guide, How-To Geek
  6. SmartHomeCompared comparison, SmartHomeCompared
  7. Sensy-One room-by-room sensor data, Sensy-One