[OBSOLETE] Battery Operated 3 Toggle Switch for wallmount or table top use (SmartenIT ZBWS3B) [DEPRECATED: STOPPED WORKING IN 2018]

Did the three toggle show up in your things list?

The way you phrased your original question I thought you were talking about something else.

You don’t need to “publish” any smart app which is listed in the marketplace section. These have already been published by SmartThings. So when you choose a smart app from the marketplace, you go immediately into its set up wizard, there’s no publication step.

The error you’re seeing is because for whatever reason it’s not finding a button controller in your things list. So it’s not letting you complete the set up rather than not letting you publish it.

That means the problem is with the join or the device type handler, not the smart app. So it’s in one of the earlier steps.

I will maybe restart and try it from the beginning once more. And I hope you didn’t insinuate that I meant you should have understood my phrasing originally. I meant no offense. The error confused me and so I thought you had meant I needed to install the smart app through the IDE as a work around.

I’ll keep playing with it. Seriously thank you for giving me any of your time, you’ve been more than kind!

1 Like

No problem, that kind of miscommunication happens all the time. :sunglasses:

You may need to reset the device to factory specs before you start again. Instruction should be in the user guide that came with it.

Thanks for understanding.

I reset deleted everything through the IDE and then reset the switch to factory. Went through the process two more times. Still getting that same error when installing the smart app. It’s so strange. Do you happen to have any other suggestions?

Before even going to install the smart app, make sure that the device is showing up in your things list. Is it?

If it does show up in your things list, then check to see if the smartlighting feature recognizes it as a button controller.

Yes it is showing up as a thing. It even shows the 3 circuits as open or closed. But the Smartlighting does not see it as a switch either.

It won’t show up as a switch in smart lighting. ( neither does a minimote.)The question is whether it will show up as a button controller.

In smartlighting, pick a light that you want to have come on.

Then in the next step where you say how you want the light to be controlled, say button press.

That should then let you select from a list of button controllers, including the three toggle.

This is what I get. So I guess it’s just seeing the “Thing” as something complete different. Even though hone I press the remotes buttons the app shows then being pressed in real time.

Weird huh?!

That’s definitely weird.

Do you happen to have a minimote? (That’s the only button controller that’s officially supported)

Otherwise you’re going to need somebody to look at the button controller device type handler and I can’t do that because I rely on text to speech so I can’t read the code.

I do not. But if it will help I can order it.

First let’s see if we can get somebody to look at the code. Can you go ahead and post here exactly the code that you copied into the device type handler?

Sure thing. But it’s already a copy from what was suggested in the tutorial you put together for everyone.

metadata {
definition (name: “3 Button ZigBee Toggle (ZBWS3)”, namespace: “JohnRucker”, author: "John.Rucker@Solar-Current.com") {
capability "Sensor"
capability "Configuration"
capability “Contact Sensor”

    attribute "contact2","ENUM",["open","closed"]
    attribute "contact3","ENUM",["open","closed"]        

	fingerprint endpointId: "03", profileId: "0104", deviceId: "0000", deviceVersion: "00", inClusters: "03 0000 0003 0007", outClusters: "01 0006"

}

// simulator metadata
simulator {
}

// UI tile definitions
tiles {
    
    standardTile("contact1", "device.contact", width: 1, height: 1) {
		state("open", label:'${name}', icon:"st.contact.contact.open", backgroundColor:"#ffa81e")
		state("closed", label:'${name}', icon:"st.contact.contact.closed", backgroundColor:"#79b821")
	}
    
    standardTile("contact2", "device.contact2", width: 1, height: 1) {
		state("open", label:'${name}', icon:"st.contact.contact.open", backgroundColor:"#ffa81e")
		state("closed", label:'${name}', icon:"st.contact.contact.closed", backgroundColor:"#79b821")
	}        

    standardTile("contact3", "device.contact3", width: 1, height: 1) {
		state("open", label:'${name}', icon:"st.contact.contact.open", backgroundColor:"#ffa81e")
		state("closed", label:'${name}', icon:"st.contact.contact.closed", backgroundColor:"#79b821")
	}
    
main (["contact3", "contact2", "contact1"])
details (["contact3", "contact2", "contact1"])
}

}

// Parse incoming device messages to generate events
def parse(String description) {
log.debug "Parse description $description"
def name = null
def value = null
if (description?.startsWith(“catchall: 0104 0006 01”)) {
name = "contact"
def currentST = device.currentState(“contact”)?.value
log.debug "Button 1 pushed, current state = $currentST"
if (currentST == “closed”){
log.debug "Changed to Open"
value = “open”
}
else {
log.debug "Changed to Closed"
value = “closed”
}

} else if (description?.startsWith("catchall: 0104 0006 02")) {
	name = "contact2"
	def currentST = device.currentState("contact2")?.value
	log.debug "Button 2 pushed, current state = $currentST"        
    if (currentST == "closed"){
    	log.debug "Changed to Open"
    	value = "open"
    } 
    else {
    	log.debug "Changed to Closed"
    	value = "closed"
    }   

} else if (description?.startsWith("catchall: 0104 0006 03")) {
	name = "contact3"
	def currentST = device.currentState("contact3")?.value
	log.debug "Button 3 pushed, current state = $currentST"        
    if (currentST == "closed"){
    	log.debug "Changed to Open"
    	value = "open"
    } 
    else {
    	log.debug "Changed to Closed"
    	value = "closed"
    }   
} 

def result = createEvent(name: name, value: value)
log.debug "Parse returned ${result?.descriptionText}"
return result

}

def parseDescriptionAsMap(description) {
(description - “read attr - “).split(”,”).inject([:]) { map, param ->
def nameAndValue = param.split(":")
map += [(nameAndValue[0].trim()):nameAndValue[1].trim()]
}
}

private getFPoint(String FPointHex){ // Parsh out hex string from Value: 4089999a
Long i = Long.parseLong(FPointHex, 16) // Convert Hex String to Long
Float f = Float.intBitsToFloat(i.intValue()) // Convert IEEE 754 Single-Precison floating point
log.debug "converted floating point value: ${f}"
def result = f

return result

}

// Commands to device

def configure() {
log.debug "Binding SEP 0x01 DEP 0x01 Cluster 0x0006 On/Off cluster to hub"
def configCmds = [

    "zdo bind 0x${device.deviceNetworkId} 0x01 0x01 0x0006 {${device.zigbeeId}} {}", "delay 500",
    "zdo bind 0x${device.deviceNetworkId} 0x02 0x01 0x0006 {${device.zigbeeId}} {}", "delay 500",        
    "zdo bind 0x${device.deviceNetworkId} 0x03 0x01 0x0006 {${device.zigbeeId}} {}", "delay 1500",        
	]
log.info "Sending ZigBee Bind commands to 3 Button Switch"
return configCmds
}

Ah ha!

I can’t read all of the code, but it looks like you’re using one written by John Rucker. The one that I mention in the first post up above was written by Gilbert Chan. It’s in post 45 of the thread that I link to.

So I think maybe you copied a different one? The only one I’ve tested is Gilbert’s. I’m not sure John’s was ever intended to act as a button controller. :sunglasses:

Oh My God!! I have switchable lights!!! I CANNOT thank you enough. You dedicated so much time to help someone you haven’t even met. It’s working perfectly and I’m so excited. I’m pretty sure my girlfriend was going to leave me if I couldn’t figure out a way for her to turn on a light without having to use her phone in my home.

Seriously thank you so much. It’s kind of crazy ST doesn’t have something like this officially supported. I have an older home with no switchable lighting.

I used to be a Revolv user and had my home completely fragmented between Z-Wave and Insteon and Insteon has a battery remote that works with their switches and outlets but I still wanted to go with Smart Things since they are so supported.

Thank you once more, i hope you have a wonderful rest of your evening!

1 Like

In the last 2 weeks, I’ve noticed my Smartenit switch would sometimes stop working for no reason. And when I press the buttons, sometimes, the LED flashes 5 times. Not exactly what’s the problem. I had to remove and add to get it to work again and even then, it’s intermittently failing.

Anyone else having an issue with this or am I the only one? It was so great for the first few months, but now it’s a crapshoot whether it works or not. It seems to especially prone to failure at night.

Hey is this still happening for you ? Did you find a fix ?

Wonder if this is still the best option

I think I made my post in November during a period of particular instability for SmartThings on the cloud backend, because after a few days, almost all of the intermittent failures largely subsided. I still get occasional failures, but they’re not happening often enough for it to be an issue (maybe once in the last month when I was shutting off the lights for the night, and that was fixed by the next morning, when I woke up).

2 Likes

Curious if there is an app like button controller that lets you set the level and colour of the lights.

The smart lighting standard app lets me do this but I can only control button 1. I can’t select button 2 or 3.

About a month ago smart lighting was changed and now requires that “numberofbuttons” be set in the device type handler, otherwise it assumes there is just one. So you would need to add that code to whichever device type handler you are using.

ah right. it looks lke the DTH (https://github.com/obycode/smartthings-smartapps/blob/master/VirtualButtons/SmartenIt-ZBWS3B.groovy) was updated with numbuttons might not be done right based on the change.

I looked at the template for the minimote but can’t convert that to work on this one. hopefully the author of the DT can update it.