Device Refresh State

Very strange. I would definitely talk to support.

Yet another Ticket submitted. Thanks for everyone’s input.

specifically regarding the aeons, from the factory they are set to not report, ST doesn’t apply the correct parameter settings to change this function as they are capable of instant reporting, I wrote custom DTH’s for them that enables them to report status changes from the physical device.

That would be something I would be interested in. Care to share your device handler?

here’s the combo unit I use with the aeon dual for bath/fan combos


metadata {
	definition (name: "aeonDualSwitchForBath", namespace: "MikeMaxwell", author: "mike maxwell") {
		capability "Switch"
		capability "Actuator"
		capability "Sensor"
        capability "thermostatFanMode"
		command "fanOn" 
		command "fanOff"
 		attribute "fan", "enum", ["on", "off"]
        
		fingerprint deviceId: "0x1001", inClusters: "0x25,0x31,0x32,0x27,0x70,0x85,0x72,0x86,0x60,0xEF,0x82" , outClusters: "0x82"
	}
	preferences {
       	input name: "param80", type: "enum", title: "State change notice:", description: "Type", required: true, options:["Off","Hail","Report"]
        input name: "param120", type: "enum", title: "Set trigger mode:", description: "Switch type", required: true, options:["Momentary","Toggle","Three Way"]
    }
	// tile definitions
	tiles {
        standardTile("switch", "device.switch", width: 2, height: 2, canChangeIcon: true) {
				state "on",label: "On", action: "switch.off", icon: "st.samsung.da.RC_ic_power", backgroundColor:"#53a7c0"
                state "off",label: "Off", action: "switch.on", icon: "st.samsung.da.RC_ic_power", backgroundColor:"#ffffff"
		}
        standardTile("fan", "fan", canChangeIcon: false, decoration: "flat") {
				state "on", action: "fanOff",icon: "st.thermostat.fan-on"
				state "off", action: "fanOn",icon: "st.thermostat.fan-off"
		}
		main(["switch"])
		details(["switch","fan","refresh"])
	}
}


// parse events into attributes
def parse(String description) {
   //log.debug "Parsing:${description}"

    def result = null
    def cmd = zwave.parse(description, [0x60:3, 0x25:1, 0x70:1, 0x72:1])
    if (cmd) {
        result = createEvent(zwaveEvent(cmd))
    }

    return result
}

def zwaveEvent(physicalgraph.zwave.Command cmd) {
	// Handles all Z-Wave commands we aren't interested in or don't know about
    //log.debug "udf:${cmd.inspect()}"
	return [:]
}

def zwaveEvent(physicalgraph.zwave.commands.multichannelv3.MultiChannelCmdEncap cmd) {
	def ep = cmd.sourceEndPoint
    //log.debug "multiReport${cmd.inspect()}"
    def map = [:]
    if (cmd.commandClass == 32){
    	//map << [ name: "switch${ep}" ]
		if (ep == 1) {
        	map << [ name: "switch" ]
        } else {
        	map << [ name: "fan" ]
        }
        
        if (cmd.parameter == [0]) {
         	map.value = "off"
        }
        if (cmd.parameter == [255]) {
            map.value = "on"
        }
    }
    //log.info "map:${map}"
	return map
}

def on(){
	zwave.multiChannelV3.multiChannelCmdEncap(destinationEndPoint:1, commandClass:37, command:1, parameter:[255]).format()
}
def off(){
	zwave.multiChannelV3.multiChannelCmdEncap(destinationEndPoint:1, commandClass:37, command:1, parameter:[0]).format()
}
def on1() {
	zwave.multiChannelV3.multiChannelCmdEncap(destinationEndPoint:1, commandClass:37, command:1, parameter:[255]).format()
}
def off1() {
	zwave.multiChannelV3.multiChannelCmdEncap(destinationEndPoint:1, commandClass:37, command:1, parameter:[0]).format()
}
def fanOn() {
	zwave.multiChannelV3.multiChannelCmdEncap(destinationEndPoint:2, commandClass:37, command:1, parameter:[255]).format()
}

def fanOff() {
	zwave.multiChannelV3.multiChannelCmdEncap(destinationEndPoint:2, commandClass:37, command:1, parameter:[0]).format()
}

def refresh() {
	delayBetween([
		zwave.multiChannelV3.multiChannelCmdEncap(destinationEndPoint:1, commandClass:37, command:2).format(),
    	zwave.multiChannelV3.multiChannelCmdEncap(destinationEndPoint:2, commandClass:37, command:2).format()
	],500)
}

//capture preference changes
def updated() {
    //log.debug "before settings: ${settings.inspect()}, state: ${state.inspect()}" 
    
    //get requested reporting preferences
    Short p80
    switch (settings.param80) {
		case "Off":
			p80 = 0
            break
		case "Hail":
			p80 = 1
            break
		default:
			p80 = 2	//Report
            break
	}    
    
	//get requested switch function preferences
    Short p120
    switch (settings.param120) {
		case "Momentary":
			p120 = 0
            break
		case "Three Way":
			p120 = 2
            break
		default:
			p120 = 1	//Toggle
            break
	}    
  
	//update if the settings were changed
    if (p80 != state.param80)	{
    	//log.debug "update 80:${p80}"
        state.param80 = p80 
        return response(zwave.configurationV1.configurationSet(parameterNumber: 80, size: 1, configurationValue: [p80]).format())
    }
	if (p120 != state.param120)	{
    	//log.debug "update 120:${p120}"
        state.param120 = p120
        return response(zwave.configurationV1.configurationSet(parameterNumber: 120, size: 1, configurationValue: [p120]).format())
    }

	//log.debug "after settings: ${settings.inspect()}, state: ${state.inspect()}"
}

Thank you very much. It will help solve the Aeon problems.

I have others for the single dimmer and switch, though the config params and related sections are the same.

I wanted to report back on a discovery that fixed my problem with status update.

Apparently a phantom device creeped into my setup without my knowledge. SmartThings support found it and renamed it so I could find and delete it. Once it was removed all the switches I reported here are now working again, including the Aeons. My hat is off for Supports quick and accurate diagnosis.

1 Like

Oh those damn orphaned devices


You aren’t kidding. Where do they come from? Are we supposed to scour over our devices checking for anomalies? Granted I only have about 50 devices but its easy to overlook something that seems to blend in.

At least support spotted it for which I am grateful.

We have no way to find them, unfortunately.

The way I have found them is to run a zwave repair. They will fail (obviously) and the failure will show up with adv address that doesn’t match any of my devices.

Then I send an email to support.

Well deleting the Ghost device that SmartThings Support found got my zwave devices back to reporting their status when manually controlled but now a day later the same devices I had problems with are back to not reporting. This is so very frustrating. Got another email into support. Will report back when I have something to report.

EDIT: Did a zwave repair and yet another phantom device has showed up! WHAT THE HECK IS GOING ON?

I figured out how to fix this on my own. I don’t know what causes it but for some reason a phantom device has showed up on my system twice in the past several days. Tech support found the first one and made a device out of it so I could delete it. A day later it showed back up again, same device number.

All that you need to do is
Login to the IDE
Go to the Hub utilities
Run a zwave repair
Use the hub log to find the device that failed
Create a device using the ID number that was reported in the log.
Assign the device type to a virtual switch
Reboot the hub (in my case it looked like the hub automatically removed it)
If the hub doesn’t get rid of it, go back into the device page and delete the device you created.
Run another zwave repair and you should no longer see the error.
<img src="//cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/smartthings/original/3X/a/3/a34cadba17ac044f1f3fc18c36d123e81ae24444.jpg" width=“690”

height=“103”>

1 Like

Outstanding that you figured that out. I was actually going to point you in that direction next. Gotta go through the steps to make sure there aren’t other problems.

Great job!

1 Like

Hi, would you be willing to share the code you wrote for the GE dimmer? Many thanks!
Leon