I’ve released a SmartThings Edge driver for the LinknLink eMotion Air, a compact battery-powered mmWave presence sensor with Zigbee 3.0 and Bluetooth.
The eMotion Air first reached most users through Kickstarter, where the campaign by LinknLink Pty Ltd raised AU$171,938 from 1,496 backers against a AU$55,000 goal.
LinknLink is also more than a one-product Kickstarter name. The company already has several generations of eMotion presence sensors and smart-home gateways; its own legal terms identify Hangzhou LinknLink Technology Co., Ltd. as the company behind the LinknLink service, alongside the Australian LinknLink Pty Ltd operation.
The eMotion Air is particularly interesting because it combines several useful sensors in a very small, completely wireless device:
- 24 GHz mmWave presence detection
- temperature
- humidity
- illuminance
- programmable physical button
- Zigbee 3.0
- Bluetooth configuration
- 3 × AAA batteries
- magnetic, adhesive, screw, corner or tabletop mounting
LinknLink claims up to around 1.5 years of battery life. As always with a battery-powered mmWave sensor, the real-world result will depend heavily on radar, sampling and reporting settings.
SmartThings driver features
The driver has now been tested with real eMotion Air hardware. SmartThings automatically selects it during pairing when it is already installed on the hub.
It exposes:
- Presence sensor as the primary SmartThings capability
- Motion sensor as a secondary compatibility capability
- Temperature
- Relative humidity
- Illuminance
- Battery
- Button
- Refresh
The same Zigbee Occupancy report drives both Presence and Motion:
Occupied
→ Presence: present
→ Motion: active
Unoccupied
→ Presence: not present
→ Motion: inactive
I use Presence as the primary capability because that is what an mmWave sensor actually provides: it can continue detecting a person who is sitting or lying still. Motion remains useful because many integrations (Alexa, …) still expect a conventional motion sensor.
Button support
The button commands observed from the device are mapped as follows:
Single press → pushed
Double press → double
Triple press → pushed_3x
The driver also handles the standard Zigbee Level Control commands used for held/long-press behavior.
Temperature and humidity calibration
The standard SmartThings Temperature offset and Humidity offset settings are included, so a sensor that consistently reads slightly above or below a trusted reference can be corrected without changing anything on the eMotion Air itself.
Configurable reporting
Temperature, humidity and illuminance reporting can be adjusted from the SmartThings device settings.
The defaults are deliberately conservative:
| Measurement | Fastest update | Maximum wait | Change |
|---|---|---|---|
| Temperature | 60 s | 3600 s | 0.5 °C |
| Humidity | 60 s | 3600 s | 1 % |
| Illuminance | 30 s | 3600 s | ~10 % |
In the app these are presented as normal user settings such as Fastest temperature updates, Temperature update timeout and Temperature change rather than raw Zigbee parameters.
Occupancy reporting is intentionally fixed so presence changes are delivered promptly. Battery reporting is also kept conservative and is not exposed as another set of tuning options.
The driver does not continuously poll the device, of course.
Installation
The driver is available through my SmartThings Edge Driver channel:
Join the SmartThings Edge Driver channel
- Open the channel invitation and sign in with your Samsung account.
- Select Enroll.
- Open Available Drivers and install LinknLink eMotion Air.
- Configure the eMotion Air in the LinknLink app first if you want to change its radar or sensor-level settings.
- Put the eMotion Air into Zigbee pairing mode by holding the button for about 15 seconds.
- In SmartThings, select Add device and start a scan.
With the driver installed beforehand, SmartThings should identify the device and select the driver automatically.
If the eMotion Air is already paired with another Edge driver, open the device in SmartThings and use Driver → Select different driver.
Recommended initial setup
This part is worth doing in the correct order because the eMotion Air uses Bluetooth and Zigbee as separate operating modes.
The LinknLink app provides device-level settings including radar sensitivity, no-motion/vacancy duration, environmental collection intervals, light thresholds, presence monitoring and Environment Learning.
I therefore recommend:
- Put the eMotion Air into Bluetooth mode.
- Add it to the LinknLink app.
- Configure radar sensitivity, vacancy timing and environmental sampling as desired.
- Finish the Bluetooth configuration.
- Switch the device into Zigbee pairing mode with the approximately 15-second button hold.
- Add it to SmartThings.
A useful finding from testing is that switching the device back to Bluetooth later can interrupt its Zigbee operation. After changing settings in the LinknLink app, put it back into Zigbee pairing mode and reconnect it with SmartThings before expecting new Zigbee data.
For that reason, I would set the radar-related options once during initial installation and use the SmartThings settings for normal reporting adjustments afterward.
LinknLink has since published a useful eMotion Air setup and troubleshooting guide covering Bluetooth/Zigbee operation, vacancy timing, Environment Learning and battery considerations.
Sensor sampling vs. Zigbee reporting
There are two different sets of timing controls, and they should not be confused.
The LinknLink app controls how often the eMotion Air itself collects environmental measurements. For example, a tested configuration used:
Light collection: 30 seconds
Temperature/humidity: 1 minute
The SmartThings driver controls when an available measurement is reported over Zigbee.
So, for example:
eMotion Air:
measure temperature every 60 seconds
SmartThings/Zigbee:
report when it changes enough
or when the maximum reporting interval expires
Setting a 10-second Zigbee reporting interval cannot make a sensor that measures temperature once per minute suddenly measure every 10 seconds.
This separation is also useful for battery life: the device-side settings control the actual sensing workload, while the driver lets the user decide how much Zigbee traffic is appropriate.
The same principle applies to presence. The vacancy/no-motion delay belongs to the eMotion Air itself. The driver does not add a second software timer on top of it.
If the LinknLink app is configured for a three-minute no-motion duration, the sensor waits before reporting the Zigbee Occupancy attribute as unoccupied. SmartThings then immediately changes Presence to Not present and Motion to No motion.
Technical details
The eMotion Air is pleasantly conventional from a Zigbee perspective.
Both the public Zigbee2MQTT device interview and an independent SmartThings Zigbee Thing interview showed the same endpoint:
Manufacturer: LinknLink
Model: eMotion Air
Endpoint 0x01
Server clusters:
0000 Basic
0001 Power Configuration
0020 Poll Control
0400 Illuminance Measurement
0402 Temperature Measurement
0405 Relative Humidity Measurement
0406 Occupancy Sensing
Client clusters:
0006 On/Off
0008 Level Control
0019 OTA Upgrade
The upstream zigbee-herdsman-converters definition is correspondingly small: temperature, humidity, illuminance, occupancy, battery and the standard On/Off and Level Control commands.
There is no Tuya 0xEF00, no Aqara-style manufacturer cluster and no proprietary Zigbee datapoint protocol involved.
That allows the SmartThings driver to use the standard Edge Zigbee libraries for most of the device. The device-specific code mainly deals with:
- mapping Occupancy to both SmartThings Presence and Motion
- interpreting the button commands
- configuring conservative environmental reporting
- applying per-device reporting preferences
- keeping the sleepy battery device free of unnecessary polling
The radar configuration itself is not exposed through Zigbee. Sensitivity, vacancy timing and environmental collection settings are handled through Bluetooth in the LinknLink app and stored on the device.
Thanks
A big thank-you to @Andrew_Palmer, who tested two actual eMotion Air units, confirmed automatic driver selection, documented the Bluetooth configuration options and uncovered the important Bluetooth-to-Zigbee reconnection behavior.
Thanks also to the other Kickstarter backers and SmartThings Community members who installed the driver, tested it on newly delivered hardware and reported their results. The early feedback has been very positive, and it turned what started as a device-integration exercise into a properly hardware-validated release.
The public Zigbee2MQTT work was also extremely helpful. Having an independent device interview and an upstream converter to compare against made it possible to verify the Zigbee side rather than reverse-engineer it from scratch.
Final thoughts
The eMotion Air fills an interesting gap: a small, inexpensive, battery-powered mmWave presence sensor that can be placed almost anywhere without running power, while also providing temperature, humidity, light and a physical button.
More importantly for SmartThings, its normal operating interface is standard Zigbee.
Bluetooth is used for the settings that belong to the sensor itself; Zigbee handles presence, measurements and button events; SmartThings adds local automation, calibration and configurable reporting on top.
That separation makes the integration relatively clean and should also make it maintainable.
The longer-term question is now the interesting one for any battery-powered mmWave product: how well the claimed battery life holds up in real homes with different radar, sampling and Zigbee reporting configurations.
But as far as SmartThings integration is concerned, the eMotion Air is no longer an experiment. The driver is working on real hardware and is ready to use.







