-
-
Notifications
You must be signed in to change notification settings - Fork 596
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
iBlinds v3: Hide Binary Switch CC #5686
Comments
We can absolutely do that. Our config files allow adding and removing CCs from/to individual endpoints or all of them:
AFAIK, that's caused by Home Assistant, which uses 255 for lights/dimmers, but 99 for covers. I think the latter makes sense because you usually don't want covers to go to the last non-zero position, but rather open them. Although there seems to be some handling for tilt - I'll check with the devs to see if this is something that can be optimized on the HA side. On the other hand, support for the Window Covering CC was just merged recently. When that gets added to HA, it should be able to do the right thing, because it can identify that the device is operating using tilt and not position. |
Actually, I'll take you up on this offer. Please contact me via e-mail (see my Github profile) so we can talk about the details there. |
Awesome!! e-mail sent. |
@habhomegit do you have Home Assistant set up? If you can upgrade to zwave-js 10.16.0 and get a device diagnostics dump from Home Assistant for the iBlinds device, that would be a huge help for us to add support for the Window Covering CC. You may have to reinterview the device so that zwave-js can pick up the Window Covering CC. If you need help doing this, let me know and we can do a walkthrough. |
@habhomegit As an update:
|
this can be closed, we added support in HA and the release with support for the Window Covering CC |
@habhomegit I have 7 of these motors, one is V3 and the others are V2. I see three entities now in HA for the V3 motor: |
@raman325 My cover.kitchen_blind_1_horizontal_slats_angle reports status as unknown: |
That's expected. The state of a cover device only supports position, as in for a shade or gate while tilt is an attribute. I have proposed to make tilt be valid for state here: home-assistant/architecture#908 |
@raman325 and @AlCalzone thanks for the support and updates to support the Z-Wave Window Covering CC. This is great news!!! |
@danielbrunt57 Window Covering CC support rolled out with Z-Wave 700, your V2 motors will still need to utilize MutliLevel Switch CC, as they are based on the 500 Series. The iblinds implementation of Window Covering CC support began with v3 when we transitioned to the 700 Series. |
Just to be clear, the default HA controls now seem to control tilt blinds in the 0-50 range (closed to one side ... fully open): All values above that are available via the slider: ...which is not perfect, but there are architecture discussions going on to improve these things:
As for the original issue, I'll keep this issue open until those things are done. |
It would be extremely nice if I could upgrade my V2 motors to V3 with a board swap, rather than buying all new V3 kits. If there's anything you can do on that front, it would be greatly appreciated, by not only myself but a lot of other early adopters! |
@danielbrunt57 we truly value and appreciate our early adopters. However, in order to switch to the v3 version, you will need to replace all three PCBs (main board, connector board, and charge adapter board) as well as the motor, as the v3 utilizes a different motor model too. To explore potential options for you, please reach out to us via email at support@myiblinds.com. We can discuss the possibility of arranging a discount upgrade program. |
It's nice to finally see horizontal & vertical slats making some headway after all these years. |
Is this something an end user could/would have to do, or will this be done within zwave-js at some point? |
I'll do it in the next major release. |
Thanks for digging into this ....
In my case a Binary Switch does indeed get added on the fly to ZwaveJS-UI and a new "switch" gets added to HA, but they don't work. When changing the state directly in ZWaveJS-UI, it fails and a log message says
That's what I will end up doing if there is no other way of course. One advantage I get with the Illumino Switch is that it supports Beaming and can wake up the iBlinds very quickly and start changing its position. In contrast, using a button (WallMote Quad) to control another set of blinds via HA in my experience can take several seconds before the iBlinds start changing. |
I later tried using the switch in HA and got what you reported |
The multilevel switch @danielbrunt57 shouldn't even appear since the device supports Window Covering CC. This is a bug and Z-Wave JS should not expose it. Don't rely on it, this will stop working at some point. The binary switch shouldn't appear either. I find it a bit weird that the device sends a Binary Switch report to the controller when another device controls it via Binary Switch CC. I would have expected a Window Covering CC report. I don't really have a good solution outside of:
Maybe @habhomegit have some insight on this behavior? |
There is no binary switch report from the blind to the controller, just a multilevel switch report to the controller after the binary switch device controlled it via binary switch CC which causes Z-Wave JS to show it and is reflected back into HA:
|
I see, that means we could map the report to the corresponding Window Covering value. |
That's bizarre! After my Zooz ZEN76 switch sends it's binary switch ON|OFF to blind 1, I see a multilevel switch created for blind 1: |
I'm not sure of the implications of that but based on this new info, you would have to deal with multi-level &/or binary switch reports. Perhaps you should stay your present course and steer clear of trying to deal with binary/multilevel switches which likely are not supported by the window covering CC? While one user likes the near instant on|off provided by a beaming switch (my Zooz is not instant; it takes like 1-2 seconds to trigger the blind), I think this particular use-case is very limited, and I personally do not need it. Just my 2¢. |
On a different but slightly related note, @tommyjlong you might be interested in this item I just stmbled across today. It started with a python script hass_py_set_state to update states/attributes (hass-setter can also do it) to update HA entities. It was referred to by the desire for the HA state of horizontal slat window coverings to show open|closed vs
|
I would be happy with that. Multilevel Report mapping one-to-one with window coverings horizontal slats position, and Binary Switch "ON" to horizontal slats position 50% (or even better, to the iBlinds configuration parameter 4 "112-0-4 Default ON Value") and "OFF" to 0%. |
Since the Illumino switch is a Z-Wave entity in HA, in addition to the group which gives you direct instant ON|OFF, why not simply use the Illumino switch entity's state in HA to trigger your automation to update HA's cover position??? One problem I see with your logic is...what happens if the cover is closed via HA rather than the Illumino switch? Should that occur, the Illumino switch is still
OFF would be either 0% or 99% depending on whether Reverse Direction is FEI, I can only group my Zooz switch with kitchen blind 1 which is a v3 motor. Blinds 2 and 3 are v3.1 and Z-Wave JS can't add a group to them. I can add a group between blinds 2 and 3 (which does not really do anything) but not with the Zooz switch... |
The way the Illumino switch works, the paddle always returns to the middle/neutral position after being pressed ON or OFF. If the switch itself is in the ON state (because the paddle was earlier pressed ON sometime prior), you can still press the paddle again for ON, and when you do it will still send another Binary Switch ON to the iBlinds.
Because of the behavior of the Illumino Switch just described, pressing its paddle ON when the Illumino switch is already ON will not result in an event in HA as HA does not see a state change. To illustrate, my typical use case is to use the Illumino switch to open the blinds in the morning when I get up, and an HA automation to close the blinds when the sun goes down. So in general the Illumino switch is always ON. |
I've confirmed this is the way my Zooz ZEN76 works also. If Z-Wave JS would actually resend that repeated state to HA, I found a way for you to clear the state each time so that a repeated press will re-trigger in HA. It involves using python_script.set_state as follows:
which clears the state of the switch in HA after it was set to
Unfortunately, the switch is re-sending the switch CC to the group but it does not send a report to its Lifeline unless the value changed. And the blind does not send a report to its Lifeline either when it gets the same CC state via the group association so I fail to see how ZWJS can sync anything since it's left clueless. |
I've managed to get my Zooz switch and the blind working in sync at 0% and 50% tilt. I can press the switch on which opens the blind to 50% and the HA cover updates the blind tilt position. I can then execute cover.close_cover_tilt which turns the switch off enabling me to repeat the above sequence. The same works in reverse between 50% and 0%. Other tilt positions may break the automation. You will of course have to have this entity in HA despite not being able to control it:
|
My preference would be (in the following order):
|
Just to clear up some points: Binary Switch CC is hidden because it causes confusion in the applications by showing additional controls that go out of sync with the Window Covering CC if the device only sends one of the reports. Unfortunately, we cannot easily map this, since Z-Wave JS doesn't implement device-specific behavior like SmartThings etc. did.
Can you verify in the Z-Wave JS driver logs? I think the event is still sent to Z-Wave JS, but HA ignores value updates that don't change state. |
My Zooz does NOT send a report if the switch has not changed. I only see a single event when the switch has changed:
|
The blind does NOT send a Window Covering CC when the switch changes, only the Binary Switch CC, |
Here is the log from just a single press of Ilumino switch to ON (Illumino switch state is already ON)
|
Yes this is why I made this my most preferred solution. |
and I think you now have your answer - "not possible"/"not going to do that". If you want HA to stay in sync with the blind position, instruct the user to go to the blind and briefly press the button(s) on the blind(s) header (which still has a delay), or use the Illumino switch and have HA control the blind with the more noticeable delay. iBlinds is better than having to go each blind and pull cords mutiple times a day!! |
I've come up with a solution that works for me (apologies for not coming up with this sooner). After studying the Illumino Switch some more, I found a way to use its Central Scene capability to where a 1-tap of the paddle to ON causes both a BinarySwitch CC ON to be sent to the iBlinds, and an "ON" Scene to be sent to ZWaveJS/HA. Similarly for OFF.
I tested that on my iBlind and see that it causes ZWaveJS to auto-create a Multilevel entity. The Windows Covering Horiz Slats position is not updated, so a fix that uses a 1:1 mapping would help this out. I would just add that I myself don't particularly need the 1:1 mapping fix, but others might.
Congrats! |
Thanks!
|
I really have virtually zero knowledge of ZWave standards but if I am following figure 7.1 correctly, it's only showing an example of the frame flow following a Multicast Basic Set(0xFF) from Node A (multicast meaning all nodes?) and I would surmise that in the case of the controller (call it Node A) issuing a non-multicast Basic Set to the iBlinds Node that this flow logic totally does not apply, or am I just out-to-lunch? |
Multicast is a select list of destinations. Broadcast would be all nodes. I really don't know why they chose multicast for the example. Maybe because that doesn't allow a report back to the controlling node. Anyways I don't understand the specs in a way that forbid sending a multilevel switch or window covering report to the lifeline destination, when a different node used Binary Switch to control. Maybe it's required somewhere else, but AFAIK only the report back to the controlling node must be the same CC as the controlling command. |
It can send unsolicited battery level reports, correct? They why not Basic CC?? What if the device has local dimming and local switch capability?? It has to be able to send them, right? So why should a window covering which may or may not have local control capability be any different? "Hey, you told me to change the tilt to 0% and I confirm I've done it. By the way someone changed the switch postion here. It is now "Anyways I don't understand the specs in a way that forbid sending a multilevel switch or window covering report to the lifeline destination, when a different node used Binary Switch to control" I think the programmers for iBlinds were out to lunch and just plain forgot they they should sync binary switch with multilevel and and are now pointing their finger at the zwave certification specs (which they probably don't fully understand) and are hoping that everyone just believe them. < end of rant > |
I've retired all but the last of my 6 original iBlinds motors (the first was from their Indiegogo kickstarter 5 years ago) and have upgraded to v3 motors. The first v3 was a test over a year ago and can only run FW "3.8" as it is Z-Wave chip hardware version 1. It has never hiccupped like the old ones were constantly doing so I started upgrading the other five about 6 months ago. The new ones are FW "3.12" and Z-Wave chip hardware version 2. |
Feature Request
This feature request is related to a problem our users are having when using Home Assistant. I've searched the JS documentation for the possibility of implementing a solution to no avail. If there is already a solution in place please forgive my lack of knowledge.
I am the CTO at HAB Home Intel the maker of the iblinds product. Our users are having some issues with the driver implementation. Mostly related to the fact that our product works with Horizontal blinds tilt where fully open/ON is 50% not 99% Here are a few issues that it would be nice if we could fix/override by using the device configuration file:
From my little knowledge, it appears that the device driver supported commands are constructed by interrogating the device during the inclusion process for supported Command Classes. In the case of our iblinds v3 device (because all controllers are not created equally) we support the Binary CC, Multilevel Switch CC, and Window Covering CC for controlling the horizontal tilt position. The Binary CC works as expected Close/Off = 0 and On/Open sends a 0xFF (255) and the device opens to 50%. For Multilevel Switch CC sending a level value of 0..99 works well, however, if an ON command is sent using a value of 0x63 (99) that is perfectly acceptable for the majority of multlevel switch devices like lights and even roller shades but in our case the 0x63(99) closes the blinds in the opposite direction. We need the blind slats to tilt to 50% to fully open.
Solution Request
It would be nice if there was support to override certain command class specifics in the device configuration file.
Having the ability to ignore a certain supported command class (in our case ignore binary command class because the multilevel switch CC is preferred when it is also supported by the controller) . Also, In HA the Cover Device gets out of sync because we only send back the REPORT from the requested GET command. For example If the users uses the value slider a multilevel swtich command is sent followed by a multilevel GET, our device only sends the multilevel REPORT. This causes the Binary and Multilevel UIs to become out of sync.
Having the ability to change the ON value for multilevel switch (in our case if the multilevel switch command received is ON / (0xff) 255 then we have our firmware configured to open the blinds to 50%.
Considered Alternatives
Additional context
We would be happy to send you an iblinds motor for testing at your request.
The text was updated successfully, but these errors were encountered: