'Aeon HEM V1 Laundry Driver' is NOW working on Hubitat

Take a look in the CONFIGURE() routine... I think you'll figure it out... :wink:

def configure() {
	log.debug "configure()"
    initialize()
	def cmd = delayBetween([
    	//zwave.configurationV1.configurationSet(parameterNumber: 100, size: 4, scaledConfigurationValue:1).format(),	//reset if not 0
        //zwave.configurationV1.configurationSet(parameterNumber: 110, size: 4, scaledConfigurationValue: 1).format(),	//reset if not 0
        
    	zwave.configurationV1.configurationSet(parameterNumber: 1, size: 2, scaledConfigurationValue: 120).format(),		// assumed voltage
		zwave.configurationV1.configurationSet(parameterNumber: 3, size: 1, scaledConfigurationValue: 0).format(),			// Disable (=0) selective reporting
		zwave.configurationV1.configurationSet(parameterNumber: 9, size: 1, scaledConfigurationValue: 10).format(),			// Or by 10% (L1)
      	zwave.configurationV1.configurationSet(parameterNumber: 10, size: 1, scaledConfigurationValue: 10).format(),		// Or by 10% (L2)
		zwave.configurationV1.configurationSet(parameterNumber: 20, size: 1, scaledConfigurationValue: 1).format(),			//usb = 1
		zwave.configurationV1.configurationSet(parameterNumber: 101, size: 4, scaledConfigurationValue: 6912).format(),   	
		zwave.configurationV1.configurationSet(parameterNumber: 111, size: 4, scaledConfigurationValue: 30).format() 		// Every 30 seconds
	], 2000)

	return cmd
}
1 Like

:rofl: so easy!

What did you change??

Check out the last line of code (before the 'return') in the snippet I provided above. You'll see the 30 second value.

I just found that and change it to 10. Thanks Dan.

Perfect!

Just be careful... chatty Z-wave devices are known to bring a z-wave mesh to its knees.

@ogiewon Getting this error. Seems you are possibly familiar from your early experience with this, although it seems to be different. Are you able to offer a suggestion of what I've done that might cause this?

[dev:4509](http://192.168.0.113/logs/past#dev4509)2019-11-12 07:25:04.611 am [error](http://192.168.0.113/device/edit/4509)groovy.lang.MissingPropertyException: No such property: scale for class: hubitat.zwave.commands.meterv4.MeterSupportedGet on line 59 (parse)

Here's the most recent code with my changes which added buttons 3 & 4, but that was quite a while ago, and it's been running with those changes and no error until now. Only other thing I have changed recently is the word "dryer" to "microwave", and the name of the driver for my own use. Prior to that I don't recall seeing any errors.

/*
Custom Laundry monitor device for Aeon HEM V1
  originally written by Mike Maxwell for SmartThings

  modified by Dan Ogorchock to work with Hubitat

  modified by Douglas Krug - Added button 3 and 4 push to indicate washer is running. For washers, this allows cancellation
of rule actions to prevent false notifications with washers having a very tight running wattage range,
and therefore fluctuating between ON and OFF status many times during a wash cycle. This also allows button push 3 and 4
to trigger virtual switches so the status of the each machine can be used with google voice assistant for verbal response.

Changed device from dryer to microwave, and driver name

*/

metadata {
	definition (name: "Aeon HEM V1 Appliance ON/OFF Monitor", namespace:	"logname", author: "Douglas Krug")
	{
		capability "Configuration"
		capability "Switch"
        capability "Button"
        //capability "Energy Meter"
		capability "Actuator"
        capability "Pushable Button"
        capability "Holdable Button"
		capability "Sensor"

        attribute "washerWatts", "string"
        attribute "microwaveWatts", "string"
        attribute "washerState", "string"
        attribute "microwaveState", "string"

		fingerprint deviceId: "0x2101", inClusters: " 0x70,0x31,0x72,0x86,0x32,0x80,0x85,0x60"
	}

	preferences {
       	input name: "washerRW", type: "number", title: "Washer running watts:", description: "", required: true
        input name: "microwaveRW", type: "number", title: "Microwave running watts:", description: "", required: true
    }
}

def parse(String description) {
    //log.trace "Parse received ${description}"
	def result = null
	def cmd = zwave.parse(description, [0x31: 1, 0x32: 1, 0x60: 3])
	if (cmd) {
		result = createEvent(zwaveEvent(cmd))
	}
	if (result) {
		//log.debug "Parse returned ${result?.descriptionText}"
		return result
	} else {
	}
}

def zwaveEvent(hubitat.zwave.commands.multichannelv3.MultiChannelCmdEncap cmd) {
	//log.info "mc3v cmd: ${cmd}"
	if (cmd.commandClass == 50) {
    	def encapsulatedCommand = cmd.encapsulatedCommand([0x30: 1, 0x31: 1])
        if (encapsulatedCommand) {
        	def scale = encapsulatedCommand.scale
        	def value = encapsulatedCommand.scaledMeterValue
            def source = cmd.sourceEndPoint
            def str = ""
            def name = ""
        	if (scale == 2 ){ //watts
            	str = "watts"
                if (source == 1){
                	name = "washerWatts"
                    if (value.toInteger() >= settings.washerRW.toInteger()){
                    	//washer is on
                        //if (state.washerIsRunning == false){
                        if (device.currentValue("washerState") == "off"){
                        	//washer is running
                            sendEvent(name: "pushed", value: "3", descriptionText: "Washer is running.", isStateChange: true)
                        }
                        sendEvent(name: "washerState", value: "on", displayed: true)
                        state.washerIsRunning = true
                    } else {
                    	//washer is off
                        //if (state.washerIsRunning == true){
                        if (device.currentValue("washerState") == "on"){
                        	//button event
                            sendEvent(name: "pushed", value: "1", descriptionText: "Washer has finished.", isStateChange: true)
                        }
                        state.washerIsRunning = false
                        sendEvent(name: "washerState", value: "off", displayed: true)
                    }
                } else {
                	name = "microwaveWatts"
                    if (value.toInteger() >= settings.microwaveRW.toInteger()){
                    	//microwave is on
                        //if (state.microwaveIsRunning == false){
                        if (device.currentValue("microwaveState") == "off"){
                            //microwave is running
                            sendEvent(name: "pushed", value: "4", descriptionText: "Microwave is running.", isStateChange: true)
                        }
                        sendEvent(name: "microwaveState", value: "on", displayed: true)
                        state.microwaveIsRunning = true
                    } else {
                    	//microwave is off
                        //if (state.microwaveIsRunning == true){
                        if (device.currentValue("microwaveState") == "on"){
                        	//button event
                            sendEvent(name: "pushed", value: "2", descriptionText: "Microwave has finished.", isStateChange: true)
                        }
                        state.microwaveIsRunning = false
                        sendEvent(name: "microwaveState", value: "off", displayed: true)
                    }
                }
                if (state.washerIsRunning || state.microwaveIsRunning){
                	sendEvent(name: "switch", value: "on", descriptionText: "Laundry has started...", displayed: true)
                } else {
                	sendEvent(name: "switch", value: "off", displayed: false)
                }
                //log.debug "mc3v- name: ${name}, value: ${value}, unit: ${str}"
            	return [name: name, value: value.toInteger(), unit: str, displayed: false]
            }
        }
    }
}

def zwaveEvent(hubitat.zwave.Command cmd) {
	// Handles all Z-Wave commands we aren't interested in
    //log.debug "Unhandled event ${cmd}"
	[:]
}

def configure() {
	log.debug "configure()"
    initialize()
	def cmd = delayBetween([
    	//zwave.configurationV1.configurationSet(parameterNumber: 100, size: 4, scaledConfigurationValue:1).format(),	//reset if not 0
        //zwave.configurationV1.configurationSet(parameterNumber: 110, size: 4, scaledConfigurationValue: 1).format(),	//reset if not 0

    	zwave.configurationV1.configurationSet(parameterNumber: 1, size: 2, scaledConfigurationValue: 60).format(),		// assumed voltage
		zwave.configurationV1.configurationSet(parameterNumber: 3, size: 1, scaledConfigurationValue: 0).format(),			// Disable (=0) selective reporting
		zwave.configurationV1.configurationSet(parameterNumber: 9, size: 1, scaledConfigurationValue: 10).format(),			// Or by 10% (L1)
      	zwave.configurationV1.configurationSet(parameterNumber: 10, size: 1, scaledConfigurationValue: 10).format(),		// Or by 10% (L2)
		zwave.configurationV1.configurationSet(parameterNumber: 20, size: 1, scaledConfigurationValue: 1).format(),			//usb = 1
		zwave.configurationV1.configurationSet(parameterNumber: 101, size: 4, scaledConfigurationValue: 6912).format(),
		zwave.configurationV1.configurationSet(parameterNumber: 111, size: 4, scaledConfigurationValue: 5).format() 		// Every 30 seconds
	], 2000)

	return cmd
}

def installed() {
	configure()
}

def updated() {
	configure()
}

def initialize() {
	sendEvent(name: "numberOfButtons", value: 4)
}

def push(btnNumber) {
    //log.debug btnNumber
    def desc = bthNumber==1?"Washer has finished":"Microwave has finished"
    sendEvent(name: "pushed", value: btnNumber, descriptionText: desc, isStateChange: true)
}

Sorry, I have no clue about the Z-Wave commands. Those are all original from Mike Maxwell's SmartThings DTH, which I simply ported to Hubitat.

Is there any chance that the errors started recently as a result of a firmware update? My main hub, that runs the Aeon HEM v1, is still running 2.1.5 due to some changes in how the Hampton Bay Fan Controller was changed in 2.1.6. I am waiting for an upcoming fix before upgrading.

1 Like

I'll inquire with @mike.maxwell. Thanks.

No, my main hub is still running 2.1.3.125 ! :wink:

Is anybody else getting this error message?


groovy.lang.MissingPropertyException: No such property: scale for class: hubitat.zwave.commands.meterv5.MeterSupportedGet on line 63 (parse)

I am using what I believe is the latest version (no versioning info in the driver code) Driver header as follows:


Subject to correction, this only started (or well, to be more precise, I only noticed it for the first time) after upgrading to the most current HE version.

Thanks in advance

Edit: Based on the error timestamp, I can assure everybody that nobody was doing laundry! And yet it just happened. This is the most recent occurrence; has happened a few times since doing the upgrade

Do you have the v1 HEM? The driver isn’t for the latest HEM devices.

Yes, v1 HEM. It has been working fine since ST days, then with the modded driver in HE for a very long time.

1 Like

Might be the device. I have had to exclude and rejoin both of mine every so often. Less since adding a repeater.

You might first try just disabling the Z-Wave radio in HE for a minute, then re-enable it. That fixed an unresponsive Z-Wave device for me once before.

My Z-Wave network is rock solid. From day 1 it has lived in 1 location only. It was intially joined to ST, excluded, & then joined to HE. Absolutely no mesh issues.

While I cannot disregard your comment outright (weird things have happened!), the actual error doesn't support this argument.

I post the following from the code in case it may benefit anybody in trying to diagnose this issue:
image

In my earlier post in this thread, I had a weird issue out of blue too. I don’t recall the fix though. It wasn’t software related. I think I ended up just excluding and re-joining the device. But I would try just turning the Z-Wave radio off for at least 10 seconds and turn it back on. It’s easy and won’t cause any issues, but might fix them.

Sure, it is easy enough to do, and will do so in due course. The problem is also of such a nature that it may take days to manifest itself...

Just as an aside, no bearing on the current issue itself:
I am also currently forced (via a RM rule) to reboot my hub at 4AM daily now. I am regrettably one of the many suffering in silence with this issue. I was so happy at one point when I thought that I am being spared this issue, but alas, this was not to be; my issue started after I applied the second to last update. I will call my setup "mature", in that I have not added any new devices in over a year, and only tweak RM rules occasionally, so my issue is NOT a "you keep messing with it" issue. One may ask why I keep updating the firmware if all works... Simple - most folks (including HE staff) will not assist unless you are the latest firmware. I know, I tried.

Why not roll back if you suspect the platform is to blame?

Not a true statement. I am still running 2.1.3.125 on my main hub. I have update in the course of troubleshooting to see if it resolved the issue, and rolled back when it didn’t, but have never been denied support due to my platform version.

1 Like

Respectfully we will have to disagree on the latest version & getting support from HE. My experience was exactly the opposite of yours, where I was 2 revisions behind, started experiencing an issue & was explicitly told to bring it up to the latest revision; if my memory serves me correct I was told the error line numbers (as displayed in my log) no longer match with the latest code.