Remotec Zwave Dry Contact Fixture Module not working as expected for Garage Door even though defined as "Z-Wave Virtual Momentary Contact Switch"

Hi all,

I have a Remotec Zwave Dry Contact Fixture Module linked to my SmartThings hub that I’m using as a relay to control my garage door. Per the instructions in some of the other forums I’ve gone ahead and logged into the SmartThings API site and redefined the relay as a “Z-Wave Virtual Momentary Contact Switch”.

My assumption after I did this was that the SmartThings hub would now automatically turn the switch “off” after I press the button to turn it on after 3 seconds (or something like that). However that isn’t happening for me.

I notice the following events for the switch when I click to view “all” events:

Date Source Type Name Value User Displayed Text Changed
2015-07-06 7:04:34.114 PM PDT
31 minutes ago DEVICE /physical switch on Garage Door Switch switch is on false
2015-07-06 7:04:33.980 PM PDT
31 minutes ago DEVICE /physical switch on Garage Door Switch switch is on false
2015-07-06 7:04:33.848 PM PDT
31 minutes ago DEVICE /physical switch on Garage Door Switch switch is on true
2015-07-06 7:04:33.660 PM PDT
31 minutes ago DEVICE /physical switch off Garage Door Switch switch is off false

From this it doesn’t look to me like the SmartThings hub is sending the command for the relay to turn “off” after a few seconds as I would expect it to.

Does anyone know what I may be doing wrong here?


A momentary switch, by definition, doesn’t have a static on and off like a binary switch does.

Instead, it acts like a push button doorbell. It momentarily completes a circuit, then reverts to its default rest position. Usually the push represents on, and the resting position represents off. But the switch doesn’t stay on–that’s why it’s defined as “momentary.” So it doesn’t need an off command.

That’s my issue. In my case it is staying on.

The device itself is a relay but defining it as a “Z-Wave Virtual Momentary Contact Switch” in the SmartThings API is supposed to make a relay behave like a momentary switch. That part isn’t working for me.

I assume SmartThings does this by receiving the signal that the switch was turned on, waiting x seconds and then sending a command to the relay to turn back off again. That’s not happening in my case.

The other thread discussing this is at: Garage door opener Remotec ZFM-80

I see. Based on the following topic, if you use “virtual momentary” it should indeed do the toggling for you.

Hopefully someone who’s using the device will respond.

Otherwise since this is an officially supported device you can check with

Try this device driver, it has a special preference for use as a garage door controller…
Select the momentary on option in the preferences section.

Nope. That didn’t work either. I set the parameter to true but still the switch remains on (meaning I have to push the button twice each time to get the door to open/close).

I’m starting to think that maybe my ZFM-80 is faulty. However I still don’t see any events coming from the SmartThings Hub to tell the switch to turn off after it notices it turned on. So strange…

Does the state change in the app when you actuate the switch manually?
Have you tried a zwave repair?
I have two of these, one on my garage door ant the other on the fireplace, both report state changes when manually actuated, and the garage door controller works as expected.

Yes, if I actuate the switch then I see an event in the device log showing its state change to “off”. Also, I can switch the relay both on and off using the “Thing” in the SmartThings app and it works fine.

The issue appears to be that my SmartThings hub is not sending the “off” command back to the relay after receiving the “on” event.

By the way - I just tried the repair. I’ll let you know if it helps…

The way that the momentary option works in the device I wrote is that it sends an on, then pauses for a second before sending the off command. Maybe you need to change the delay in line 129 from 1000 to 3000.
Not sure what else you can try.

have you gone through the garage door solution setup through the “Doors and Locks” section?

Doors and Locks>Gear icon in top right> Add door>select garage door as the type and then follow the setup.

This method is the recommended way to setup a garage door actuator correctly.

Yes I did but that’s also broken because my garage door switch is not behaving as the SmartApp expects it to. That’s why I’m back to trying to figure out how to get the switch to work properly ;(

Hey Mike,

I’m still trying to get to the bottom of this so I decided to switch to using your device type again but this time I enabled all the logging. This is the output I see:

7:43:49 PM:
Parse returned Garage Door switch is off

7:43:49 PM:
Parse returned Garage Door switch is off

7:43:49 PM:
Parse returned Garage Door switch is off

7:43:02 PM:
before settings: ['param1':'Disabled', 'isGD':true], 

state: [‘param1’:0, ‘param2’:0, ‘manufacturer’:‘Remotec Technology Ltd’,
‘productName’:‘Remotec ZFM-80’]

Based on this it looks to me like none of the events are firing. If it was I should be seeing the “Relay Found: …” or “Not a relay” lines in the logging output, right?

Looks like I’m also never hitting the “configure”, “on” or “off” functions ever. I’ve put log.debug statements in the first line of all of those functions and I never see those statements get output.

This is what the contents of the description string being passed to the parse function is:

Entered parse function: description: zw device: 0A, command: 2003, payload: FF

configure is only run when the device is first paired.
Updated should execute after the preferences panel is closed.
Turning the switch on and off from the device tile in the app doesn’t generate any log output for the on and off events?
Does activating the switch via its button generate any on off events?

I haven’t coded in 30 years, so while I can understand things when it comes to implementing code I cant do much more then copy/paste and follow directions. It appears to me that you may have tackled the problem I am facing. I have a zwave relay (GoControl Z-Wave Isolated Contact Fixture Module - FS20Z-1) which activates my gate (which uses a garage door opener) I used the virtual momentary contact switch type, but while it works for opening, it stays pressed too long for closing as it starts to close and then reverses to open. I have put it back to a zwave relay and can operate it manually by turning on then quickly off, I was also able to set up a IFTTT rule to turn it off when it is turned on. This workaround is adequate but I thought a custom device handler where I get tweak the delay would be better, but I am lost as to how to code and how to deploy said code.

Yup, a custom device handler would do it, but I don’t have one of these bad boys to test on, nor the time right now to test it anyway.
I’m sure someone’s already solved this for this specific device, also you might want to have a look at rule machine for your ST specific control customizations. Running through IFTTT isn’t required for this mundane task.

I may have figured most of it out. I copied your code into the add device handler and created the new device type. I changed the boolean variable to true for isGD under preferences. It still operates like a switch and upon inspection I see you test to see if it is a remotec. I have no idea where to find the values for manufacturer id etc to replace for it to work with GoControl Z-Wave Isolated Contact Fixture Module - FS20Z-1 which is also labeled as Linear FS20Z-1.

Thanks for your quick reply, I am fairly confident your device handling code will work perfectly, I just need to have it recognize my device as a relay and not reset it to be a zwave switch. not confident enough to remove that section of code… so if you tell me what lines to delete or where I can find the id etc and where to replace I think Ill be all set. Not sure what you mean by rule machine and where I would look at it.

once you publish your new device type, go into my devices in the ide, edit the device and replace the device type with the one you just created, no need to change the type, a switch and a relay support the same commands.

I did that but I believe your code reset the device type to Zwave switch because the manufactureID and Product didnt match what was expected