What kind of dimmers are you using? I am using Hue lights for the most part.
I have some Hue bulbs as well, but the bulk of my lighting is on Evolve LRM-AS dimmers (aka Linear), and a couple of GE/Jasco 12724 ones. I hate the GE/Jasco ones as they have proven unreliable and peculiar, and I hope to replace them ASAP.
Anyway – the basic problem with dimmers like both of these, when coupled with the approach you’ve described here, is that at a hardware level the dimmers can’t set a level without actually switching to that dimmer level (and turning on in the process). A few threads about this limitation are here and here.
I’ve been mulling it over and I really do like the methodology you’ve proposed here. And so does my wife. So, I’m working on some modifications to your Scene Creation app that make use of the approach (and optionally the custom device type) @bravenel describes in the second link above. The idea leverages your pollMonitored() → resetLevel() approach… but I’m going to adapt that to also allow changing these annoying dimmers “gently” vs “immediately” for each device, as follows:
-
Immediate devices: Upon mode change, go directly to the level in question. As in, just call setLevel() and be done with it. (I’ll use this for stuff like “just go ahead and shut off the downstairs lights when Sleepytime mode becomes active”.)
-
Gentle devices: Upon mode change, if device is off, use the “setLevel() then immediately turn off” approach to simulate a “silent” level change as best we can. If device is not off, wait for a switch-off event then immediately apply the “setLevel() then immediately turn off” trick.
It’s similar to what you are doing for physical switch-on events for Hue bulbs… but in this case I’m watching for the non-presettable dimmers to enter a state where they can be “poked” as unobtrusively as possible (i.e. I’m waiting for them to switch off, when necessary.)
If you’re interested, I can post the diffs or put them up on github…