The Aqara Roller Shade Driver E1 is one of the cheapest smart blind motors that works 100% locally with Home Assistant — no hub, no Aqara account, no cloud. But the calibration process is counterintuitive if you’ve never done it before. This is the complete guide: physical setup, Zigbee pairing via ZHA or Zigbee2MQTT, calibration without the Aqara app, cover entity configuration, and cloud blocking.


What Is the Aqara Roller Shade Driver E1?

The Aqara Roller Shade Driver E1 (model number ZNJLBL01LM) is a rechargeable Zigbee motor that clips onto existing roller shade or roller blind tubes. You don’t replace your blinds — you retrofit them. It pairs over standard Zigbee, reports position (0–100%), has physical buttons on the unit, and runs entirely without the Aqara hub or the Aqara app once you’ve paired it directly to a Zigbee coordinator.

That last point is the whole reason to care about it: most smart blind motors in this price bracket either lock you into a proprietary RF protocol, require a Wi-Fi bridge to some vendor cloud, or impose mandatory app onboarding. The E1 does none of these things after initial Zigbee join. Once it’s in Home Assistant, the vendor’s infrastructure is irrelevant.

There is a newer variant, the ZNJLBL02LM (sometimes labeled E1 Rev B or E1 v2). The pairing and calibration process covered here is the same for both.

What it supports:

  • Zigbee 3.0 (pairs directly to any Zigbee coordinator: SkyConnect, Sonoff Zigbee 3.0 USB Dongle Plus, ConBee II, etc.)
  • Position control (0% = fully closed, 100% = fully open)
  • Battery level reporting
  • Rechargeable internal battery via USB-C
  • Motor direction reversal via RESET button

What it doesn’t support:

  • Tilt (it’s a roller — there are no slats)
  • Mains power (battery only; charge frequency depends on usage)

What You Need Before You Start

Before touching pairing, verify you have everything ready:

  1. Home Assistant — any recent version (2024.1+ recommended for cover entity improvements)
  2. A Zigbee coordinator connected and working — SkyConnect, Sonoff Zigbee 3.0 USB Dongle Plus, ConBee II, or any other coordinator running ZHA or Zigbee2MQTT
  3. ZHA or Zigbee2MQTT — one of these integrations must already be running and showing existing devices if you have them
  4. A charged E1 unit — this is the most commonly missed step. A discharged unit will appear to pair, then drop off the network within seconds. Charge via USB-C until the LED indicator turns off (LED glows red while charging; turns off when full). Charge time from empty is approximately 2–3 hours.
  5. The E1 physically installed on your blind tube — follow Aqara’s physical installation guide for your tube size. Pairing is easier once it’s installed because you can test movement immediately.

You do not need:

  • An Aqara hub (E1 Hub, M2, M3, or otherwise)
  • The Aqara Home app
  • An Aqara account
  • Any cloud connectivity

Physical Layout

Before pairing or calibrating, understand the button layout:

  • Up button — front of unit, upper position; moves shade up / toward open
  • Down button — front of unit, lower position; moves shade down / toward closed
  • Indicator light — between the Up and Down buttons on the front face; blue = active/pairing, red = charging
  • RESET button — on the bottom of the unit; used for pairing, factory reset, and direction reversal

This matters because the pairing and calibration steps use different buttons for different functions. Most community guides conflate them.


Pairing the E1 to Home Assistant

Pairing via ZHA

  1. In Home Assistant, go to Settings → Devices & Services → ZHA → Add Device.
  2. ZHA will enter pairing mode and display a “Waiting for new device” screen.
  3. On the E1, hold the RESET button (bottom of unit) for 5 seconds until the indicator light blinks blue rapidly. Release. The device enters pairing mode.
  4. Within a few seconds, ZHA should discover the device as “Aqara Roller Shade Driver E1” or by its model number ZNJLBL01LM.
  5. Assign it a name and area, then click Finish.

If discovery fails after 30 seconds, the unit may not be close enough to your coordinator or a Zigbee repeater. Try moving the E1 within 2 meters of the coordinator for initial pairing, then relocate.

Pairing via Zigbee2MQTT

  1. In the Zigbee2MQTT web UI (or via the Home Assistant add-on), click Permit join (All) or permit join on a specific device if you want to limit range.
  2. On the E1, hold the RESET button (bottom of unit) for 5 seconds until the indicator light blinks blue rapidly.
  3. In the Z2M log or the Devices list, watch for a new device with IEEE address appearing. It should be identified as ZNJLBL01LM.
  4. Rename the device in Z2M’s Devices tab. The corresponding HA entity is created automatically via MQTT discovery.

Tip: If you’re using Z2M, check the Devices tab — not just the HA integrations list. Z2M device state lives in Z2M first; HA entities follow. If you don’t see the HA entity, confirm MQTT discovery is enabled in Z2M’s configuration.yaml (homeassistant: true).


Calibrating Open and Closed Limits Without the Aqara App

This is the step most guides skip or handle poorly. The Aqara app UI makes calibration easy visually, but it’s not required. The E1 supports full limit calibration via the physical buttons alone.

The motor needs to know two positions: fully open and fully closed. Until calibrated, it will move but not report accurate position percentages — you’ll see the cover entity in HA but the position slider won’t behave predictably.

Calibration sequence (button method):

  1. Enter calibration mode: Close the shade completely. Hold the Up and Down buttons simultaneously for 3 seconds until the indicator light blinks blue. Release both buttons. You’re now in calibration mode.
  1. Set the open limit: Press the Up button to move the shade to your desired fully open position. Once there, press the Up button 5 times quickly. The indicator light blinks blue 3 times to confirm the open limit is saved.
  1. Set the closed limit: Press the Down button to move the shade to your desired fully closed position. Once there, press the Down button 5 times quickly. The indicator light blinks blue 3 times to confirm the closed limit is saved.
  1. Calibration is now complete. The device exits calibration mode automatically after both limits are saved.

After calibration, use the HA cover entity to command the shade to 50% — it should stop at mid-travel. If it overshoots significantly, redo calibration from step 1.

Why you don’t need the Aqara app: The app simply sends Zigbee commands that trigger the same sequences. The physical buttons expose the same state machine. Once you know the sequence, the app adds no value — and creates a dependency on Aqara’s servers for onboarding.


ZHA vs Zigbee2MQTT: Which Should You Use?

Both work. The choice depends on your existing setup and whether you need advanced features. For the E1 specifically:

Feature ZHA Zigbee2MQTT
Cover entity (open/close/position)
Position reporting (0–100%)
Battery level sensor
Motor running state Limited
Manual calibration commands via UI ✅ (exposes calibration as service)
Device firmware OTA updates ✅ (if Aqara releases OTA)
Zigbee group membership Limited
Setup complexity Lower Higher

Recommendation: If you already have ZHA running and don’t need OTA updates or calibration via UI commands, ZHA is fine. If you’re setting up a new Zigbee stack or already use Zigbee2MQTT for other Aqara or Xiaomi devices, Z2M is the better long-term choice — it exposes more device features and has a dedicated ZNJLBL01LM device page with known-working configuration.

For a broader look at why Zigbee2MQTT tends to outperform ZHA for Aqara and Xiaomi devices specifically, see our guide on Zigbee2MQTT for Xiaomi and Aqara devices.


Setting Up the Cover Entity in Home Assistant

Once paired, HA automatically creates a cover.* entity for the E1. No YAML configuration is required in modern HA versions.

Dashboard card:

The simplest useful card is the built-in Cover card:

type: tile
entity: cover.roller_shade_living_room
features:
  - type: cover-open-close
  - type: cover-position

This gives you open, close, stop buttons and a position slider.

Lovelace UI alternative: The standard Entities card also works — the cover entity renders with open/close controls inline. The Tile card is cleaner on mobile.

Automation examples:

Time-based: close blinds at sunset + 30 minutes

alias: "Blinds - Close at sunset"
trigger:
  - platform: sun
    event: sunset
    offset: "+00:30:00"
action:
  - service: cover.close_cover
    target:
      entity_id: cover.roller_shade_living_room
mode: single

Position-based: open to 70% at 07:00 on weekdays

alias: "Blinds - Morning open weekdays"
trigger:
  - platform: time
    at: "07:00:00"
condition:
  - condition: time
    weekday:
      - mon
      - tue
      - wed
      - thu
      - fri
action:
  - service: cover.set_cover_position
    target:
      entity_id: cover.roller_shade_living_room
    data:
      position: 70
mode: single

These are starter templates. The cover entity integrates with any HA automation tool — Node-RED, scripts, scenes, or the automation editor.

For another locally-controlled device you can pull into the same automations, the Aqara SP-EUC01 Zigbee plug pairs identically and works well in presence-based scenes alongside your blinds.


Blocking Cloud Access (Optional but Recommended)

The E1 functions entirely without cloud access once paired to a local Zigbee coordinator. But the unit’s firmware may still attempt outbound connections to Aqara’s servers — for telemetry, OTA check-ins, or both.

If your router supports firewall rules per device (pfSense, OPNsense, Firewalla, some Ubiquiti setups), you can block the E1’s outbound traffic at the network level:

pfSense / OPNsense approach:

  1. Assign the E1 a static DHCP lease based on its MAC address.
  2. Create a firewall alias aqara_cloud containing: .aqara.com, .aqara.cn, *.lumismart.com
  3. Create a LAN outbound block rule: source = E1’s IP, destination = aqara_cloud alias, action = Block.

Firewalla approach: Create a block rule for the E1’s device profile targeting the same domains.

Trade-offs:

  • Blocking cloud has no functional impact on local Zigbee operation — the E1 communicates to HA via your Zigbee coordinator, not over IP.
  • You lose OTA firmware updates if Aqara delivers them via cloud (Z2M OTA is a separate path and unaffected).
  • If you later want to use the Aqara app alongside HA (some users do for the Aqara scene logic), cloud blocking will break that.

If you’re using an Aqara M3 hub as a Matter bridge for other devices, note that the cloud block approach interacts differently with hub-based devices. See our M3 Matter bridge guide for that scenario.


Common Issues and Fixes

Motor runs in the wrong direction (opens when you command close)

The motor direction is reversed. Fix: press the RESET button (bottom of unit) 3 times quickly while the motor is stopped. The indicator light turns solid blue for 1 second to confirm. Test with an open/close command from HA.

In Zigbee2MQTT, you can also toggle direction via the reverse_direction property without touching the device: set reverse_direction to true in Z2M’s device settings.

Device drops off the network after pairing

Almost always a charge issue or range issue.

  • Charge the unit fully before repairing. A unit at 10–20% battery often pairs but drops within minutes.
  • Check Zigbee mesh coverage. If the E1 is mounted near a window far from your coordinator, add a mains-powered Zigbee repeater (any mains-powered Zigbee device acts as a router — a smart plug in the same room is sufficient).
  • Zigbee 2.4 GHz competes with Wi-Fi channels 1, 6, and 11. If your coordinator is on Zigbee channel 11 and your Wi-Fi is on channel 6, there’s minimal overlap. Use Z2M or ZHA’s network settings to check and adjust the Zigbee channel if needed.

Cover entity shows “unavailable”

Check Z2M or ZHA device list first — if the device shows as offline there, the issue is the Zigbee link, not HA. If Z2M shows it online but HA shows unavailable, restart the Z2M add-on and reload the MQTT integration.

Position slider jumps erratically

Calibration is incomplete or was saved incorrectly. Redo the calibration sequence. Make sure you’re saving limits at the actual physical end stops — don’t save the closed limit with the blind half-open.

Pairing fails repeatedly

Confirm the unit is charged. Confirm you’re holding the RESET button for a full 5 seconds — releasing at 3 seconds will not trigger pairing mode. If using Z2M, confirm permit-join is active and check the Z2M log for any join attempt entries.


Automations: Time-Based and Sun-Based Blind Control

The cover entity works well in day-to-day automations. Here are patterns worth implementing:

Sunrise offset open:

alias: "Blinds - Open at sunrise + 15min"
trigger:
  - platform: sun
    event: sunrise
    offset: "+00:15:00"
condition:
  - condition: state
    entity_id: binary_sensor.someone_home
    state: "on"
action:
  - service: cover.set_cover_position
    target:
      entity_id: cover.roller_shade_bedroom
    data:
      position: 80
mode: single

Presence-based: close when nobody home

alias: "Blinds - Close when home empty"
trigger:
  - platform: state
    entity_id: group.household_members
    to: "not_home"
condition:
  - condition: sun
    after: sunrise
    before: sunset
action:
  - service: cover.close_cover
    target:
      entity_id: cover.roller_shade_living_room
mode: single

Scene-based: movie mode

Pair the blind with a light scene for a single button press:

alias: "Scene - Movie mode"
sequence:
  - service: cover.set_cover_position
    target:
      entity_id: cover.roller_shade_living_room
    data:
      position: 10
  - service: light.turn_on
    target:
      entity_id: light.living_room_overhead
    data:
      brightness_pct: 20
      color_temp: 400
mode: single

These work identically regardless of whether you’re using ZHA or Z2M — the cover.* entity interface in HA is the same either way. The E1 becomes just another cover in your home, controllable from dashboards, automations, Siri (via HomeKit bridge), Google Assistant (via Nabu Casa), or any other HA-connected voice/app interface — all locally processed, no Aqara infrastructure involved.


Final Notes

The E1 is straightforward once you understand the calibration sequence and have a charged unit. The main failure modes — dead battery, range issues, skipped calibration — are all avoidable with the prep steps above.

If you’re building out the rest of your Zigbee network, the Aqara E1 Hub is worth knowing about as an alternative pairing path if you ever want the Aqara app ecosystem alongside HA. And if you’re adding more locally-controlled devices to the same automations, the SP-EUC01 Zigbee plug is a solid companion — cheap, reliable, and zero cloud dependency by default.


Model covered: ZNJLBL01LM (Aqara Roller Shade Driver E1). Tested with Home Assistant 2024.x, ZHA and Zigbee2MQTT 1.36+. The newer ZNJLBL02LM uses the same pairing and calibration procedure.