I've bought some Lutron Aurora Dimmers with the intention of using them directly in Hubitat Elevation. I don't intend to have a Hue Bridge or smart bulbs.
There is an official driver for these devices, but the problem is that setting the level using anything else other than physical button, will cause issues.
With that in mind, the main difference from the official driver is the ability to set the level, so when you turn the knob, no matter which device or automation changed the level before it will continue from there.
I'm no HE/Driver/Zigbee expert, so if you see something that could be improved (and I'm sure there is), I'm all ears.
Due to my lack of knowledge you may need to click the "Refresh" button after changing the device to this driver.
You can also choose the behavior of the button, which can be set as a switch (turn the bulb on/off) or a push button, where you are free to use the click events to trigger any action you want.
The driver is here
For basic use you can stop reading here, but if you like details or want to tune it, here we go...
The main problem with this device is that it has an internal level, which AFAIK cannot be set sending a Zigbee command to it, so when you turn the knob it will report (simplifying) a level from 0 to 100, so let's say you've left it at 70%, then you used an automation to set the bulb to 20%, if you then turn the knob to the left, it will first report something close to 70%, let's say 65% instead of 15%. If you use external automations your bulb will be aways having these undesired level jumps when you use the knob again. For me and probably 99% of the people that would be a no go.
What I did was to ignore the device level and store a level inside the driver instance.
Then I simulate the level increase/decrease using the the rotation information and the interval between the events received. If you keep turning left after it reached 0%, it will keep sending events with the level 0%, the same on the other end, at 100%, so it is always possible to know the direction of the rotation and use this information instead of the level itself.
The interval between the events is used to simulate a rotation speed, this is a central concept of this driver.
If you are rotating fast it will change 12% for each event received, if you are rotating really slow it will change 1%, with 3 more settings in between.
Using the level information as the official driver does also makes it impossible to have 1% changes, since the device always reports more than that, 5 - 7% at least!
These settings are configurable so you can tune it to your liking, you can make the biggest change 5% and the smallest 2% for example, and also configure how the intervals influence the speed.
Have a look at the calculateSpeed method in the driver, in the first part I've left an option to use the device speed when available, so you can compare both (use the debug logs).
The important part is the second one, after the return statement.
If you have any improvement idea or problem with the driver, or just like it, please let me know! I intend make improvements and keep this driver always up to date.