I recently migrated from ST to HE and so far haven't looked back.
In working through the differences between the platforms I found the stock Generic Z-Wave Shade
driver wasn't working for my needs, particularly the battery level reports. I also miss the Preset
button.
I decided to address these and tackle one of my pet peeves with every shade driver I've come across on both platforms, namely, how they handle Bali Sheer Shades.
These are manufactured by Springs Windows Fashions under the Graber and Bali brand names. They are not like regular roller or double-roller shades in that when fully extended, they appear sheer (aka partially open) and are opaque (aka closed) when the motors are between 3 and 6 (depending on the length of the window). Trust me, if you have these, you know what I'm talking about.
It always bothered me that the platforms reported my shades ( windowShade
attribute) as being partially opened when they were closed (opaque) and closed when they were in the sheer position, which is where we keep them during the day. Also, we had to press the closed button to make them sheer and remember which level set them to closed since they are different lengths. This wasn't an issue for my webCoRE pistons, but even they looked strange too with a lot of comments that "position 4 is really closed."
This device handler addresses all of those shortcomings and adds a preset
button and position in webCoRE. AAMOF, with this driver, I was able to tell She-Who-Shall-Not-Be-Named to close the kitchen shade, and it actually closed instead of opening to sheer!
There are three additional settings for this driver that aren't in the generic driver (or others for that matter):
The Closed Position
needs to be set to the specific level/position that make the shades fully opaque. That number will be different for each shade, based on length. For example, here is what I have for my windows:
Shade | Type | Sheer | Closed | Open |
---|---|---|---|---|
Office | Double Roller | |||
Office | Double Roller | |||
Kitchen | Sheer | <4 | 4-6 | >6 |
Dining Room 1 | Sheer | <3 | 3-4 | >4 |
Dining Room 2 | Sheer | <3 | 3-4 | >4 |
Living Room 1 | Sheer | <3 | 3-4 | >4 |
Living Room 2 | Sheer | <3 | 3-4 | >4 |
Bedroom 1 | Sheer | <5 | 5 | >5 |
Bedroom 2 | Sheer | <5 | 5 | >5 |
Bedroom 3 | Sheer | <5 | 5 | >5 |
Bedroom 4 | Sheer | <5 | 5 | >5 |
Based on this, I set the Closed Position
for my kitchen shade to 5. YYMV, be sure to set it to whatever works best for each window covering. The Preset Level
can be set to whatever you'd like. It just makes it easier to go to a specific position.
The Relative Level
setting is where this either gets confusing or really fun (depending on your view).
When set FALSE
there is no difference between the Position
and Level
settings/reporting. If you set it to TRUE
the position will still be the absolute motor position (0 to 99) but the level
is calculated relative to the amount the shade can actually be open or raised (i.e, substract the motor positions that are part of the sheer positions). IMHO, this give you the best of both worlds, you can set an absolute position and still tell She-Who-Shall-Not-Be-Named to set the shade to 50% and it will go half-way up.
For example, if 5 represents closed, and you want the shade rolled up to 10%, it actually moves the motor to 14. A level of 50% will open the shade halfway up the wall allowing for the positions that are closed/sheer. When sheer, it reports how sheer the shade is.
I also created a version for standard roller and double-roller shades that uses the same base code (minus the sheer settings that has the battery reporting and preset option.
Now, this single webCoRE command works no matter the shade type or length of each.
As Springs uses the exact same Somfy motors in all their roller shades, there's no way to pull an electronic signature to know if the shade is a roller, double-roller, or sheer shade. You have to chose which driver to use yourself.
Both are available in GitHub and can be installed via the Hubitat Package Manager
.
P.S. Thank to DevTodd for having a clean base for me to start with.