Aeon micro switch delays

Hello,

I just purchased my first couple of z wave devices to use with my smartthings hub that I got last month. As my fiancé is not a fan of décor style switches I opted for the aeon micro switches to keep our toggle switches.

So the setup is as follows. In our living room we have a 4 way switch that controlled the overhead light, that light is gone and replaced with a light less fan. I unhooked one of the 4 way switches to make it a 3way, and instead of hooking the fan to those I hardwired power to the fan, on the 3 way I attached the aeon g2. So now we have 2 switches that activate the micro controller only.

In this room is also a switched outlet with a lamp. I installed a second aeon g2 in that circuit also.

Both aeons are wired so that the switches do not have any electricity to them.

I also added a ge/jasco zwave outlet to control another light behind the couch.

So the plan was to use a smart app called wireless 3 way to control both outlets from all of the switches, and it worked, technically… But I have since changed it so the 3 way switch controls the jasco and the other lamp just goes on its own. And here is what I’ve found.

So, when turning on the single switch, the lamp flashes to life before going through a ramp up dimmer, not really any delay to speak of. When turning this one off however, there is about a 3 or 4 second delay from flipping the switch to the ramp down dimmer. Very frustrating, and makes me regret buying them. Is this normal for these? FYI this happens when switching off via zwave too.

Now the 3 way switch is worse off. It is still using the wireless 3way app. When you flip the switch on (physically or in app) it can take up to 10 sec for it to flip on the jasco. Same with off, plus that same off delay from the micro switch… Is this delay the best z wave can offer?

I think I need to rely on copper for in room switching and use z wave for other automation tasks… Though if it is this much delay, how would switching based on motion work??? I’d be in and out before the light came on…

I swapped out the cfl bulb for a standard incandescent. The delayed shutoff appears to have been a ramp down. It works much better. There are still long delays from activating one switch and having the others turn on, and that is frustrating. Any thing I can try?

I don’t think you can do anything about it. There’s an inherent latency in the system (and having the smarts in the cloud doesn’t help either).

hmm, that is a little disappointing. Obviously there is going to be some lag between devices, is there no way i can increase the frequency of polling on device status?

The devices are quick to come on when they get triggered, the delay seems to only be in the hub reading when a switch is activated.

I just purchased and installed a couple of these. Activating the switch from the Smartthings app is instant, however when controlling via a switch, there is a delay of approximately 20 seconds. There is a MiCassaverde forum post that references setting “parameter 80” to alleviate this… How can I do this via SmartThings?

I had same issue. Use the physical button on the micro to change this parameter. Hold it down for 6-8 seconds until it flashes. There are 3 settings (0, 1, 2). Changing it to 1 (and maybe 2) will make it instant.

Also - you could set up a new device type based on the aeon illumination module and add 1 line of code to the configure function that modifies any parameter you want.

@infofiend Do you have any documentation that points to what parameter pushing the physical button sets? I have only come across parameter 80, which I have set to 1 ( for supposedly instant updates". This does not help.

Some of the parameters (I say “some” because I found reference to others on the micasaverde web site, but didn’t bookmark those pages) can be found at:

  • Micro:

http://www.pepper1.net/zwavedb/uploads/resources/1f5c804cf92d4797dda2d142a452035ba0aefe99.pdf

- Micro G2 Dimmer:

http://ozw.my-ho.st/Aeon/Engineering%20Spec%20-%20Aeon%20Labs%20Micro%20Smart%20Dimmer%20(2nd%20Edition).pdf

I am not positive that I understand what most of these parameters do, but I’m thinking parameters 110-113 would make a difference in reducing the lag.

I am currently attempting to build a new custom smartdevice that gives user the ability to change the parameters of the G2 dimmer switch. The G2 specs doc lists the command classes / libraries used, but I’m not as comfortable with writing a smartdevice as I am with writing a smartapp.

I’d certainly welcome any support (from you or any of the smartdevice gurus that I see on this forum).

Hope this helps,
-Tony

I have developed this device type, which reports within a second, unfortunately the hue light I control off of the switch takes 3 seconds to dim on or off

 metadata {
	// Automatically generated. Make future change here.
	definition (name: "GG - Aeon Micro Switch", namespace: "ggrouwstra", author: "Garrette Grouwstra") {
		capability "Energy Meter"
		capability "Actuator"
		capability "Switch"
		capability "Polling"
		capability "Refresh"
		capability "Sensor"
        capability "Power Meter"
		
		command "reset"

		fingerprint deviceId: "0x1001", inClusters: "0x25,0x32,0x27,0x2C,0x2B,0x70,0x85,0x56,0x72,0x86", outClusters: "0x82"
	}

	// simulator metadata
	simulator {
		status "on":  "command: 2003, payload: FF"
		status "off": "command: 2003, payload: 00"
for (int i = 0; i <= 10000; i += 1000) {
			status "power  ${i} W": new physicalgraph.zwave.Zwave().meterV1.meterReport(
				scaledMeterValue: i, precision: 3, meterType: 4, scale: 2, size: 4).incomingMessage()
		}
		for (int i = 0; i <= 100; i += 10) {
			status "energy  ${i} kWh": new physicalgraph.zwave.Zwave().meterV1.meterReport(
				scaledMeterValue: i, precision: 3, meterType: 0, scale: 0, size: 4).incomingMessage()
		}

		// reply messages
		reply "2001FF,delay 100,2502": "command: 2503, payload: FF"
		reply "200100,delay 100,2502": "command: 2503, payload: 00"

	}

	// tile definitions
	tiles {
		standardTile("switch", "device.switch", width: 2, height: 2, canChangeIcon: true) {
			state "on", label: '${name}', action: "switch.off", icon: "st.switches.switch.on", backgroundColor: "#79b821"
			state "off", label: '${name}', action: "switch.on", icon: "st.switches.switch.off", backgroundColor: "#ffffff"
		}
		valueTile("power", "device.power", decoration: "flat") {
			state "default", label:'${currentValue} W'
		}
		valueTile("energy", "device.energy", decoration: "flat") {
			state "default", label:'${currentValue} kWh1'
		}
		standardTile("reset", "device.energy", inactiveLabel: false, decoration: "flat") {
			state "default", label:'reset kWh', action:"reset"
		}
		standardTile("configure", "device.power", inactiveLabel: false, decoration: "flat") {
			state "configure", label:'', action:"configuration.configure", icon:"st.secondary.configure"
		}
		standardTile("refresh", "device.power", inactiveLabel: false, decoration: "flat") {
			state "default", label:'', action:"refresh.refresh", icon:"st.secondary.refresh"
		}

		main "switch"
		details(["switch","power","energy","reset","configure","refresh"])
	}
}

def parse(String description) {
	def result = null
	def cmd = zwave.parse(description, [0x20: 1, 0x32: 1])
	if (cmd) {
		log.debug cmd
		result = createEvent(zwaveEvent(cmd))
	}
	return result
}


def zwaveEvent(physicalgraph.zwave.commands.meterv2.MeterReport cmd) {
	if (cmd.scale == 0) {
		[name: "energy", value: cmd.scaledMeterValue, unit: "kWh"]
	} else if (cmd.scale == 1) {
		[name: "energy", value: cmd.scaledMeterValue, unit: "kVAh"]
	}
	else {
    	[ name: "power", value: Math.round(cmd.scaledMeterValue), unit: "W" ]
    }

}
def zwaveEvent(physicalgraph.zwave.commands.meterv3.MeterReport cmd) {
        def map = null
        if (cmd.meterType == 1) {
                if (cmd.scale == 0) {
                        map = [name: "energy", value: cmd.scaledMeterValue, unit: "kWh"]
                } else if (cmd.scale == 1) {
                        map = [name: "energy", value: cmd.scaledMeterValue, unit: "kVAh"]
                } else if (cmd.scale == 2) {
                        map = [name: "power", value: cmd.scaledMeterValue, unit: "W"]
                } else {
                        map = [name: "electric", value: cmd.scaledMeterValue]
                        map.unit = ["pulses", "V", "A", "R/Z", ""][cmd.scale - 3]
                }
        } else if (cmd.meterType == 2) {
                map = [name: "gas", value: cmd.scaledMeterValue]
                map.unit =      ["m^3", "ft^3", "", "pulses", ""][cmd.scale]
        } else if (cmd.meterType == 3) {
                map = [name: "water", value: cmd.scaledMeterValue]
                map.unit = ["m^3", "ft^3", "gal"][cmd.scale]
        }
        if (map) {
                if (cmd.previousMeterValue && cmd.previousMeterValue != cmd.meterValue) {
                        map.descriptionText = "${device.displayName} ${map.name} is ${map.value} ${map.unit}, previous: ${cmd.scaledPreviousMeterValue}"
                }
                createEvent(map)
        } else {
                null
        }
}

def zwaveEvent(physicalgraph.zwave.commands.basicv1.BasicReport cmd)
{
	[
		name: "switch", value: cmd.value ? "on" : "off", type: "physical"
	]
}
def zwaveEvent(physicalgraph.zwave.commands.meterv1.MeterReport cmd) {
	def map = []

	if (cmd.scale == 0) {
    	map = [ name: "energy", value: cmd.scaledMeterValue, unit: "kWh" ]
    }
    else if (cmd.scale == 2) {
    	map = [ name: "power", value: Math.round(cmd.scaledMeterValue), unit: "W" ]
    }

    map
}

def zwaveEvent(int endPoint, physicalgraph.zwave.commands.meterv1.MeterReport cmd) {
	// MeterReport(deltaTime: 1368, meterType: 1, meterValue: [0, 3, 29, 17], precision: 3, previousMeterValue: [0, 3, 29, 17], rateType: 1, reserved02: false, scale: 0, scaledMeterValue: 204.049, scaledPreviousMeterValue: 204.049, size: 4)
	 log.debug "EndPoint $endPoint, MeterReport $cmd"
    def map = []

    if (cmd.scale == 0) {
    	map = [ name: "energy" + endPoint, value: cmd.scaledMeterValue, unit: "kWh" ]
    }
    else if (cmd.scale == 2) {
    	map = [ name: "power" + endPoint, value: Math.round(cmd.scaledMeterValue), unit: "W" ]
    }

    map
}

def zwaveEvent(physicalgraph.zwave.commands.switchbinaryv1.SwitchBinaryReport cmd)
{
	[
		name: "switch", value: cmd.value ? "on" : "off", type: "digital"
	]
}
def zwaveEvent(physicalgraph.zwave.commands.configurationv1.ConfigurationReport cmd) {
	log.debug "Configuration Report for parameter ${cmd.parameterNumber}: Value is ${cmd.configurationValue}, Size is ${cmd.size}"
}
def zwaveEvent(physicalgraph.zwave.Command cmd) {
	// Handles all Z-Wave commands we aren't interested in
	[:]
    log.debug "Capture All $cmd"
}

def on() {
	delayBetween([
		zwave.basicV1.basicSet(value: 0xFF).format(),
		zwave.switchBinaryV1.switchBinaryGet().format()
	])
}

def off() {
	delayBetween([
		zwave.basicV1.basicSet(value: 0x00).format(),
		zwave.switchBinaryV1.switchBinaryGet().format()
	])
}

def poll() {
	delayBetween([
		zwave.switchBinaryV1.switchBinaryGet().format(),
		zwave.meterV2.meterGet().format(),
        zwave.meterV2.meterGet(scale:0).format(),
		zwave.meterV2.meterGet(scale:2).format()
	])
}

def refresh() {
	delayBetween([
                zwave.switchBinaryV1.switchBinaryGet().format(),
                zwave.meterV2.meterGet().format(),
                zwave.meterV2.meterGet(scale: 0).format(),      // get kWh
                zwave.meterV2.meterGet(scale: 2).format(),  // Get Watts
                zwave.basicV1.basicGet().format(),
				zwave.switchBinaryV1.switchBinaryGet().format(),

        ], 1200)
}

def reset() {
	return [
		zwave.meterV2.meterReset().format(),
		zwave.meterV2.meterGet().format()
	]
}

def configure() {
log.debug "Seting Configuration to switch"
	delayBetween([
        zwave.configurationV1.configurationSet(configurationValue: [1], parameterNumber: 3, size: 1).format(),   // Current Overload Protection
		zwave.configurationV1.configurationSet(parameterNumber: 101, size: 4, scaledConfigurationValue: 4).format(),   // combined power in watts
		zwave.configurationV1.configurationSet(parameterNumber: 102, size: 4, scaledConfigurationValue: 8).format(),   // combined energy in kWh
		zwave.configurationV1.configurationSet(parameterNumber: 111, size: 4, scaledConfigurationValue: 2).format(), // every 2 sec
		zwave.configurationV1.configurationSet(parameterNumber: 112, size: 4, scaledConfigurationValue: 120).format(), // every 2 min
        zwave.configurationV1.configurationSet(parameterNumber: 113, size: 4, scaledConfigurationValue: 120).format(), // every 2 min
		zwave.configurationV1.configurationSet(parameterNumber: 102, size: 4, scaledConfigurationValue: 0).format(),
		zwave.configurationV1.configurationSet(parameterNumber: 103, size: 4, scaledConfigurationValue: 0).format(),    // no third report
        zwave.configurationV1.configurationSet(parameterNumber: 80, size: 1, scaledConfigurationValue: 2).format(),   // Instant reporting
		zwave.configurationV1.configurationSet(parameterNumber: 113, size: 4, scaledConfigurationValue: 300).format() // every 5 min
        
        
	])
    def result = zwave.configurationV1.configurationGet(parameterNumber: 80).format()
    log.debug "Parameter 80 $result"
}

GG-

You da man. I’ll try it out.

Q1: does your device report kwh?
Q2: is there any way I could speak to you about how you took the parameters / other info and created this?

Thanks,
-t

@infofiend My devices DO report KWh.

Feel free to send me a PM

I tried this code but why doesn’t it show an update in the app or on my dashboard when I use the wired switch to the micro controller. I have to tap refresh to get it to show a change in state.

I have my own non energy versions of these, if you care to try them out.


sweet this works. Doesn’t look like there is an energy monitoring function but at least the switch is quick to update.

Thanks

Yea, I don’t own the energy ones, so nothing to test with…

This code is for SmartApps or devices ?

These are devices.
If you want to use these, create a new device in the IDE in my device types, new device, from code, paste in the code, publish for me.
Then go to the actual device in my devices, click the device, then edit (at the bottom), then select the new device type from the list.
You may have to logoff and restart the app for the new device tiles to refresh properly.

1 Like

Hi, I am using your device type,
but I can only turn on the switch, it doesn’t turn off.

Do you have any idea how can I fix it?

Thanks!