Aqara Curtain Driver E1 Edge Driver for SmartThings
SmartThings Edge driver for the Aqara Curtain Driver E1 with Zigbee fingerprint LUMI / lumi.curtain.agl001.
This project is not a copy of the stock zigbee-window-treatment package. It is a new, stripped-down driver that only keeps the concepts and device-specific behavior needed for the Aqara Curtain Driver E1. The goal is simple: support this one device cleanly, reliably, and with a UI that exposes the features users actually care about — including illuminance, which was missing from the stock implementation.
Why this driver exists
The official SmartThings stock driver for Zigbee window treatments is a broad multi-device driver. It supports many products, uses multiple profiles and subdrivers, and includes a stock presentation binding (vid) for the Aqara Curtain Driver E1 profile.
That broad approach is fine for a general-purpose stock package, but it is not ideal when you want to:
- focus on one device only,
- keep the code easy to audit and maintain,
- expose Aqara-specific features more clearly, and
- surface the device’s built-in light sensor in the SmartThings app.
This driver does exactly that.
Supported device
Confirmed target
- Manufacturer:
LUMI - Model:
lumi.curtain.agl001 - Device label: Aqara Curtain Driver E1
This driver is intentionally single-device and single-fingerprint.
If your device does not identify itself as LUMI / lumi.curtain.agl001, this driver is not meant for it.
What this driver supports
Core curtain control
- Open
- Close
- Pause / Stop
- Set position (shade level 0–100%)
- Position reporting
- Opening / closing / partially open state updates
Device-specific Aqara features
- Initialization state (
stse.initializedStateWithGuide) - Hook lock state (
stse.hookLockState) - Charging state (
stse.chargingState) - Reverse curtain direction preference
- Soft touch preference
Power and maintenance
- Battery reporting
- Refresh command
- Group cleanup during configuration
Added feature: illuminance
- Illuminance is exposed in SmartThings via
illuminanceMeasurement - The implementation reads Aqara’s manufacturer-specific light-level attribute:
- Cluster:
0xFCC0 - Attribute:
0x0429 - Manufacturer code:
0x115F
- Cluster:
This is the key feature that motivated the custom work on top of the original concept.
What makes this driver special
1. It is intentionally minimal
The stock SmartThings driver is designed to support many Zigbee window-treatment devices. This driver is not.
This repository keeps only what is needed for Aqara Curtain Driver E1 (lumi.curtain.agl001):
- one fingerprint
- one profile
- one
init.lua - no generic Aqara subdriver layer
- no unrelated fingerprints
- no extra window-treatment abstractions that are not needed for this device
That makes the code easier to read, test, and modify.
2. It exposes illuminance in the SmartThings app
Aqara advertises the Curtain Driver E1 with a built-in light sensor. However, on this model the sensor data is not exposed in the most convenient way for SmartThings: the important light value is commonly seen through Aqara’s private manufacturer-specific cluster rather than a plain standard Zigbee illuminance path. Aqara’s own product materials mention the built-in light sensor, Zigbee2MQTT exposes illuminance for ZNCLBL01LM, and ZHA-related work for lumi.curtain.agl001 points to private light-level handling around attribute 0x0429 on Aqara’s private cluster. See the sources section below for background.
In practice, this driver reads that manufacturer-specific value and publishes it through SmartThings as illuminanceMeasurement.
3. It avoids the stock presentation trap
A major practical issue with the stock-profile-based approach was the explicit stock vid in the original profile. In SmartThings, a vid determines which Device Presentation is used in the mobile app. For Edge drivers, SmartThings can auto-generate presentations from the Device Profile, and embedded configurations can also generate fresh presentations automatically when packaging.
If a profile keeps pointing to an older stock presentation, a newly added capability can work internally but still remain invisible in the app.
This minimal driver avoids that problem by using a cleaned-up profile instead of reusing the old stock presentation binding.
Important note about illuminance
The illuminance support works, but the device itself appears to be very coarse.
What is going on?
Reports from the wider Zigbee ecosystem indicate that the Aqara Curtain Driver E1 light sensor may not behave like a precision lux meter. In Zigbee2MQTT, users have reported the relevant Aqara-specific light value arriving as only a very small raw range — in one example, 0 and 2, which were interpreted as 0 lx and 100 lx. That strongly suggests that, at least on some firmware versions and setups, the built-in sensor behaves more like a brightness bucket than a high-resolution ambient-light sensor.
What this means in practice
Treat illuminance on this device as:
- useful for simple automations,
- good for rough bright / dark decisions,
- not suitable as a precision room lux meter.
Mapping used by this driver
For lumi.curtain.agl001, this driver uses a simple coarse mapping based on observed ecosystem behavior:
- raw
0→0 lx - raw
1→50 lx - raw
2→100 lx
This keeps the result readable in SmartThings and aligns well with the limited values reported publicly for this model.
Differences from the stock SmartThings driver
This project is based on the idea of the stock SmartThings Zigbee window-treatment driver, but it is intentionally a different driver.
Stock driver approach
- one broad package for many devices
- multiple profiles and fingerprints
- Aqara-specific code split into subdrivers and helpers
- stock SmartThings presentation behavior
This driver’s approach
- one device only:
LUMI / lumi.curtain.agl001 - no unused fingerprints
- no subdrivers
- Aqara helper logic inlined into a single driver file
- illuminance support included
- profile cleaned up so the SmartThings UI can expose the added capability properly
Bottom line
If you want a general-purpose driver for many curtain or blind devices, use the stock package.
If you want a focused, readable, Aqara Curtain Driver E1-specific driver with visible illuminance support, use this one.
Installation
- Open the driver channel invitation link.
- Sign in with your Samsung account.
- Accept the invitation.
- Enroll the SmartThings Hub that should receive the driver.
- Under Available Drivers, install the Aqara Curtain Driver E1 driver onto the enrolled hub.
- Pair the Aqara Curtain E1, or reassign / re-pair it if it is already paired with another driver.
Pairing notes
For ZNCLBL01LM, Zigbee2MQTT documents the usual pairing method as:
- hold the reset button for about 5 seconds until the blue LED starts blinking,
- if needed, try a short button press afterwards.
In SmartThings, put the hub in discovery mode and then join the device.
If the device was previously paired elsewhere, factory reset it first.
SmartThings UI behavior
This driver exposes the following user-visible capabilities in the profile:
windowShadewindowShadeLevelstse.initializedStateWithGuidestse.hookLockStatebatterystse.chargingStateilluminanceMeasurementfirmwareUpdaterefresh
Why the UI matters
A SmartThings capability existing in the code is not enough by itself. The app also needs a Device Presentation that actually shows it.
That was the main reason illuminance could be “working but invisible” when reusing the stock Aqara Curtain Driver E1 profile. This driver is designed so that the illuminance capability is not only handled, but also has a path to appear in the app.
If you still do not see the brightness sensor after installation:
- make sure the device is actually using this driver,
- try a manual Refresh,
- re-open the SmartThings app,
- if necessary, clear the app cache or re-add the device.
Device behavior and quirks
Initialization matters
The driver checks whether the device is initialized before allowing normal open / close / pause control paths. This mirrors the E1-specific behavior expected by the original Aqara implementation.
Battery reporting
Battery is reported using Zigbee’s BatteryPercentageRemaining and converted to a normal 0–100% value for SmartThings.
Charging state
The driver also exposes a charging state, using Aqara-specific interpretation of the underlying reported values.
Hook lock state
The Curtain Driver E1 has lock-related attributes that are exposed here through stse.hookLockState.
Illuminance is approximate
Again, the most important quirk of this device is the light sensor. It is useful, but do not expect high-resolution lux reporting.
Driver structure
Minimalistic compared to the stock driver.
.
├── config.yml
├── fingerprints.yml
├── profiles/
│ └── window-treatment-aqara-curtain-driver-e1.yml
└── src/
└── init.lua
File overview
config.yml
Defines the package metadata:
- name:
Aqara Curtain Driver E1 - package key:
aqara-curtain-driver-e1 - Zigbee permission
fingerprints.yml
Contains exactly one fingerprint:
LUMI / lumi.curtain.agl001
profiles/window-treatment-aqara-curtain-driver-e1.yml
Defines the SmartThings capabilities, preferences, and category.
src/init.lua
Contains the complete device logic, including:
- curtain control
- state handling
- battery handling
- charging state handling
- lock handling
- refresh logic
- Aqara private attribute reads and writes
- illuminance support
Who should use this driver?
Use this driver if:
- you have Aqara Curtain Driver E1 with fingerprint
LUMI / lumi.curtain.agl001, - you want a dedicated SmartThings Edge driver for this one model,
- you want illuminance visible in SmartThings,
- you prefer a small and maintainable codebase over a broad multi-device package.
Do not use this driver if:
- you want one driver for many different curtain or blind devices,
- your hardware identifies as a different fingerprint,
- you specifically want to stay on the stock SmartThings driver path.
Known limitations
- This driver is intentionally limited to one Zigbee fingerprint.
- Illuminance is coarse and should not be treated as laboratory-grade lux data.
- This project does not automatically inherit future fixes from the stock SmartThings driver.
Credits
- SmartThings, for the original stock Zigbee window-treatment driver concept and Aqara E1-specific implementation path
- An anonymous tester who actually owns the device and wanted the illuminance sensor exposed in SmartThings
- Zigbee2MQTT and ZHA community contributors, whose public device work helped clarify how this model exposes illuminance
Sources
SmartThings
Aqara
- Curtain Driver E1 product page
- Curtain Driver E1 user manual (rod version)
- Curtain Driver E1 user manual (track version)
Zigbee ecosystem references
- Zigbee2MQTT: ZNCLBL01LM
- Zigbee2MQTT issue: illuminance only 0 lx / 100 lx
- Zigbee2MQTT issue: initial support discussion for ZNCLBL01LM
- ZHA-related discussion for
lumi.curtain.agl001
Disclaimer
This is a community / custom SmartThings Edge driver. It is not an official SmartThings release and is not maintained or reviewed by SmartThings. Use it at your own risk and test automations carefully, especially if they affect safety, access, or unattended operation.

