SmartThings Community

[RELEASE] Fibaro FGBS-001 Universal Binary Sensor (UBS)

Hello, can anyone help me with what I am trying to do please? I managed to add the binary sensor to my hub using this handler. I would like to use it with my intercom, to get a notification when someone rings the intercom (contact 2) and to be able to buzz the door for them (contact 1). I would like to sort out the contact 1 first as that function is more important to me.
In the attached photo, where I am holding the black wire with my hand and making contact with the red one, the intercom is buzzing (the door is kept unlocked) so I would assume the hardware bit works fine, I just need ‘a button’ which would connect these two wires while screwed onto the Fibaro Binary Sensor. When I manually press ‘open’ or ‘close’ in the smartthings app, nothing happens. Also, while I buzz the door using the intercom normally, the is no change in the ‘open/close state’ on contact 1 (although the app notices a connection on contact 1, when having the default handler as ‘z wave device multi-channel’ or something like that). I tried all sorts of different handlers with no success. I am also attaching a scheme of my intercom in case anyone has any suggestions. Thank you!

This is the scheme of my intercom, it did not allow me to upload more than one image in a post

Unfortunately you cannot control the relay outputs on the Binary Sensor. They are purely a passthru from the inputs.

Thank you for your fast reply! Should the contact 2 function work (to get a notification when someone rings the intercom)? Would it be able to change the state from closed to open or something in the app? Do you have any advice how can I achieve what I want with the intercom?

The Binary Sensor will register if someone closes contact 1 or 2 and you could setup a smart app to notify you when this happens. Maybe a push notification, a buzzer or a light. If you want to ‘buzz’ the door then you will need an additional relay to do this. A Fibaro FGS-212 would be fine for this as it has a dry contact.

Great, thank you so much for your help!

@Zoran_Markovic When you close contact one output one closes aswell and opens when you release contact 1. This is the same for contact 2 and output 2. There is no way to stop this from happening or control them in any other way.

So if you want when contact 1 button is pressed for the buzzer to “buzz” and for you to be notified this is possible but you won’t be able to make it buzz on its own.

Anyone had any luck getting the Fibaro UBS working with the new app?

Suggest using the old app to get it setup and paired… I don’t even bother with the new app at all!

That has been my philosophy. However, the new app does seem to be getting there and the UBS is one of the least things I have that doesn’t work with it. I have had the UBS working for a year now on the classic app. All I really need in the new app is for it to display the temp sensors.

If you use the old app to create temperature children then I’m confident that those would appear in the new app…

They appear, they just say offline and if you click on them you get a message saying “A network or server error occurred. Try again later”. Interestingly though I can see the readings showing up in the activity history. See here.

Hi there . just started using you great DTH. When i change to a motion sensor from a contact sensor the motion sensor symbol does not change but it shows in the mobile app (classic) that there is movement. Is it not updating the symbol ? Cheers again.

Are you taking about the child devices or the parent device handler one? The children ones update fine for me

The children one. endpoint 2. works until i change it to a simulated motion sensor then it wont work

bottom one is the log of the parent device . top log of the simulated sensor

Found out the problem . Changed some of the code here…
def zwaveEvent(physicalgraph.zwave.commands.multichannelv3.MultiChannelCmdEncap cmd) {
log.debug “ZWaveEvent V3 {cmd.inspect()}" def result if (cmd.commandClass == 32) { def currentstate def motionstate if (cmd.parameter == [0]) { currentstate = "closed" motionstate = "inactive" } if (cmd.parameter == [255]) { currentstate = "open" motionstate = "active" } log.debug "ep{cmd.sourceEndPoint} is {currentstate}" //First update tile on this device sendEvent(name: "contact{cmd.sourceEndPoint}”, value: currentstate, descriptionText: “device.displayName - ep{cmd.sourceEndPoint} is {currentstate}") //If not null then we have found either ep1 or ep2, hence try to send to the child device aswell try { def childDevice = getChildDevices()?.find { it.deviceNetworkId == "{device.deviceNetworkId}-ep${cmd.sourceEndPoint}”}
if (childDevice)
log.debug “ep${cmd.sourceEndPoint} is {currentstate}" // def motionstate = (currentstate=="closed") ? "active" : "inactive" childDevice.sendEvent(name: "motion", value: motionstate) childDevice.sendEvent(name: "contact", value: currentstate) } catch (e) { log.error "Couldn't find child device, probably doesn't exist...? Error: {e}”
}
This line does not set the state to active /inactive for the motion sensor to change.

def motionstate = (currentstate==“closed”) ? “active” : “inactive”

@vasarbob Can you paste the code with ‘code’ tags (in the screen where you type your message), since that way I can follow what you have changed and where.
Thanks

 def zwaveEvent(physicalgraph.zwave.commands.multichannelv3.MultiChannelCmdEncap cmd) {
    	log.debug "ZWaveEvent V3 ${cmd.inspect()}"
    	def result
    	if (cmd.commandClass == 32) {
            def currentstate
             def motionstate
    		if (cmd.parameter == [0]) {
            	currentstate = "closed"
                motionstate = "inactive"
    		}
    		if (cmd.parameter == [255]) {
            	currentstate = "open"
                motionstate = "active"
    		}
            log.debug "ep${cmd.sourceEndPoint} is ${currentstate}"
            //First update tile on this device
            sendEvent(name: "contact${cmd.sourceEndPoint}", value: currentstate, descriptionText: "$device.displayName - ep${cmd.sourceEndPoint} is ${currentstate}")
    		//If not null then we have found either ep1 or ep2, hence try to send to the child device aswell
            try {
                def childDevice = getChildDevices()?.find { it.deviceNetworkId == "${device.deviceNetworkId}-ep${cmd.sourceEndPoint}"}
                if (childDevice)
                 log.debug "ep${cmd.sourceEndPoint} is ${currentstate}"
                    // def motionstate = (currentstate=="closed") ? "active" : "inactive"
                    childDevice.sendEvent(name: "motion", value: motionstate)
                    childDevice.sendEvent(name: "contact", value: currentstate)
            } catch (e) {
                log.error "Couldn't find child device, probably doesn't exist...? Error: ${e}"
            }

Curious, right you are. I had made some changes in my ST device handler, but had not pushed them to github. Sorry about that and good spot!

Updated code on Github now.