Fibaro swipe support in the future?

Hi @pa1, I’ve got mine set up in OH2 with the zwave2 binding and it’s working pretty well so far. The only issue I seem to have is with the device itself and not related to openhab.

Basically, my use case would be to fix the swipe underneath my coffee table and use gestures “invisibly” over the table. I find that as soon as I place the device near any kind of surface, it detects it as though it was my hand. This means it puts the device into menu mode after a few seconds.

I’ve found it even does this with the picture frame cover thing on. The only way I can get around this is to have it against the surface it will be near when it first powers on, then it doesn’t detect it.

This means that if I want to use it as a picture frame, even if only during testing, I can’t use the batteries as then it will turn on before I get the cover on and therefore it detects the cover as a hand.

Does your device behave similarly or I have maybe just got a faulty unit?

I may have spoken too soon! Looks like just leaving it to go through the menu cycle and timing itself out, it then works fine afterwards.

One more question: how does openhab work with the circle gestures?

The simple swipes are easy enough to set rules on based on the scene number changes, but how would this work with the continuous circle gestures?

Glad you figured it out… Just mount it to the flat surface, and it will work after first detection chaos.

Circle gestures are more complicated to use, as they will send a sequence of commands (currectScene and KeyAttribute). First command is for cirle left or right (currentScene), second command is for “still left” or “left released” (if you move your hand away).
So you need to create some smart rules for that.

In my case I use the circular gestures to control the angle of my venetian blinds in steps by 10.

Tx will be trying asap

How does the KeyAttribute work?

When I added the device I was only able to add two items, one for Battery Level and one for Scene Number.

Should there be a third command available to link an item to for the KeyAttribute?

Yep. There are three items for a swipe. battery, scene and key attrib. No idea if it works in oh2 with current zwave. As I mentioned earlier, swipe is bound to zway, which triggers oh2 via rest, since I was not able to get my swipe running with zwave2.0.

OK cool, thanks for the help.

@chris, I’m not sure where to go from here… It looks like there should be a third channel when adding the Swipe but I only get the two. Is there any way to manually add this or add it to the database?

What is the channel you want? We can add it to the database, but unless it’s linked to a command class, it’s not going to work.

Please let me know the command class you are expecting - really it should have been in the XML, but maybe it was missed…

@pa1 do you know the command class KeyAttribute uses?

Can you provide the XML from a recent OH2 binding? Possibly delete the current one and restart - just so we know it’s updated…

OK I’ll try and get that now or this evening more likely… I’ll post it here when I’ve got it.

OK I updated the zwave binding just now and deleted the existing XML and let it regenerate. Here’s the new XML:

<node> <deviceClass> <basicDeviceClass>ROUTING_SLAVE</basicDeviceClass> <genericDeviceClass>REMOTE_SWITCH_2</genericDeviceClass> <specificDeviceClass>SWITCH_REMOTE2_MULTILEVEL</specificDeviceClass> </deviceClass> <homeId>0xec3d88f9</homeId> <nodeId>12</nodeId> <version>4</version> <manufacturer>0x10f</manufacturer> <deviceId>0x1000</deviceId> <deviceType>0xd01</deviceType> <listening>false</listening> <frequentlyListening>false</frequentlyListening> <routing>true</routing> <security>false</security> <beaming>true</beaming> <maxBaudRate>40000</maxBaudRate> <nodeInformationFrame> <commandClass>ZWAVE_PLUS_INFO</commandClass> <commandClass>ASSOCIATION</commandClass> <commandClass>ASSOCIATION_GROUP_INFO</commandClass> <commandClass>BATTERY</commandClass> <commandClass>CENTRAL_SCENE</commandClass> <commandClass>CONFIGURATION</commandClass> <commandClass>CRC_16_ENCAP</commandClass> <commandClass>DEVICE_RESET_LOCALLY</commandClass> <commandClass>FIRMWARE_UPDATE_MD</commandClass> <commandClass>MANUFACTURER_SPECIFIC</commandClass> <commandClass>MULTI_INSTANCE_ASSOCIATION</commandClass> <commandClass>POWERLEVEL</commandClass> <commandClass>SECURITY</commandClass> <commandClass>VERSION</commandClass> <commandClass>WAKE_UP</commandClass> </nodeInformationFrame> <supportedCommandClasses> <entry> <commandClass>FIRMWARE_UPDATE_MD</commandClass> <firmwareUpdateCommandClass> <version>3</version> <instances>1</instances> <versionSupported>3</versionSupported> </firmwareUpdateCommandClass> </entry> <entry> <commandClass>BASIC</commandClass> <basicCommandClass> <version>1</version> <instances>1</instances> <versionSupported>1</versionSupported> <isGetSupported>true</isGetSupported> </basicCommandClass> </entry> <entry> <commandClass>ASSOCIATION_GROUP_INFO</commandClass> <associationGroupInfoCommandClass> <version>1</version> <instances>1</instances> <versionSupported>1</versionSupported> <autoSubscribeGroups> <int>1</int> </autoSubscribeGroups> <groups> <entry> <int>1</int> <associationGroupInfo> <name>Lifeline</name> <profile>1</profile> <commands> <commandClass>BATTERY</commandClass> <commandClass>DEVICE_RESET_LOCALLY</commandClass> <commandClass>CENTRAL_SCENE</commandClass> </commands> <outer-class reference="../../../.."/> </associationGroupInfo> </entry> <entry> <int>2</int> <associationGroupInfo> <name>Flick UP</name> <profile>8193</profile> <commands> <commandClass>BASIC</commandClass> </commands> <outer-class reference="../../../.."/> </associationGroupInfo> </entry> <entry> <int>3</int> <associationGroupInfo> <name>Flick DOWN</name> <profile>8194</profile> <commands> <commandClass>BASIC</commandClass> </commands> <outer-class reference="../../../.."/> </associationGroupInfo> </entry> <entry> <int>4</int> <associationGroupInfo> <name>Flick LEFT</name> <profile>8195</profile> <commands> <commandClass>BASIC</commandClass> </commands> <outer-class reference="../../../.."/> </associationGroupInfo> </entry> <entry> <int>5</int> <associationGroupInfo> <name>Flick RIGHT</name> <profile>8196</profile> <commands> <commandClass>BASIC</commandClass> </commands> <outer-class reference="../../../.."/> </associationGroupInfo> </entry> <entry> <int>6</int> <associationGroupInfo> <name>Circular AirWheel</name> <profile>8197</profile> <commands/> <outer-class reference="../../../.."/> </associationGroupInfo> </entry> </groups> </associationGroupInfoCommandClass> </entry> <entry> <commandClass>WAKE_UP</commandClass> <WakeUpCommandClass> <version>2</version> <instances>1</instances> <versionSupported>2</versionSupported> <targetNodeId>1</targetNodeId> <interval>60</interval> <minInterval>60</minInterval> <maxInterval>64800</maxInterval> <defaultInterval>21600</defaultInterval> <intervalStep>1</intervalStep> <lastWakeup>2016-05-16 16:08:25.710 UTC</lastWakeup> <isGetSupported>true</isGetSupported> </WakeUpCommandClass> </entry> <entry> <commandClass>NO_OPERATION</commandClass> <noOperationCommandClass> <version>1</version> <instances>1</instances> <versionSupported>1</versionSupported> </noOperationCommandClass> </entry> <entry> <commandClass>VERSION</commandClass> <versionCommandClass> <version>2</version> <instances>1</instances> <versionSupported>2</versionSupported> <libraryType>LIB_SLAVE_ENHANCED</libraryType> <protocolVersion>4.5</protocolVersion> <applicationVersion>3.2</applicationVersion> </versionCommandClass> </entry> <entry> <commandClass>CRC_16_ENCAP</commandClass> <crc16EncapsulationCommandClass> <version>1</version> <instances>1</instances> <versionSupported>1</versionSupported> </crc16EncapsulationCommandClass> </entry> <entry> <commandClass>BATTERY</commandClass> <batteryCommandClass> <version>1</version> <instances>1</instances> <versionSupported>1</versionSupported> <batteryLevel>100</batteryLevel> <batteryLow>false</batteryLow> <isGetSupported>true</isGetSupported> </batteryCommandClass> </entry> <entry> <commandClass>CONFIGURATION</commandClass> <configurationCommandClass> <version>1</version> <instances>1</instances> <versionSupported>1</versionSupported> <configParameters> <entry> <int>1</int> <configurationParameter> <index>1</index> <size>1</size> <value>0</value> <readOnly>false</readOnly> <writeOnly>false</writeOnly> </configurationParameter> </entry> <entry> <int>2</int> <configurationParameter> <index>2</index> <size>1</size> <value>1</value> <readOnly>false</readOnly> <writeOnly>false</writeOnly> </configurationParameter> </entry> <entry> <int>3</int> <configurationParameter> <index>3</index> <size>1</size> <value>1</value> <readOnly>false</readOnly> <writeOnly>false</writeOnly> </configurationParameter> </entry> <entry> <int>4</int> <configurationParameter> <index>4</index> <size>1</size> <value>3</value> <readOnly>false</readOnly> <writeOnly>false</writeOnly> </configurationParameter> </entry> <entry> <int>5</int> <configurationParameter> <index>5</index> <size>2</size> <value>4</value> <readOnly>false</readOnly> <writeOnly>false</writeOnly> </configurationParameter> </entry> <entry> <int>6</int> <configurationParameter> <index>6</index> <size>1</size> <value>0</value> <readOnly>false</readOnly> <writeOnly>false</writeOnly> </configurationParameter> </entry> <entry> <int>7</int> <configurationParameter> <index>7</index> <size>1</size> <value>0</value> <readOnly>false</readOnly> <writeOnly>false</writeOnly> </configurationParameter> </entry> <entry> <int>10</int> <configurationParameter> <index>10</index> <size>1</size> <value>15</value> <readOnly>false</readOnly> <writeOnly>false</writeOnly> </configurationParameter> </entry> <entry> <int>11</int> <configurationParameter> <index>11</index> <size>1</size> <value>31</value> <readOnly>false</readOnly> <writeOnly>false</writeOnly> </configurationParameter> </entry> <entry> <int>12</int> <configurationParameter> <index>12</index> <size>1</size> <value>15</value> <readOnly>false</readOnly> <writeOnly>false</writeOnly> </configurationParameter> </entry> <entry> <int>13</int> <configurationParameter> <index>13</index> <size>2</size> <value>255</value> <readOnly>false</readOnly> <writeOnly>false</writeOnly> </configurationParameter> </entry> <entry> <int>20</int> <configurationParameter> <index>20</index> <size>2</size> <value>255</value> <readOnly>false</readOnly> <writeOnly>false</writeOnly> </configurationParameter> </entry> <entry> <int>21</int> <configurationParameter> <index>21</index> <size>2</size> <value>0</value> <readOnly>false</readOnly> <writeOnly>false</writeOnly> </configurationParameter> </entry> <entry> <int>22</int> <configurationParameter> <index>22</index> <size>2</size> <value>255</value> <readOnly>false</readOnly> <writeOnly>false</writeOnly> </configurationParameter> </entry> <entry> <int>23</int> <configurationParameter> <index>23</index> <size>2</size> <value>0</value> <readOnly>false</readOnly> <writeOnly>false</writeOnly> </configurationParameter> </entry> <entry> <int>24</int> <configurationParameter> <index>24</index> <size>2</size> <value>255</value> <readOnly>false</readOnly> <writeOnly>false</writeOnly> </configurationParameter> </entry> <entry> <int>25</int> <configurationParameter> <index>25</index> <size>2</size> <value>0</value> <readOnly>false</readOnly> <writeOnly>false</writeOnly> </configurationParameter> </entry> <entry> <int>26</int> <configurationParameter> <index>26</index> <size>2</size> <value>255</value> <readOnly>false</readOnly> <writeOnly>false</writeOnly> </configurationParameter> </entry> <entry> <int>27</int> <configurationParameter> <index>27</index> <size>2</size> <value>0</value> <readOnly>false</readOnly> <writeOnly>false</writeOnly> </configurationParameter> </entry> <entry> <int>30</int> <configurationParameter> <index>30</index> <size>1</size> <value>0</value> <readOnly>false</readOnly> <writeOnly>false</writeOnly> </configurationParameter> </entry> <entry> <int>31</int> <configurationParameter> <index>31</index> <size>2</size> <value>0</value> <readOnly>false</readOnly> <writeOnly>false</writeOnly> </configurationParameter> </entry> <entry> <int>32</int> <configurationParameter> <index>32</index> <size>2</size> <value>0</value> <readOnly>false</readOnly> <writeOnly>false</writeOnly> </configurationParameter> </entry> <entry> <int>33</int> <configurationParameter> <index>33</index> <size>2</size> <value>0</value> <readOnly>false</readOnly> <writeOnly>false</writeOnly> </configurationParameter> </entry> <entry> <int>34</int> <configurationParameter> <index>34</index> <size>2</size> <value>0</value> <readOnly>false</readOnly> <writeOnly>false</writeOnly> </configurationParameter> </entry> <entry> <int>35</int> <configurationParameter> <index>35</index> <size>2</size> <value>0</value> <readOnly>false</readOnly> <writeOnly>false</writeOnly> </configurationParameter> </entry> <entry> <int>36</int> <configurationParameter> <index>36</index> <size>2</size> <value>0</value> <readOnly>false</readOnly> <writeOnly>false</writeOnly> </configurationParameter> </entry> </configParameters> </configurationCommandClass> </entry> <entry> <commandClass>MANUFACTURER_SPECIFIC</commandClass> <manufacturerSpecificCommandClass> <version>2</version> <instances>1</instances> <versionSupported>2</versionSupported> </manufacturerSpecificCommandClass> </entry> <entry> <commandClass>DEVICE_RESET_LOCALLY</commandClass> <deviceResetLocallyCommandClass> <version>1</version> <instances>1</instances> <versionSupported>1</versionSupported> </deviceResetLocallyCommandClass> </entry> <entry> <commandClass>ASSOCIATION</commandClass> <associationCommandClass> <version>2</version> <instances>1</instances> <versionSupported>2</versionSupported> <configAssociations> <entry> <int>1</int> <associationGroup> <index>1</index> <associations> <associationMember> <node>1</node> <endpoint>0</endpoint> </associationMember> </associations> </associationGroup> </entry> <entry> <int>2</int> <associationGroup> <index>2</index> <associations/> </associationGroup> </entry> <entry> <int>3</int> <associationGroup> <index>3</index> <associations/> </associationGroup> </entry> <entry> <int>4</int> <associationGroup> <index>4</index> <associations/> </associationGroup> </entry> <entry> <int>5</int> <associationGroup> <index>5</index> <associations/> </associationGroup> </entry> <entry> <int>6</int> <associationGroup> <index>6</index> <associations/> </associationGroup> </entry> </configAssociations> <maxGroups>6</maxGroups> </associationCommandClass> </entry> <entry> <commandClass>CENTRAL_SCENE</commandClass> <centralSceneCommandClass> <version>2</version> <instances>1</instances> <versionSupported>2</versionSupported> <sceneCount>12</sceneCount> </centralSceneCommandClass> </entry> <entry> <commandClass>ZWAVE_PLUS_INFO</commandClass> <zwavePlusCommandClass> <version>2</version> <instances>1</instances> <versionSupported>2</versionSupported> <zwPlusVersion>1</zwPlusVersion> <zwPlusRole>4</zwPlusRole> <zwPlusNodeType>0</zwPlusNodeType> <zwPlusDeviceType>0x1600</zwPlusDeviceType> <zwPlusInstallerIcon>0x1600</zwPlusInstallerIcon> <isGetSupported>true</isGetSupported> </zwavePlusCommandClass> </entry> <entry> <commandClass>POWERLEVEL</commandClass> <powerLevelCommandClass> <version>1</version> <instances>1</instances> <versionSupported>1</versionSupported> <powerLevel>0</powerLevel> <powerTimeout>0</powerTimeout> </powerLevelCommandClass> </entry> </supportedCommandClasses> <securedCommandClasses/> <nodeNeighbors> <int>1</int> </nodeNeighbors> <lastSent>2016-05-16 16:08:31.542 UTC</lastSent> <lastReceived>2016-05-16 16:08:31.589 UTC</lastReceived> </node>

Looks ok - or at least consistent with the database.

I guess the next step is to understand what the device sends under for this condition - if you can get a log, and say exactly what you were doing at what time so we can correlate the received data with the action, then I’ll take a look…

I’ve not been able to test this as I can’t enable the command gestures via config parameters from within Habmin. I’ve still got the issue with parameters which have a drop down list not working with free text input as well.

For now I’ve updated the config in the zwave database with an option which I was trying to enable using free text so I can use this when the binding is updated until the issue is resolved.

What log data do you need from me once I’ve got the above working?

I’m looking at this at the moment, along with tagging and a couple of other issues with HABmin. Hopefully there will be an update tonight that will solve this issue (I hope! :wink:).

Just a Z-Wave debug log - but I need to be able to tie what you’re doing to the incoming messages, so either you need to annotate the logs, or, provide a list that says "at 3:01 I did X"such that the times align with the log (this is probably best).

Right, I will update with that when I can - will the zwave binding be updated tonight?

I know there are a bunch of database updates pending, and I’ll update these - is that what you mean, or are you after a change for something?

Nope, that’s what I’m after :slight_smile:

I’ve updated a config parameter for this device which I need to enable the commands I want to be able to use. Basically the device has 6 commands, swipe up, down, left, right, and both clockwise and counter-clockwise circular gestures (for dimming etc).

By default the circular gestures aren’t enabled so I updated the parameter with an option to enable all commands as the free text entry wasn’t working.

@krish I’ve pushed a snapshot of HABmin2 that will hopefully fix this issue - please let me know if it’s ok and I’ll make a release version.

@feens this should also support tagging on items.

What did you update?

If I do a diff on the XML, it shows nothing changed, so whatever you changed in the database didn’t have a resulting impact on the XML.