Unable to rotate venetian blinds via rules (Z-wave Qubino flush shutter)

Here is my XML:

<node>
  <deviceClass>
    <basicDeviceClass>ROUTING_SLAVE</basicDeviceClass>
    <genericDeviceClass>MULTILEVEL_SWITCH</genericDeviceClass>
    <specificDeviceClass>MOTOR_CONTROL_CLASS_C</specificDeviceClass>
  </deviceClass>
  <homeId>0xca714784</homeId>
  <nodeId>27</nodeId>
  <version>4</version>
  <manufacturer>0x159</manufacturer>
  <deviceId>0x52</deviceId>
  <deviceType>0x3</deviceType>
  <listening>true</listening>
  <frequentlyListening>false</frequentlyListening>
  <routing>true</routing>
  <healState>DONE @ 2016-10-07T12:21:24+0000</healState>
  <security>false</security>
  <beaming>true</beaming>
  <maxBaudRate>40000</maxBaudRate>
  <nodeInformationFrame/>
  <supportedCommandClasses>
    <entry>
      <commandClass>BASIC</commandClass>
      <basicCommandClass>
        <version>1</version>
        <instances>1</instances>
        <isGetSupported>true</isGetSupported>
      </basicCommandClass>
    </entry>
    <entry>
      <commandClass>METER</commandClass>
      <meterCommandClass>
        <version>3</version>
        <instances>1</instances>
        <meterType>ELECTRIC</meterType>
        <meterScales>
          <meterScale>E_KWh</meterScale>
          <meterScale>E_W</meterScale>
        </meterScales>
        <canReset>true</canReset>
        <isGetSupported>true</isGetSupported>
        <isSupportRequestSupported>true</isSupportRequestSupported>
      </meterCommandClass>
    </entry>
    <entry>
      <commandClass>MANUFACTURER_SPECIFIC</commandClass>
      <manufacturerSpecificCommandClass>
        <version>1</version>
        <instances>1</instances>
      </manufacturerSpecificCommandClass>
    </entry>
    <entry>
      <commandClass>SWITCH_ALL</commandClass>
      <switchAllCommandClass>
        <version>1</version>
        <instances>1</instances>
        <isGetSupported>true</isGetSupported>
        <mode>SWITCH_ALL_INCLUDE_ON_OFF</mode>
      </switchAllCommandClass>
    </entry>
    <entry>
      <commandClass>NO_OPERATION</commandClass>
      <noOperationCommandClass>
        <version>1</version>
        <instances>1</instances>
      </noOperationCommandClass>
    </entry>
    <entry>
      <commandClass>CONFIGURATION</commandClass>
      <configurationCommandClass>
        <version>1</version>
        <instances>1</instances>
        <configParameters>
          <entry>
            <int>71</int>
            <configurationParameter>
              <index>71</index>
              <size>1</size>
              <value>1</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
          <entry>
            <int>40</int>
            <configurationParameter>
              <index>40</index>
              <size>1</size>
              <value>1</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
          <entry>
            <int>72</int>
            <configurationParameter>
              <index>72</index>
              <size>2</size>
              <value>150</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
          <entry>
            <int>73</int>
            <configurationParameter>
              <index>73</index>
              <size>1</size>
              <value>0</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
          <entry>
            <int>10</int>
            <configurationParameter>
              <index>10</index>
              <size>2</size>
              <value>255</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
          <entry>
            <int>42</int>
            <configurationParameter>
              <index>42</index>
              <size>2</size>
              <value>300</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
          <entry>
            <int>74</int>
            <configurationParameter>
              <index>74</index>
              <size>2</size>
              <value>0</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
          <entry>
            <int>76</int>
            <configurationParameter>
              <index>76</index>
              <size>1</size>
              <value>10</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
          <entry>
            <int>78</int>
            <configurationParameter>
              <index>78</index>
              <size>1</size>
              <value>0</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
          <entry>
            <int>110</int>
            <configurationParameter>
              <index>110</index>
              <size>2</size>
              <value>32536</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
          <entry>
            <int>80</int>
            <configurationParameter>
              <index>80</index>
              <size>1</size>
              <value>1</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
          <entry>
            <int>85</int>
            <configurationParameter>
              <index>85</index>
              <size>1</size>
              <value>0</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
          <entry>
            <int>120</int>
            <configurationParameter>
              <index>120</index>
              <size>1</size>
              <value>5</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
          <entry>
            <int>90</int>
            <configurationParameter>
              <index>90</index>
              <size>1</size>
              <value>3</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
        </configParameters>
      </configurationCommandClass>
    </entry>
    <entry>
      <commandClass>SWITCH_BINARY</commandClass>
      <binarySwitchCommandClass>
        <version>1</version>
        <instances>1</instances>
        <isGetSupported>true</isGetSupported>
      </binarySwitchCommandClass>
    </entry>
    <entry>
      <commandClass>ASSOCIATION</commandClass>
      <associationCommandClass>
        <version>1</version>
        <instances>1</instances>
        <configAssociations>
          <entry>
            <int>1</int>
            <associationGroup>
              <Index>1</Index>
              <Nodes>
                <int>1</int>
              </Nodes>
            </associationGroup>
          </entry>
          <entry>
            <int>2</int>
            <associationGroup>
              <Index>2</Index>
              <Nodes/>
            </associationGroup>
          </entry>
          <entry>
            <int>3</int>
            <associationGroup>
              <Index>3</Index>
              <Nodes/>
            </associationGroup>
          </entry>
          <entry>
            <int>4</int>
            <associationGroup>
              <Index>4</Index>
              <Nodes/>
            </associationGroup>
          </entry>
          <entry>
            <int>5</int>
            <associationGroup>
              <Index>5</Index>
              <Nodes/>
            </associationGroup>
          </entry>
          <entry>
            <int>6</int>
            <associationGroup>
              <Index>6</Index>
              <Nodes/>
            </associationGroup>
          </entry>
          <entry>
            <int>7</int>
            <associationGroup>
              <Index>7</Index>
              <Nodes/>
            </associationGroup>
          </entry>
          <entry>
            <int>8</int>
            <associationGroup>
              <Index>8</Index>
              <Nodes/>
            </associationGroup>
          </entry>
          <entry>
            <int>9</int>
            <associationGroup>
              <Index>9</Index>
              <Nodes/>
            </associationGroup>
          </entry>
        </configAssociations>
        <maxGroups>9</maxGroups>
      </associationCommandClass>
    </entry>
    <entry>
      <commandClass>VERSION</commandClass>
      <versionCommandClass>
        <version>1</version>
        <instances>1</instances>
        <libraryType>LIB_SLAVE_ENHANCED</libraryType>
        <protocolVersion>4.5</protocolVersion>
        <applicationVersion>1.1</applicationVersion>
      </versionCommandClass>
    </entry>
    <entry>
      <commandClass>MULTI_INSTANCE</commandClass>
      <multiInstanceCommandClass>
        <version>2</version>
        <instances>1</instances>
        <endpoints>
          <entry>
            <int>1</int>
            <endPoint>
              <deviceClass>
                <basicDeviceClass>ROUTING_SLAVE</basicDeviceClass>
                <genericDeviceClass>MULTILEVEL_SWITCH</genericDeviceClass>
                <specificDeviceClass>MOTOR_CONTROL_CLASS_C</specificDeviceClass>
              </deviceClass>
              <endpointId>1</endpointId>
              <supportedCommandClasses>
                <entry>
                  <commandClass>BASIC</commandClass>
                  <basicCommandClass>
                    <version>0</version>
                    <instances>0</instances>
                    <isGetSupported>true</isGetSupported>
                  </basicCommandClass>
                </entry>
                <entry>
                  <commandClass>METER</commandClass>
                  <meterCommandClass>
                    <version>3</version>
                    <instances>1</instances>
                    <meterType>ELECTRIC</meterType>
                    <meterScales>
                      <meterScale>E_KWh</meterScale>
                      <meterScale>E_W</meterScale>
                    </meterScales>
                    <canReset>true</canReset>
                    <isGetSupported>true</isGetSupported>
                    <isSupportRequestSupported>true</isSupportRequestSupported>
                  </meterCommandClass>
                </entry>
                <entry>
                  <commandClass>SWITCH_ALL</commandClass>
                  <switchAllCommandClass>
                    <version>1</version>
                    <instances>1</instances>
                    <isGetSupported>true</isGetSupported>
                    <mode>SWITCH_ALL_INCLUDE_ON_OFF</mode>
                  </switchAllCommandClass>
                </entry>
                <entry>
                  <commandClass>SWITCH_BINARY</commandClass>
                  <binarySwitchCommandClass>
                    <version>1</version>
                    <instances>1</instances>
                    <isGetSupported>true</isGetSupported>
                  </binarySwitchCommandClass>
                </entry>
                <entry>
                  <commandClass>ASSOCIATION</commandClass>
                  <associationCommandClass>
                    <version>1</version>
                    <instances>1</instances>
                    <configAssociations/>
                    <maxGroups>7</maxGroups>
                  </associationCommandClass>
                </entry>
                <entry>
                  <commandClass>VERSION</commandClass>
                  <versionCommandClass>
                    <version>1</version>
                    <instances>1</instances>
                    <libraryType>LIB_UNKNOWN</libraryType>
                  </versionCommandClass>
                </entry>
                <entry>
                  <commandClass>SWITCH_MULTILEVEL</commandClass>
                  <multiLevelSwitchCommandClass>
                    <version>3</version>
                    <instances>1</instances>
                    <isGetSupported>true</isGetSupported>
                  </multiLevelSwitchCommandClass>
                </entry>
              </supportedCommandClasses>
            </endPoint>
          </entry>
          <entry>
            <int>2</int>
            <endPoint>
              <deviceClass>
                <basicDeviceClass>ROUTING_SLAVE</basicDeviceClass>
                <genericDeviceClass>MULTILEVEL_SWITCH</genericDeviceClass>
                <specificDeviceClass>MOTOR_CONTROL_CLASS_C</specificDeviceClass>
              </deviceClass>
              <endpointId>2</endpointId>
              <supportedCommandClasses>
                <entry>
                  <commandClass>BASIC</commandClass>
                  <basicCommandClass>
                    <version>0</version>
                    <instances>0</instances>
                    <isGetSupported>true</isGetSupported>
                  </basicCommandClass>
                </entry>
                <entry>
                  <commandClass>SWITCH_BINARY</commandClass>
                  <binarySwitchCommandClass>
                    <version>1</version>
                    <instances>1</instances>
                    <isGetSupported>true</isGetSupported>
                  </binarySwitchCommandClass>
                </entry>
                <entry>
                  <commandClass>ASSOCIATION</commandClass>
                  <associationCommandClass>
                    <version>1</version>
                    <instances>1</instances>
                    <configAssociations/>
                    <maxGroups>2</maxGroups>
                  </associationCommandClass>
                </entry>
                <entry>
                  <commandClass>VERSION</commandClass>
                  <versionCommandClass>
                    <version>1</version>
                    <instances>1</instances>
                    <libraryType>LIB_UNKNOWN</libraryType>
                  </versionCommandClass>
                </entry>
                <entry>
                  <commandClass>SWITCH_MULTILEVEL</commandClass>
                  <multiLevelSwitchCommandClass>
                    <version>3</version>
                    <instances>1</instances>
                    <isGetSupported>true</isGetSupported>
                  </multiLevelSwitchCommandClass>
                </entry>
              </supportedCommandClasses>
            </endPoint>
          </entry>
        </endpoints>
        <endpointsAreTheSameDeviceClass>false</endpointsAreTheSameDeviceClass>
      </multiInstanceCommandClass>
    </entry>
    <entry>
      <commandClass>SWITCH_MULTILEVEL</commandClass>
      <multiLevelSwitchCommandClass>
        <version>3</version>
        <instances>1</instances>
        <isGetSupported>true</isGetSupported>
      </multiLevelSwitchCommandClass>
    </entry>
  </supportedCommandClasses>
  <nodeNeighbors>
    <int>1</int>
    <int>5</int>
    <int>16</int>
    <int>19</int>
    <int>20</int>
    <int>21</int>
    <int>23</int>
    <int>29</int>
    <int>30</int>
    <int>31</int>
  </nodeNeighbors>
  <lastSent>2016-11-12 23:00:45.199 UTC</lastSent>
  <lastReceived>2016-11-12 23:00:45.689 UTC</lastReceived>
</node>

@vossivossi: yes, I tried excluding it and re-including. For me it did not show up. I can try again, maybe I did something wrong.

You have to exlcude it without doing a reset of the device (so that it keeps all other parameters and the network inlcusion).

I need to admit that I struggle to “exclude the device without a reset”. Sorry for my inexperience here. I tried in HABmin to “remove device from controller” the effect is zero, I am getting an error message that the node was not found (???) and no change later. Am I misunderstanding what needs doing ?

If I use my stick and exclude the module, this should give a reset of the device, isn’t it.

The exclusion procedure is the same as the inclusion procedure. You just need to hit that exclusion button in habmin, then triple click (usually, but cross-check with the manual) the button on the actuator.
If you reset the device, venetian mode gets reset, too, so it’ll not show the 2nd endpoint.
I used to write that in post #6 already …
EDIT: don’t mess with any Z-Way or Aeon Tools to edit the controller’s device table.

@vossivossi and @chris: More troubles here. The Qubino devices start to endlessly turn the blinds open/close after closing the blinds with the wall switch (full down) from being full up before. I can reproduce this behaviour. It looks like it is running into the limiting switch when reaching full down, then the device tries to turn the blinds open and close meaning 1.5 sec up and then 1.5 sec down. With the 1.5 sec down it hits the switch again and starts turning it again (forever until the motor of the blinds is burned). WOW, it really looks those devices are seriously buggy and should be avoided (only that I have 20 of them). It looks like this behaviour is to seriously damage the blinds !!!

Did you calibrate the blinds ? Set parameter #78 to 1, according to the manual. It also states to reset the parameter to 0 when you’re done with calibration, maybe you didn’t?

@Elsing, did you connect more than one blind to one Qubino?

Hi, no I didn’t calibrate them as they have the auto-limiting switches and turn-off therefore (normally). I could try to do this, but I am afraid of other side effects this could have, e.g. how stable is the speed of those blinds ? I would not be able to fully open or close them if the motor will loose power with time…
Maybe it is worse trying to do this to see what is happening. Let me see.

@Artyom_Syomushkin: no, I only have one Qubino connect to one blind, of course ! I think it is a logic issue with the Qubino running into the limiter and then hitting it again after turning the binds in both directions.

You need to calibrate them. That’s what the auto-limiters are for and that’s how calibration works, effectively.
You can still change the params for tilt and motor movement duration afterwards if you feel you need to
(and if the calibration process doesn’t work, you can still reset the device).

Yes, you definetley have to calibrate them. In addition to this you should set parameter 73 to ‘0’ (Slats return to previously set position only in case of UI control’. Otherwise manual controll of the slats position with the wall switch is unpossible.

If you apply these 2 steps, than they work fine, I have even 21 of them.

I think also you need to calibrate. At least Fibaro Roller shutter requires such thing as well - it captures blind endpoints by measurement of motor current, which is cut, when blinds reach end switches.

Ok, you convinced me. I did the calibration.

@chris and @vossivossi, is there a (hacky) way to exploit what my node is reporting in the XML:

<entry>
      <int>8</int>
      <associationGroup>
        <index>8</index>
        <name>MultilevelSetTiltPosition</name>
        <profile>0x2000</profile>
        <commands>
          <commandClass>SWITCH_MULTILEVEL</commandClass>
        </commands>
        <associations/>
      </associationGroup>
    </entry>

Can I code some hack to get some sort of channel such that with some custom rules I could do a workaround until a proper fix is ready ?

I’m not sure I understand… This is an association group so won’t have a channel. What are you actually wanting to do? Do you mean that group 8 is not in the database? If not, then we should just add it…

@chris , I am just exposing my lack of knowledge here, I think. Sorry for asking stupid questions. What I am trying to do is to find a way to talk to the device, even if it is not properly reporting its “NIF”.

Btw, there are more issues with Qubino, my Flush 2 Relays devices do not report the power-meter changes after the configured time intervals. I talked to the vendor from whom I got the devices and he admitted there was a firmware issue for those devices that should have been fixes since. Well, looks like it isn’t or the devices I got from him still have the old firmware. I will post more info on the devices and firmware versions as soon as I am back at home today and I can get at the devices themselves.

No problem…

I don’t think we can solve this. I’ve spent quite some time on this - not just here, but also with another user who has tried many other software packages (ZWay and Zensys and OZW) and the problem isn’t that the command class isn’t reported in the NIF - that’s an effect. The cause is that the command class isn’t supported, and therefore it’s not reported in the NIF. I think that the root cause is that in some devices it seems impossible/problematic to enable this command class through the “set parameter, exclude and include again” process.

Therefore, I think there’s no way around this until the device is correctly configured… That’s my thinking at the moment anyway - it’s certainly not an OH problem since all these other packages also dont work with this device (at least for the user I’ve discussed this with on Github).

You can also read the other information in the github issue I referenced above. -:

Sorry.

So in essence that means I shall go and get the devices back to the shop and get different ones ? It seems this needs firmware upgrades at minimum, which anyway means sending them to Qubino, isn’t it ? So I may as well just not bother and get Fibaros. Wow, what a blow.

A, and yes, the Flush Shutter device that turned the blinds endlessly is dead now on the network and I can’t get it back to live (reset, …).

Your XML says that you have the same application version as I have (1.1). So it should work, at least it works for me with OpenHab 1.8x. Which version of OH do you use?

As I mentioned above, the issue is not with OH versions - the problem appears to be with the ability to switch the device into the mode that supports the additional command class. Without this mode, the device doesn’t support, or report even, the command classes and endpoints required to operate. This has been confirmed with a number of different software (OZW, OH, ZWay, Zensys).