private@homelab: ~/latest
local-first guides · privacy-aware · no noisy tracking
private@homelab:~$ cat guides/article.md
· ·
7–11 minutes
read

Aqara Motion Sensor E1 (RTCGQ15LM): Local Setup in Home Assistant

Set up the Aqara Motion Sensor E1 (RTCGQ15LM) in Home Assistant via Zigbee2MQTT — no Aqara hub, no cloud. Configure detection interval and illuminance.

Aqara Motion Sensor E1 (RTCGQ15LM): Local Setup in Home Assistant

The Aqara Motion Sensor E1 is probably the most affordable way to get both PIR motion detection and an ambient light reading onto your Zigbee mesh. At the time I set one up in my own lab, I found the Zigbee2MQTT reference page useful but thin — it tells you what entities exist without explaining the gotchas that will actually cost you an hour of debugging. This guide covers the full setup path: pairing, entity overview, the detection interval quirk that trips up most people, and how to put the illuminance reading to practical use.

No Aqara hub required. No Mi Home account. Just a Zigbee coordinator and a working Zigbee2MQTT or ZHA instance.


What is the Aqara Motion Sensor E1 (RTCGQ15LM)?

The RTCGQ15LM (Zigbee model ID: lumi.motion.acn001) is Aqara’s current entry-level PIR sensor. It combines a passive infrared motion detector with an ambient light sensor and reports both over Zigbee 3.0. Power comes from a single CR2450 coin cell.

Compared to the rest of the Aqara motion sensor line, it occupies the budget slot. The P1 (RTCGQ14LM) sits one step up and adds a motion sensitivity adjustment (low/medium/high) that the E1 doesn’t expose. The FP2 and FP1E move to millimeter-wave radar for presence detection — no blind spots, larger coverage area, but a significant price jump. We cover the next step up in detail in our Aqara P1 motion sensor local setup guide.

If you want configurable sensitivity or radar presence, the E1 isn’t your sensor. If you want a compact, inexpensive PIR that also tells you whether the room is dark, the E1 is a reasonable choice and pairs cleanly over Zigbee without any Aqara infrastructure.


What you need before pairing

  • A Zigbee coordinator connected to your Home Assistant host. Common options: SONOFF Zigbee Dongle Plus, Home Assistant SkyConnect, ConBee II. Any coordinator supported by Zigbee2MQTT will work.
  • Zigbee2MQTT running and connected to Home Assistant (MQTT integration), OR ZHA if you prefer that path. This guide focuses on Zigbee2MQTT; the device works under ZHA as well, where the pairing process is identical — the entity names differ slightly.
  • The E1 sensor itself with its battery installed.

You do not need an Aqara hub (M1S, M2, M3, or E1 hub). You do not need the Aqara Home app or a Mi Home account at any point in this process. For the broader picture, see our guide on running Aqara Zigbee devices in Home Assistant without a hub.


Pairing the E1 to Zigbee2MQTT

  1. In the Zigbee2MQTT frontend, go to Settings > Permit join and toggle join on. If you’re using Z2M’s Home Assistant add-on, the toggle is on the main dashboard.
  2. On the sensor, hold the small button on the side until the LED blinks blue three times. The sensor is now broadcasting a join request.
  3. Watch the Z2M frontend — the device should appear within about 30 seconds as lumi.motion.acn001. If you’ve set a friendly name convention, rename it now (e.g., motion_hallway_e1).
  4. Turn permit join off again.

If the device doesn’t appear after a minute, the most common cause is Zigbee mesh coverage. The E1 is an end device (not a router), so it depends on a coordinator or router node being within range. Move the coordinator closer for initial pairing, then relocate the sensor after it joins.


What Home Assistant sees

Once paired, Zigbee2MQTT exposes the following entities to Home Assistant:

  • Occupancy — binary sensor, on when motion detected, off when the cooldown period expires
  • Illuminance — numeric sensor in lux, read-only, updated whenever the sensor reports
  • Detection interval — number entity, range 2–65535 seconds, read/write (the write timing matters — covered below)
  • Device temperature — numeric sensor in °C, internal chip temperature, read-only
  • Battery — percentage and voltage (mV), both read-only
  • Power outage count — integer, read-only, increments each time the battery is removed or dies

The occupancy and illuminance entities are the ones you’ll actually use in automations. The detection interval entity is the one most people misconfigure. Battery is useful for maintenance alerting.


Configuring the detection interval

The detection interval controls how long the sensor waits after detecting motion before it’s willing to report motion again. It’s effectively a cooldown. Set it to 30 seconds and the occupancy entity will return to off 30 seconds after the last motion event, and the sensor won’t report a new motion trigger during that window.

The default out of the box is 60 seconds. For most room-presence automations that’s too long — you end up with lights going off while someone is still in the room because the occupancy entity cleared before the next movement triggered a new detection.

How to write the value:

This is where most people run into trouble. The E1 only accepts writes to detection_interval in the window immediately after you press the pairing button. The sequence is:

  1. In Z2M frontend, navigate to the device and find the detection_interval field.
  2. Enter your desired value (I use 30 seconds for most rooms; 60 seconds is the default; 2 seconds is the minimum but drains the battery faster).
  3. Press the button on the sensor once to wake it.
  4. Within a few seconds, click Update in the Z2M UI.

If you try to write the value without pressing the button first, the write will appear to succeed in the UI but the sensor won’t apply it — the device is sleeping and not listening. This behavior is shared with the P1 (RTCGQ14LM) and is consistent across the Aqara PIR sensor line.

Occupancy timeout must match or exceed detection interval.

If you set detection_interval to 30 seconds but your Home Assistant occupancy timeout helper (or the Z2M occupancy_timeout setting) is lower — say 15 seconds — you’ll get motion events that go undetected. The occupancy entity clears at 15 seconds, the sensor is still in its 30-second cooldown, and any movement in that gap won’t be reported. The entity will appear to “miss” motion.

Set occupancy_timeout equal to or greater than your detection_interval. For 30-second detection interval, set the timeout to 30 seconds minimum, or slightly above (35–40 seconds) to give a small buffer.


Using illuminance in automations

The E1 reports ambient light in lux. This is genuinely useful for light-level-aware automations — the classic example is only turning lights on when motion is detected AND the room is already dark.

A basic Home Assistant automation condition for this:

yaml
condition:
  - condition: numeric_state
    entity_id: sensor.motion_hallway_e1_illuminance
    below: 50

Pair that with an occupancy trigger and you have a motion-activated light that won’t fire at midday when the sun is already handling illumination.

Calibration offset. The Z2M device page exposes an illuminance calibration percentage. If your sensor sits near a window and reads consistently higher than the room actually is, or if it’s in a corner where the reading is consistently low, you can apply a percentage offset to correct for placement. I’d suggest leaving this at zero until you have a week of readings to compare against a reference — adjusting it blind can make the automation less accurate than the raw reading.


E1 vs P1 — which should you buy?

If you’re weighing models, we have dedicated local-setup guides for the P1 (RTCGQ14LM) and the older T1 (RTCGQ12LM) as well.

The short answer: buy the E1 if you want cheap and small and don’t need to tune motion sensitivity. Buy the P1 if you want to tune sensitivity — for example, in a room with a pet where you need to reduce false triggers, or in a high-traffic hallway where you want maximum sensitivity.

Both expose occupancy, illuminance, and a configurable detection interval. The P1 adds a motion_sensitivity setting (low/medium/high) that the E1 doesn’t have. The P1 is slightly larger physically. Price difference is typically a few dollars depending on where you buy.

If you’re considering the FP1E or FP2 instead, those are a different product category — radar-based presence sensors rather than PIR motion sensors. Radar doesn’t have a blind spot, covers a larger area, and can detect stationary presence (someone sitting still at a desk). The trade-off is cost and, in some setups, occasional false readings near HVAC vents. See our setup guides for the FP1E (RTCZCGQ13LM) and the FP1 (RTCZCGQ11LM) if radar presence is what you’re after.

For a basic room: E1 does the job. For a room where nuance matters (pet households, high-sensitivity needs, always-on presence detection): look at the P1 or the FP series.


Troubleshooting

Device doesn’t appear after pairing attempt.
The E1 is an end device — it doesn’t repeat Zigbee signals. If the coordinator is too far away or behind too many walls, the join won’t complete. Bring the coordinator and sensor into the same room for pairing, confirm the join, then move the sensor to its final location. Once joined, it’ll maintain the mesh via any nearby Zigbee routers.

Occupancy entity stays “on” longer than expected.
Check two things: the detection_interval on the sensor, and the occupancy_timeout in your HA configuration. If occupancy_timeout is higher than detection_interval, the entity stays on for the full timeout period after the last detection. Reduce the timeout to match the interval if you need faster clearing.

Occupancy entity misses motion.
Almost always the inverse problem: occupancy_timeout is set lower than detection_interval. See the section above — they need to be aligned.

Illuminance always reads 0.
At night in a dark room, 0 lux is accurate. Check during the day with a light source. If it reads 0 with lights on, try removing and reinserting the battery to force a rejoin.

OTA firmware update available in Z2M.
The RTCGQ15LM supports OTA updates via Zigbee2MQTT without an Aqara hub. When Z2M flags an available update, navigate to the device in the Z2M frontend and click Update. The update takes a few minutes and the device rejoins automatically. I’d recommend running OTA updates when they’re available — Aqara occasionally fixes reporting bugs in firmware.


The E1 is one of those devices that takes ten minutes to set up and then just works. The detection interval timing quirk is the one thing that catches people out; once you know about it, it’s a two-second fix. With a 30-second detection interval, a matched occupancy timeout, and an illuminance condition in your automations, you have a capable and genuinely local sensor with no cloud dependency at all.




local-firstHome Assistantno-cloud