Fibaro FGS222 - not switching properly

I integrated a Fibaro FGS-222 dual relay successfully into my zwave network.
But I have an issue:
When I switch either of the relays, I can only switch the state (ON / OFF) when setting the switch in openhab to “ON”. This means even if the light is ON, I first need to change the switch item to “OFF” (nothing happens then) and then to ON to trigger the light to switch OFF.
The configuration of the fibaro internally is set to “toggle”, but setting it to momentary button obviously does’t make a difference.
With this limitation the fibaro switch is useless, because I also cannot see the “real state” of the switch.

My items look like this (I took it from my Fibaro Wall Plug configuration):

Switch Z_Strahler_1            "Strahler WoZi"                (G_Light)        { zwave="4:1:command=switch_binary,refresh_interval=30"}
Switch Z_Strahler_2            "Strahler Treppe"            (G_Light)        { zwave="4:2:command=switch_binary,refresh_interval=30"}

Any suggestion?

What configuration are you setting? Can you post the XML file?

I’ve got a number of the FGS-212, all using momentary action switches, and they all work fine - I just changed param 13 to toggle (from memory). I would expect the 222 to be the same (but it might not be of course!).

Hi Chris,

you mean the settings for the Fibaro in Habmin?
I guess you talk about the node4.xml in /var/lib/openhab/zwave !?

<?xml version="1.0" encoding="UTF-8"?>
<node>
   <deviceClass>
      <basicDeviceClass>ROUTING_SLAVE</basicDeviceClass>
      <genericDeviceClass>BINARY_SWITCH</genericDeviceClass>
      <specificDeviceClass>POWER_SWITCH_BINARY</specificDeviceClass>
   </deviceClass>
   <homeId>0xfc47c028</homeId>
   <nodeId>4</nodeId>
   <version>4</version>
   <manufacturer>0x10f</manufacturer>
   <deviceId>0x1002</deviceId>
   <deviceType>0x202</deviceType>
   <listening>true</listening>
   <frequentlyListening>false</frequentlyListening>
   <routing>true</routing>
   <healState>DONE @ 2016-01-01T18:44:00+0000</healState>
   <supportedCommandClasses>
      <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>32</int>
                  <configurationParameter>
                     <index>32</index>
                     <size>1</size>
                     <value>3</value>
                     <readOnly>false</readOnly>
                     <writeOnly>false</writeOnly>
                  </configurationParameter>
               </entry>
               <entry>
                  <int>1</int>
                  <configurationParameter>
                     <index>1</index>
                     <size>1</size>
                     <value>-1</value>
                     <readOnly>false</readOnly>
                     <writeOnly>false</writeOnly>
                  </configurationParameter>
               </entry>
               <entry>
                  <int>33</int>
                  <configurationParameter>
                     <index>33</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>0</value>
                     <readOnly>false</readOnly>
                     <writeOnly>false</writeOnly>
                  </configurationParameter>
               </entry>
               <entry>
                  <int>4</int>
                  <configurationParameter>
                     <index>4</index>
                     <size>2</size>
                     <value>0</value>
                     <readOnly>false</readOnly>
                     <writeOnly>false</writeOnly>
                  </configurationParameter>
               </entry>
               <entry>
                  <int>5</int>
                  <configurationParameter>
                     <index>5</index>
                     <size>2</size>
                     <value>0</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>39</int>
                  <configurationParameter>
                     <index>39</index>
                     <size>2</size>
                     <value>600</value>
                     <readOnly>false</readOnly>
                     <writeOnly>false</writeOnly>
                  </configurationParameter>
               </entry>
               <entry>
                  <int>40</int>
                  <configurationParameter>
                     <index>40</index>
                     <size>1</size>
                     <value>3</value>
                     <readOnly>false</readOnly>
                     <writeOnly>false</writeOnly>
                  </configurationParameter>
               </entry>
               <entry>
                  <int>41</int>
                  <configurationParameter>
                     <index>41</index>
                     <size>1</size>
                     <value>2</value>
                     <readOnly>false</readOnly>
                     <writeOnly>false</writeOnly>
                  </configurationParameter>
               </entry>
               <entry>
                  <int>42</int>
                  <configurationParameter>
                     <index>42</index>
                     <size>1</size>
                     <value>3</value>
                     <readOnly>false</readOnly>
                     <writeOnly>false</writeOnly>
                  </configurationParameter>
               </entry>
               <entry>
                  <int>43</int>
                  <configurationParameter>
                     <index>43</index>
                     <size>1</size>
                     <value>1</value>
                     <readOnly>false</readOnly>
                     <writeOnly>false</writeOnly>
                  </configurationParameter>
               </entry>
               <entry>
                  <int>13</int>
                  <configurationParameter>
                     <index>13</index>
                     <size>1</size>
                     <value>0</value>
                     <readOnly>false</readOnly>
                     <writeOnly>false</writeOnly>
                  </configurationParameter>
               </entry>
               <entry>
                  <int>14</int>
                  <configurationParameter>
                     <index>14</index>
                     <size>1</size>
                     <value>0</value>
                     <readOnly>false</readOnly>
                     <writeOnly>false</writeOnly>
                  </configurationParameter>
               </entry>
               <entry>
                  <int>15</int>
                  <configurationParameter>
                     <index>15</index>
                     <size>1</size>
                     <value>0</value>
                     <readOnly>false</readOnly>
                     <writeOnly>false</writeOnly>
                  </configurationParameter>
               </entry>
               <entry>
                  <int>16</int>
                  <configurationParameter>
                     <index>16</index>
                     <size>1</size>
                     <value>1</value>
                     <readOnly>false</readOnly>
                     <writeOnly>false</writeOnly>
                  </configurationParameter>
               </entry>
               <entry>
                  <int>30</int>
                  <configurationParameter>
                     <index>30</index>
                     <size>1</size>
                     <value>3</value>
                     <readOnly>false</readOnly>
                     <writeOnly>false</writeOnly>
                  </configurationParameter>
               </entry>
               <entry>
                  <int>31</int>
                  <configurationParameter>
                     <index>31</index>
                     <size>1</size>
                     <value>2</value>
                     <readOnly>false</readOnly>
                     <writeOnly>false</writeOnly>
                  </configurationParameter>
               </entry>
            </configParameters>
         </configurationCommandClass>
      </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>
                        <int>3</int>
                     </Nodes>
                  </associationGroup>
               </entry>
               <entry>
                  <int>2</int>
                  <associationGroup>
                     <Index>2</Index>
                     <Nodes>
                        <int>1</int>
                        <int>3</int>
                     </Nodes>
                  </associationGroup>
               </entry>
               <entry>
                  <int>3</int>
                  <associationGroup>
                     <Index>3</Index>
                     <Nodes>
                        <int>1</int>
                     </Nodes>
                  </associationGroup>
               </entry>
            </configAssociations>
            <maxGroups>3</maxGroups>
         </associationCommandClass>
      </entry>
      <entry>
         <commandClass>MANUFACTURER_SPECIFIC</commandClass>
         <manufacturerSpecificCommandClass>
            <version>1</version>
            <instances>1</instances>
         </manufacturerSpecificCommandClass>
      </entry>
      <entry>
         <commandClass>VERSION</commandClass>
         <versionCommandClass>
            <version>1</version>
            <instances>1</instances>
            <libraryType>LIB_SLAVE_ENHANCED</libraryType>
            <protocolVersion>3.52</protocolVersion>
            <applicationVersion>2.2</applicationVersion>
         </versionCommandClass>
      </entry>
      <entry>
         <commandClass>SWITCH_BINARY</commandClass>
         <binarySwitchCommandClass>
            <version>1</version>
            <instances>1</instances>
            <isGetSupported>true</isGetSupported>
         </binarySwitchCommandClass>
      </entry>
      <entry>
         <commandClass>BASIC</commandClass>
         <basicCommandClass>
            <version>1</version>
            <instances>1</instances>
            <isGetSupported>true</isGetSupported>
         </basicCommandClass>
      </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>BINARY_SWITCH</genericDeviceClass>
                        <specificDeviceClass>POWER_SWITCH_BINARY</specificDeviceClass>
                     </deviceClass>
                     <endpointId>1</endpointId>
                     <supportedCommandClasses>
                        <entry>
                           <commandClass>SWITCH_BINARY</commandClass>
                           <binarySwitchCommandClass>
                              <endpoint reference="../../../.." />
                              <version>1</version>
                              <instances>1</instances>
                              <isGetSupported>true</isGetSupported>
                           </binarySwitchCommandClass>
                        </entry>
                        <entry>
                           <commandClass>BASIC</commandClass>
                           <basicCommandClass>
                              <endpoint reference="../../../.." />
                              <version>0</version>
                              <instances>0</instances>
                              <isGetSupported>true</isGetSupported>
                           </basicCommandClass>
                        </entry>
                     </supportedCommandClasses>
                  </endPoint>
               </entry>
               <entry>
                  <int>2</int>
                  <endPoint>
                     <deviceClass>
                        <basicDeviceClass>ROUTING_SLAVE</basicDeviceClass>
                        <genericDeviceClass>BINARY_SWITCH</genericDeviceClass>
                        <specificDeviceClass>POWER_SWITCH_BINARY</specificDeviceClass>
                     </deviceClass>
                     <endpointId>2</endpointId>
                     <supportedCommandClasses>
                        <entry>
                           <commandClass>SWITCH_BINARY</commandClass>
                           <binarySwitchCommandClass>
                              <endpoint reference="../../../.." />
                              <version>1</version>
                              <instances>1</instances>
                              <isGetSupported>true</isGetSupported>
                           </binarySwitchCommandClass>
                        </entry>
                        <entry>
                           <commandClass>BASIC</commandClass>
                           <basicCommandClass>
                              <endpoint reference="../../../.." />
                              <version>0</version>
                              <instances>0</instances>
                              <isGetSupported>true</isGetSupported>
                           </basicCommandClass>
                        </entry>
                     </supportedCommandClasses>
                  </endPoint>
               </entry>
            </endpoints>
            <endpointsAreTheSameDeviceClass>true</endpointsAreTheSameDeviceClass>
         </multiInstanceCommandClass>
      </entry>
   </supportedCommandClasses>
   <nodeNeighbors>
      <int>1</int>
      <int>3</int>
   </nodeNeighbors>
   <lastSent>2016-01-01 18:44:00.176 UTC</lastSent>
   <lastReceived>2016-01-01 18:44:00.217 UTC</lastReceived>
   <applicationUpdateReceived>true</applicationUpdateReceived>
</node>

What type of switches do you have configured? Are they ‘push button’ type switches, or are they ‘normal’ switches (ie up is on/off, and down is the opposite)?

Currently the switch is configured for push button switches - is this what you have?

Hi!

I have one of these switches too and it works very well. In my item definition I do not use refresh_interval though, have you tried without setting that?
Perhaps you override a setting for the switch to actually update the state to your openHAB bus thus creating a delay in your system causing this ‘bug’.

Regards, Toby

This won’t make any difference, but you are right, it shouldn’t be needed if the associations are correctly configured…

@chris Sorry for my rookie-questions.
You are talking about the config in Habmin?
Actually there are two parameters which match to your comment:
Parameter 13 (“Inputs behavior”): Toggle or Follow Switch contact (ON / OFF)
Parameter 14 (“Inputs Button / Switch configuration”): Bi-stable input (Switch) or Mono-stable input.

The second has an impact on the physical switch in the wall (which is a mono-stable button = push button??) behaviour.

As far a s I know openhab does not provide a toggle button (just switch), right?

Hi @TobyWindahl,
thanks, changed that, but it doesn’t change anything.
Would you be willing to provide your node.xml file to me to test?

One more thing:
When I trigger the switch in openhab (from ON to OFF), I can hear a “click”-response from the relay behind the physical switch in the wall, but the state of the light does not change until I trigger the switch in openhab from OFF to ON.

If the switch is switching (ie you can hear it switch when you press the button in OH) then it’s probably working. If it’s not turning on the light, then something in the switch is probably broken.

Have you looking in the logs to make sure that something isn’t being sent twice, or that the correct information is being sent to the switch through zwave?

I am thinking along Chris’s line as well. If you hear it click it sounds as if you have the proper Contact but something else is amiss.
I used this example to configure my switch from ‘Collection of z-wave settings’:

That’s what I meant with not using the refresh_interval.
Try the debug mode if the logs fail to provide any useful information.

Myself, I did not change anything in the Habmin for the switch. The node-file you ask for I know nothing of. I shall look for it and see what it contains.
I do recall it was kind of a pain to manage to pair it though :slight_smile: The tripple press needs to be very fast on my switch.

/T

I have the same issue, I posted about it a while ago:
https://groups.google.com/forum/#!searchin/openhab/leong/openhab/Yn_SZ7MzjKc/3qlfT6dd4xwJ

And it seemed to be fixed, but now I have the same issue again.
Same symtoms: Bistable switches, hear the relay clicking when I flip the switches, but no event (or message) arrives on the controller. Switching from the Openhab UI or app works fine.

Till now I thought the relay was broken, but since you have the same issue, maybe its something else.

If I understand the problem here (and I’m not 100% sure I do!) the issue is if the UI button is pressed, then the binding is sending a message to the switch, the relay is clicking, but the lights aren’t coming on until the OFF command is sent. I believe it works if the button is physically pressed, so I think this is different?

Thanks @TobyWindahl.
that’s exactly, what I tried as well, but played around with different settings (even without command=switch_binary and with the refresh_interval like in my Wall Plug Switch).
However, the xml would be helpful.
You can find it here:
/var/lib/openhab/zwave/node4.xml (my relay is node4).
Again, thanks for your help.

Hi @l_grave,

I am not sure if this is the same issue:
My physical switches in the wall work as usual.

BUT, when I try to switch the relay from openhab, the light’s status is changed (from ON to OFF of vice versa) only when the OH switch item changed to “ON”.
I other words only every second switch process will change the lights condition.
Clear what I mean?

When I press the physical switches once I get 2 entries in my log:

2016-01-02 20:41:53.937 [WARN ] [.z.internal.ZWaveActiveBinding] - NODE 4: No item bound for event, endpoint = 0, command class = SWITCH_BINARY, value = 0, ignoring.
2016-01-02 20:41:54.258 [WARN ] [.z.internal.ZWaveActiveBinding] - NODE 4: No item bound for event, endpoint = 0, command class = SWITCH_BINARY, value = 255, ignoring.

But the lights condition is changed in each single push.

With the switches on OH I don’t see a log entry, but the light changes on the second trigger only (changing state OFF -> ON)

In my case it IS exactly that way. The only condition change will be achieved when the UI switch changes from OFF to ON. (and the physical switch works as designed).

@chris
I don’t think, that something is broken in the switch, because the behaviour is totally reproducible.
That means the relay (both channels) switch perfectly when triggered by OH (Switch 1 - or 2 respectively).
But the state of the light only changes on every second push of the OH switches (from OFF to ON only).

My conclusion is that it’s a wrong internal parameter.

So, would anybody please share the node.xml of a functional setup of this (or the FGS-221)?

You could always reset the switch then? I guess since others don’t have this issue, resetting to defaults will solve the issue?

Good idea.
Going to try that.
I hope it’s possible without getting it out of the wall… :wink: