[RELEASE] NEW Xiaomi / Aqara / Opple Drivers

NOTE: Although many users have had great success using them, Xiaomi / Aqara ZigBee devices are NOT officially supported or guaranteed to work on the Hubitat Elevation platform.

Why new drivers?

I wanted to write my own and since @veeceeoh isn't here to support his I thought I'd release mine. I haven't yet published drivers for all types of devices from Xiaomi/Aqara, but will add the rest as I find the time. With this said, a big thank you goes to @veeceeoh for his drivers that were where it all began for me :slight_smile:

What's different?

Many things, these are a COMPLETE rewrite, they don't share any code with the old drivers. They have been tested by a few people and been found to make the devices more stable and responsive. Yes you read that right, if you want to know more about how that is done, look at the code.

Supported Devices

  • Xiaomi/Aqara/Opple Button/Switch/Remote (works with models WXKG01LM, WXKG11LM (2015 & 2018), WXKG12LM, WXKG02LM (2016 & 2018), WXKG03LM (2016 & 2018), WXCJKG11LM, WXCJKG12LM & WXCJKG13LM) - Import URL
  • Xiaomi/Aqara Contact Sensor (works with model MCCGQ01LM & MCCGQ11LM) - Import URL
  • Xiaomi/Aqara Motion Sensor (works with model RTCGQ01LM & RTCGQ11LM) - Import URL
  • Xiaomi/Aqara Temperature & Humidity Sensor (works with model WSDCGQ01LM & WSDCGQ11LM) - Import URL
  • Xiaomi Mijia Smart Light Sensor - Zigbee 3.0 (works with model GZCGQ01LM) - Import URL
  • Aqara Water Leak Sensor (works with model SJCGQ11LM) - Import URL
  • Aqara Smart Curtain Motor (works with models ZNCLDJ11LM & ZNCLDJ12LM) - Import URL

Which driver should I use?

All drivers are as combined as they can be, the list above should make it clear which driver go with which model.


Use the Hubitat Package Manager or install manually using the Import URLs above.


It is perfectly fine to replace the driver of a currently installed device with these drivers, no need to pair them again, in general. There are exceptions, most notably the Opple remotes and most Aqara Button devices. They need to have some settings sent to them which can only be sent when pairing. More details in a future post below.
There may be errors in the logs during the first 3 hours when switching drivers, just ignore those. It will settle and get back to normal.

Your mesh

A good and stable mesh is needed for any Zigbee devices, not just Xiaomi/Aqara devices, but they can be more demanding at times. For more information regarding that:


All drivers have the Presence capability, if the device doesn't report in for over 3 hours it will be set as not present. This makes it easy to see that all devices are online at a glance in a Dashboard, or to monitor any change in Presence using RM or a custom App.

Errors/Bugs/Feature requests

Post about it in this thread and maybe it will make it into a Github Issue and eventually taken care of :wink:
There may still be some excessive logging, that will be removed shortly, this is mostly so that it will be easier to debug any early issues not caught during beta testing.

Mesh problems

Post about it somewhere else which seems appropriate. Not in this thread.


  1. "Your idea is stupid and slow and I don't like it" - Don't use the code
  2. "Your app/driver is crashing my Hub. I submitted a support ticket" - Don't do that, the fine folks at Hubitat Inc. do NOT maintain this code. This software is given free of charge with no support, implied or otherwise. I may still help...
  3. "The latest update broke it, FIX IT" - I do this for fun, please don't make it un-fun.
  4. "I have a great idea for a feature" - Go ahead and post it, I might get around to it...
  5. "You ignored my great idea" - See #2
  6. "I hate you for getting my hopes up, your app/driver is awful/buggy/stupid" - Ok, please write a better one so I can use it
  7. "Please fix your code, it's broken" - I write this because I enjoy coding. I will continue to support and provide updates as long as that remains the case.
  8. "I stole your code and made it soooo much better" - Thanks. Please post it so I can start using it.
  9. "You are awfully sarcastic, I don't like you" - That's ok, I don't need you to
    (thank you @thomas.c.howard for the original FAQ this one was based on)

Opple Remotes

The 2, 4 and 6 button Opple remotes that doesn't work as they should according to many open source projects and others who have tried to write drivers for them, do work REALLY well with these driver. When pairing them, look at the live log and make sure you follow the instructions in the log messages. When all is working the logs will tell you.

During pairing, if you press button 1 or 2 on these devices all your Zigbee lights may turn off, this is normal and will only happen during pairing before the devices have received the new configuration from the driver.

But I heard that...

If you know about these devices you've probably read that you can't get all the button events except on an original gateway, that is not true, these drivers work just as well as on the original gateway, in fact, they even report triple-click if you feel you need that.


For Pairing

For the future

You Sir are a legend.
I can finally put that Opple button to proper use.

1 Like

Let me know how it goes :slight_smile: So far I'm the only one who has tested these drivers with those buttons since none of the beta testers had them. It should be rather easy and straight forward to get them working, but I'd be happy to know if there are problems that needs fixing.

It took a few goes pairing them to actually get them to be responsive.
Now all of the 30 events seem to be working.

1 Like

I can usually pair them in one try, but you usually have to press a button once when the message in the log asks for it. And it needs to be done quickly before the device leaves pairing mode.

It was more it took forever to actually pair and the time it work it was pretty quick.
I just realise my hub is running slow and needs a reboot so I'll blame that.

1 Like

@markus Jsut replaced the driver for my temp sensor and it works good. Thank you!
Is there any way you could make it so that the temp offset shows up under Run Custom Action in RM?

That way I could make a simple, not so accurate, temp calibration rule. :slight_smile:

How do you want that to work? The offset is applied to the next time a temperature is reported. If what you want is to have an offset which is different depending on the current value, you'd need a different filter, like a linear regression filter. In general you don't need anything more complex for simple temperature data than a filter like that. It's easy to implement, in fact I have a version written in Groovy, the issue is that entering the training data is never going to be "user friendly".

EDIT: Here is an example of how the training data could look like for W readings:


I actually just need the offset to be 13 when the temp is above 50C and then back to 0 when below 40 again.

It’s because when the temp gets higher the the sensors spec, which is 60C, it shows a wrong value. It’s not important that it’s 100% accurate since I only use it for a notification when the temp is above 70.
I could leave the offset on 13 all the time but it’s nice to be able to see the normal room temp in the sauna from time to time also.

If that is all you want? May I suggest that you create a virtual temperature sensor and just set up rules to do exactly that.
If you change the offset from outside the driver and then go below 50, then when do you know that it really has gone down below 50 again? It would make for easier logic in RM to just read the value from your actual temperature device, then set the temperature of a virtual device based on the input value from this one and applying your offset.


Very nice job! I especially like the addition of Presence capability - it provides a really simple way to keep track of Mijia/Aqara devices in Node-RED.


@markus, I freaking love these drivers!

Thank you so much for the additional stuff, and helping me keep mine connected :+1:


Yes, that was my thought, there are many easy ways to track Presence. The hope is that these drivers will also make it MUCH less likely you actually encounter issues.

Thank you for testing them :slight_smile:


Brilliant idea! I hope other developers consider your approach. My congratulations and thanks again.

1 Like

I really would like to have a dedicated capability for this, that would be even nicer. Presence will have to do for now :slight_smile:


That is true for me too.
I'm very lazy and I was forced to write groovy xiaomi drivers by the lack of smart light sensor driver. It was my first , and I changed it a lot since the first version. After that I continued to write for my own fun although the available drivers were ok for me. I discovered a lot, and I'm still continuing.
I found the markus drivers excellent, and I can imagine he uses a custom generator/version manager to mantain them. That is also the way I would have done (and I'm doing).
Thanks Markus.

Any news about veeceeoh? Did he leave HE platform?

1 Like

Glad you like them :slight_smile: I hope they will be useful.

I am, I've written one to handle my drivers and manage all parts they share. Without automatic code-reuse these drivers would quickly become hard to maintain. The code for this is on my github, but there is no documentation...

I would also like to know, there was someone who told me there was a Tweet or Instagram picture posted by him in mid April, but in general he seems to not even be online anymore.

1 Like