I am assuming you are using the same DH I am. The top of the DH code contains
/*
- Aeon HEM Gen5(zwave plus) - original unmodified version
-
- Copyright 2016 Dillon A. Miller
-
- v0.8 of Aeon HEM Gen5(zwave plus) code, released 04/15/2016 for Aeotec Model zw095-a
- This Gen5 device handler is not backward compatible with the Aeon V1 or V2 device. If your model number is not zw095-a, don’t use it.
*/
If so, replace the original def zwaveEvent(physicalgraph.zwave.commands.meterv3.MeterReport cmd) and def zwaveEvent(physicalgraph.zwave.commands.multichannelv3.MultiChannelCmdEncap cmd) functions with the two below. Note that I have added an attribute called divFactor . It divides all the double redings I was getting by… you guessed… 2 
def zwaveEvent(physicalgraph.zwave.commands.meterv3.MeterReport cmd) {
def divFactor=2
def newValue
def meterTypes = ["Unknown", "Electric", "Gas", "Water"]
def electricNames = ["energy", "energy", "power", "count", "voltage", "current", "powerFactor", "unknown"]
def electricUnits = ["kWh", "kVAh", "W", "pulses", "V", "A", "Power Factor", ""]
//NOTE ScaledPreviousMeterValue does not always contain a value
def previousValue = cmd.scaledPreviousMeterValue ?: 0
//Here is where all HEM polled values are defined. Scale(0-7) is in reference to the Aeon Labs HEM Gen5 data for kWh, kVAh, W, V, A, and M.S.T. respectively.
//If scale 7 (M.S.T.) is polled, you would receive Scale2(0-1) which is kVar, and kVarh respectively. We are ignoring the Scale2 ranges in this device handler.
def map = [ name: electricNames[cmd.scale], unit: electricUnits[cmd.scale], displayed: state.display]
switch(cmd.scale) {
case 0: //kWh
previousValue = device.currentValue("energy") ?: cmd.scaledPreviousMeterValue ?: 0
log.trace "Previous KWh = $previousValue"
BigDecimal costDecimal = (cmd.scaledMeterValue * (kWhCost as BigDecimal)) / divFactor
def costDisplay = String.format("%5.2f",costDecimal)
sendEvent(name: "cost", value: costDisplay, unit: "", descriptionText: "Display Cost: \$${costDisp}")
newValue = Math.round(cmd.scaledMeterValue * 100 / divFactor) / 100
map.value = newValue
log.trace "Current KWh ${newValue}"
break;
case 1: //kVAh (not used in the U.S.)
map.value = cmd.scaledMeterValue
break;
case 2: //Watts
previousValue = device.currentValue("power") ?: cmd.scaledPreviousMeterValue ?: 0
map.value = Math.round(cmd.scaledMeterValue / divFactor)
log.trace "Total Watts: ${cmd.scaledMeterValue/ divFactor}"
break;
case 3: //pulses
map.value = Math.round(cmd.scaledMeterValue/ divFactor)
// log.trace "No idea1: ${cmd.scaledMeterValue}"
break;
case 4: //Volts
previousValue = device.currentValue("voltage") ?: cmd.scaledPreviousMeterValue ?: 0
newValue = Math.round(cmd.scaledMeterValue * 100) / 100
map.value = newValue
// log.trace "Voltage: ${cmd.scaledMeterValue}"
break;
case 5: //Amps
previousValue = device.currentValue("current") ?: cmd.scaledPreviousMeterValue ?: 0
newValue = Math.round(cmd.scaledMeterValue * 100 / divFactor) / 100
map.value = newValue
// log.trace "Total Amps: ${cmd.scaledMeterValue}"
break;
case 6: //Power Factor
case 7: //Scale2 values (not currently implimented or needed)
map.value = cmd.scaledMeterValue / divFactor
break;
default:
break;
}
createEvent(map)
}
def zwaveEvent(physicalgraph.zwave.commands.multichannelv3.MultiChannelCmdEncap cmd) {
def divFactor=2
//This is where the HEM clamp1 and clamp2 (subdevice) report values are defined. Scale(2,5) is in reference to the Aeon Labs HEM Gen5 (subdevice) data for W, and A respectively.
//Z-Wave Command Class 0x60 (multichannelv3) is necessary to interpret the subdevice data from the HEM clamps.
//In addition, "cmd.commandClass == 50" and "encapsulatedCommand([0x30: 1, 0x31: 1])" below is necessary to properly receive and inturpret the encasulated subdevice data sent to the SmartThings hub by the HEM.
//The numbered "command class" references: 50, 0x30v1, and 0x31v1 do not seem to be true Z-Wave Command Classes and any correlation is seemingly coincidental.
//It should also be noted that without the above, the data received will not be processed here under the 0x60 (multichannelv3) command class and you will see unhandled messages from the HEM along with references to command class 50 as well as Meter Types 33, and 161.
//sourceEndPoint 1, and 2 are the Clamps 1, and 2.
def dispValue
def newValue
def formattedValue
def MAX_AMPS = 220
def MAX_WATTS = 24000
if (cmd.commandClass == 50) { //50 is likely a manufacturer specific code, Z-Wave specifies this as a "Basic Window Covering" so it's not a true Z-Wave Command Class.
def encapsulatedCommand = cmd.encapsulatedCommand([0x30: 1, 0x31: 1]) // The documentation on working with Z-Wave subdevices and the technical specs from Aeon Labs do not explain this adequately, but it's necessary.
//log.debug ("Command from endpoint ${cmd.sourceEndPoint}: ${encapsulatedCommand}")
if (encapsulatedCommand) {
if (cmd.sourceEndPoint == 1) {
if (encapsulatedCommand.scale == 2 ) {
newValue = Math.round(encapsulatedCommand.scaledMeterValue / divFactor)
if (newValue > MAX_WATTS) { return }
formattedValue = newValue
dispValue = "${formattedValue}"
sendEvent(name: "power1", value: dispValue as String, unit: "", descriptionText: "L1 Power: ${formattedValue} Watts")
}
if (encapsulatedCommand.scale == 5 ) {
newValue = Math.round(encapsulatedCommand.scaledMeterValue * 100 / divFactor) / 100
if (newValue > MAX_AMPS) { return }
formattedValue = String.format("%5.2f", newValue)
dispValue = "${formattedValue}"
sendEvent(name: "current1", value: dispValue as String, unit: "", descriptionText: "L1 Current: ${formattedValue} Amps")
}
}
else if (cmd.sourceEndPoint == 2) {
if (encapsulatedCommand.scale == 2 ) {
newValue = Math.round(encapsulatedCommand.scaledMeterValue / divFactor)
if (newValue > MAX_WATTS) { return }
formattedValue = newValue
dispValue = "${formattedValue}"
sendEvent(name: "power2", value: dispValue as String, unit: "", descriptionText: "L2 Power: ${formattedValue} Watts")
}
if (encapsulatedCommand.scale == 5 ) {
newValue = Math.round(encapsulatedCommand.scaledMeterValue * 100 / divFactor) / 100
if (newValue > MAX_AMPS) { return }
formattedValue = String.format("%5.2f", newValue)
dispValue = "${formattedValue}"
sendEvent(name: "current2", value: dispValue as String, unit: "", descriptionText: "L2 Current: ${formattedValue} Amps")
}
}
}
}
}