Aeon Labs key fob remote - advice?

Other posts seem to indicate the people have had success getting the Aeon Labs key fob remote to work as a secondary controller. I am having zero success.

I just want it to control specific switches (GE 45609s), not scenes as I understand that is not functioning on ST, at least yet. I can get the key fob recognized by my ST hub and through the Activity Feed I can see when I press buttons on the Aeon Labs key fob remote. Buttons 1, 2, 3, 4 are all seen by the ST hub when I press them on the remote however I never have the red & green LEDs on the remote blink like the manual says that they should once it is connected to a primary controller.

I have had zero success in actually getting it to control a Z-wave switch.

The Aeon key fob instructions say (I think) that once I put the remote in Group Mode, I should hold down the button I wish to program and the green LED on the remote should begin blinking and I can then proceed with associating the button with a Z-wave switch ‘outcome’. This never happens, the green LED flashes on and off and a minute later it does the same thing. It never controls a switch nor do the links blink the way the manual says that they should wen setting it up for Group Mode control.

If anyone has had success with having the Aeon key fob to control Z-wave light switches in their ST network, I’d really appreciate any advice that you have.

Thanks!
Steve

I think there was a recent Developer Office Hours where the guys were mentioning they were working on getting these remotes working. I would double check with support@smartThings to see if your device is in the pipeline.

The Key Fob Control app in Shared Apps supports use of all 4 buttons on the key fob remote, short & long press. Awesome.

1 Like

Hullo, the default Device Type code for the Aeon Key Fob doesn’t work. It will tell you if the button is pushed/ held in the Activity Feed but it never changes the states of the device. I fixed it and now it does:

metadata {
	// Fixed by Jordan Rejaud
	definition (name: "Working Aeon Key Fob", namespace: "", author: "Jordan Rejaud") {
		capability "Actuator"
		capability "Button"
		capability "Configuration"
		capability "Sensor"
		capability "Battery"

		fingerprint deviceId: "0x0101", inClusters: "0x86,0x72,0x70,0x80,0x84,0x85"
	}

	simulator {
		status "pushed":  "command: 2001, payload: 01"
		status "held":  "command: 2001, payload: 15"
		status "button 2 pushed":  "command: 2001, payload: 29"
		status "button 2 held":  "command: 2001, payload: 3D"
		status "button 3 pushed":  "command: 2001, payload: 51"
		status "button 3 held":  "command: 2001, payload: 65"
		status "button 4 pushed":  "command: 2001, payload: 79"
		status "button 4 held":  "command: 2001, payload: 8D"
		status "wakeup":  "command: 8407, payload: "
	}
	tiles {
		standardTile("button", "device.button", width: 2, height: 2) {
			state "default", label: "", icon: "st.unknown.zwave.remote-controller", backgroundColor: "#ffffff"
			state "pushed", label: "pushed", icon: "st.unknown.zwave.remote-controller", backgroundColor: "#79b821"
			state "held", label: "held", icon: "st.unknown.zwave.remote-controller", backgroundColor: "#ffa81e"
		}
		valueTile("battery", "device.battery", inactiveLabel: false, decoration: "flat") {
			state "battery", label:'${currentValue}% battery', unit:""
		}
		main "button"
		details(["button", "battery"])
	}
}

def parse(String description) {
	def results = []
	if (description.startsWith("Err")) {
	    results = createEvent(descriptionText:description, displayed:true)
	} else {
		def cmd = zwave.parse(description, [0x2B: 1, 0x80: 1, 0x84: 1])
		if(cmd) results += zwaveEvent(cmd)
		if(!results) results = [ descriptionText: cmd, displayed: false ]
	}
	// log.debug("Parsed '$description' to $results")
	return results
}

def zwaveEvent(physicalgraph.zwave.commands.wakeupv1.WakeUpNotification cmd) {
	def results = [createEvent(descriptionText: "$device.displayName woke up", isStateChange: false)]

	def prevBattery = device.currentState("battery")
	if (!prevBattery || (new Date().time - prevBattery.date.time)/60000 >= 60 * 53) {
		results << response(zwave.batteryV1.batteryGet().format())
	}
	results += configurationCmds().collect{ response(it) }
	results << response(zwave.wakeUpV1.wakeUpNoMoreInformation().format())
	return results
}

def buttonEvent(button, held) {
	button = button as Integer
	if (held) {
		createEvent(name: "button", value: "held", data: [buttonNumber: button], descriptionText: "$device.displayName held", isStateChange: true)
	} else {
		createEvent(name: "button", value: "pushed", data: [buttonNumber: button], descriptionText: "$device.displayName pushed", isStateChange: true)
	}
}

def zwaveEvent(physicalgraph.zwave.commands.sceneactivationv1.SceneActivationSet cmd) {
	Integer button = ((cmd.sceneId + 1) / 2) as Integer
	Boolean held = !(cmd.sceneId % 2)
	buttonEvent(button, held)
}

def zwaveEvent(physicalgraph.zwave.commands.batteryv1.BatteryReport cmd) {
	def map = [ name: "battery", unit: "%" ]
	if (cmd.batteryLevel == 0xFF) {
		map.value = 1
		map.descriptionText = "${device.displayName} has a low battery"
	} else {
		map.value = cmd.batteryLevel
	}
	createEvent(map)
}

def zwaveEvent(physicalgraph.zwave.Command cmd) {
	[ descriptionText: "$device.displayName: $cmd", linkText:device.displayName, displayed: false ]
}

def configurationCmds() {
	[ zwave.configurationV1.configurationSet(parameterNumber: 250, scaledConfigurationValue: 1).format(),
	  zwave.associationV1.associationSet(groupingIdentifier:1, nodeId:zwaveHubNodeId).format() ]
}

def configure() {
	def cmd = configurationCmds()
	log.debug("Sending configuration: $cmd")
	return cmd
}
1 Like

Does anyone know if the default device type has been updated to reflect your change (I don’t know how to check)? If I want to use it for the Aeon Key Fob I need to remove the fob from the hub and reconnect using the new custom device type, right?

Thank you!

1 Like