Yup, that’s the way mine is setup. These clamps measure current (amps) directly, the wattage is derived from the voltage that each clamp is configured for, however in this use case the configured voltage is irrelevant.
Thanks Mike for the info.
Good morning folks,
I can’t get my meter to report any information. There are no “sync” bottom. I am not sure if I should select any GitHub Repository.
Can someone please help me out ?
My clamps are in the basement connect to the main house breaker
I am in the US
@Mike_Maxwell can I ask which app your using to notify you once washer or dryer is completed?
Rule machine…
Glad I’m not the only one still using it. 
It’s not a preference adjustable setting in my dth. It’s one of the configuration parameters, and to be honest I don’t know if it is configurable per leg, you would have to review the spec sheet. Given that W=V*A you could do any voltage adjustments after the wattage is read and before the sendEvent message is sent. I didn’t care about this for the laundry use case since the reading is used as a threshold setting, not an accurate measurement.
Thanks! just wanted to make sure I wasn’t missing something obvious.
Im also only interested in the threshold but, I am not getting consistent readings from my washer. 0-5watts if it’s on or off. At first I thought the reading for the washer was not sensitive enough because the voltage was set to 220 but I’ve tried setting the DTH to 110 and I still don’t get a significant reading from the washer. Starting to think it’s an issues with aeon hw.
Hi folks,
I bought one of these with the intention of merely doing the following:
If wattage comes on, then goes back below a threshold, notify me because the washer has completed its cycle.
I will be using webCore.
Is this sort of thing possible using this device? I assume so but just want to check with y’all. I assume all I would need is the device handler, get it installed and then create a piston?
Yes. Search is your friend. 
@AutomationHoarder if you get it work out using the hem let me know how it works for you? Thanks
Does anyone know if this product would work to monitor the energy usage of a washing machine? I bought this monitor and then found out about the Rainforest zigbee device that pairs with my smartmeter. Wondering if I could use the Aeon to alert when the washer is done as it stops using electricity.
Yes… but you would have to construct a power cable that has the hot wire split out. That would probably not be a UL listed cable and could be considered a hazard.
The energy meter clamp needs to go around a single wire of the AC current flow, otherwise the return flow just cancels it out.
Furthermore, the washer uses variable amount of energy depending on where in the cycle it is. I bet the energy drops pretty low many times.
Hmmm… A regular “Appliance Outlet” (even the old Aeon one), has power metering built in. Maybe you can get a deal on eBay or one of the smart home outlets.
3-paks of the V1 meter are on Amazon for $39.95. Or a single AC/USB powered V2 unit for $28.
I’ve never used them. Quick question: do they need to touch bare wire? I’m guessing yes, but again I’ve never used them.
Nope!
The clamps fasten loosely around the wire sheathing.
When installing in the breaker box you need to be extremely careful still. If you are installing for the whole-house and therefore put it on the main incoming lines those lines remain hot even with the main breaker(s) off.
I wanna use it for a dryer monitor, and return the ST multisensor to some other duty.
Thanks.
Cool. You may have read already but note that you should not clamp around the whole cable in that case. You have to separate the dryer cable wires so you are only clamping (with one clamp) around the hot. This can present a risk as you are messing with the integrity of a cable. But folks have done it as documented in the forum.
EDIT: Forgot what thread this was so sorry, I am repeating some information. There’s a bunch of threads on the HEMs.
I asked this question before and decided tearing open the cable and separating the wires was not something I was willing to tackle.
I wanted to set an alert for my washer so washed clothes weren’t forgotten. I figured I could put a door/window sensor on the washing machine and set an alert if the door wasn’t opened again after 1.5-2 hours.
I recently changed from Core to WebCore, and as a part of that had to recreate my pistons for Washer and Dryer notification. They are below for any webcore users who’d like to look at/use/take and modify them. I’m using a modified version of Mike’s (@Mike_Maxwell) great HEM DTH that he and @MEarly and @ogiewon helped me adjust.
Washer:
Wattage is all over the place crazy, and I found that I could not find a reliable way to manage “done” via watts monitoring or washer state, so I went w/a simple timer, as 90% of our loads are the same cycle, takes about 50 minutes.
Dryer:
Nice and reliable, so I could use a wattage setting to determine “done” and then message. If only my washer was as friendly… 
Washer Piston - timer, starts w/Push Some slight funkiness in what I’ve done here - I’ve edited the DTH to replace the “Held” signal from the first clamp with a “Push” since I’m not using “Held” and don’t need/want it for the piston. There are more elegant way of handling this, but elegant ain’t me.
washerPiston variable is created w/initial value set to ‘nothing selected’ but should be initialized to false.
Dryer Piston - Starts w/Push, ends w/Held This is simple, starts w/Push, ends w/Held. (Ignore the “lowWattsCount” variable - that was from an early draft and I’m no longer using that variable and I forgot to remove it from the piston define section.)
DTH (Based on the one that @Mike_Maxwell created)
/*
Dual Clamps: Update of Mike Maxwell's HEM Laundry monitoring device for Aeon HEM V1. Includes customizations
from Oglewon and MEarly.
SmartThings thread: https://community.smartthings.com/t/aeon-home-energy-meter-v1-read-clamps-separately/25480/100?u=danabw
Status:
1. Done: Oglewon - Fix reported number of buttons so both are announced/available in SmartApps
2. Done: MEarly - Set Washer/Dryer On=pushed event; Washer/Dryer Off=held event. Allows notifications at start/end of cycle, & start/stop logging under Recent Activity.
2. Done: Danabw - All Preferences entries labeled
3. Need help/later: 1) Add reporting frequency setting to preferences (currently only managed in Configuration section, not available in preferences
4. Need help/later: 2) ID what KWhDelay and detailDelay settings control, and remove them from Preferences if user control not necessary
*/
metadata {
definition (name: "Dual Clamps: Update of Maxwell's Aeon HEM V1 Laundry DTH", namespace: "MikeMaxwell", author: "Mike Maxwell")
{
capability "Configuration"
capability "Switch"
capability "Button"
//capability "Energy Meter"
capability "Actuator"
capability "Holdable Button"
capability "Sensor"
attribute "washerWatts", "string"
attribute "dryerWatts", "string"
attribute "washerState", "string"
attribute "dryerState", "string"
// command "configure"
fingerprint deviceId: "0x2101", inClusters: " 0x70,0x31,0x72,0x86,0x32,0x80,0x85,0x60"
}
preferences {
input name: "c1Name", type: "text", title: "Clamp 1 device (e.g., Washer)", description: "", required: true
input name: "washerRW", type: "number", title: "Minimum watts device draws when running:", description: "", required: true
input name: "c2Name", type: "text", title: "Clamp 2 device (e.g., Dryer)", description: "", required: true
input name: "dryerRW", type: "number", title: "Minimum watts device draws when running:", description: "", required: true
input name: "voltageValue", type: "number", title: "Line voltage: 120 or 240", description: "", required: true
input name: "kWhCost", type: "number", title: "Cost per kWh", description: "", required: true
// Not sure what kWhDelay is or does. Not sure how to remove it from the Preferences screen - it displaye w/no label before I created this entry.
input name: "kWhDelay", type: "number", title: "kWh Delay", description: "", required: true
// Not sure what detailDelay is or does. Not sure how to remove it from the Preferences screen - it displaye w/no label before I created this entry.
input name: "detailDelay", type: "number", title: "Detail Delay", description: "", required: true
// Would like to add an entry in Preferences to set the HEM reporting frequency (it is included in the Configuration
// section at the end of the code, but I don't know how to do that. :)
}
simulator {
}
tiles(scale: 2) {
multiAttributeTile(name:"laundryState", type: "generic", width: 6, height: 4, canChangeIcon: false){
tileAttribute ("device.switch", key: "PRIMARY_CONTROL") {
// attributeState "on", label:'Laundry Running', icon:"st.Appliances.appliances1", backgroundColor:"#53a7c0"
// attributeState "off", label:'Laundry Done', icon:"st.Appliances.appliances1", backgroundColor:"#ffffff"
attributeState "on", label:'', icon:"st.samsung.da.dryer_ic_dryer", backgroundColor:"#79b821"
attributeState "off", label:'', icon:"st.samsung.da.dryer_ic_dryer", backgroundColor:"#ffffff"
}
tileAttribute("device.switch", key: "SECONDARY_CONTROL") {
attributeState "on", label:'Laundry Running'
attributeState "off", label:'Laundry Done'
}
}
/*
valueTile("washerState", "device.washerState", width: 3, height: 2, canChangeIcon: true) {
state "default", label:'Washer\n${currentValue}'
}
valueTile("dryerState", "device.dryerState", width: 3, height: 2, canChangeIcon: true) {
state "default", label:'Dryer\n${currentValue}'
}
*/
standardTile("washerState", "device.washerState", width: 3, height: 3, canChangeIcon: true) {
state "off", label:'${name}', icon: "st.samsung.da.washer_ic_washer", backgroundColor:"#ffffff"
state "on", label:'${name}', icon: "st.samsung.da.washer_ic_washer", backgroundColor:"#79b821"
}
standardTile("dryerState", "device.dryerState", width: 3, height: 3, canChangeIcon: true) {
state "off", label:'${name}', icon: "st.samsung.da.dryer_ic_dryer", backgroundColor:"#ffffff"
state "on", label:'${name}', icon: "st.samsung.da.dryer_ic_dryer", backgroundColor:"#79b821"
}
valueTile("washer", "device.washerWatts", width: 3, height: 2, decoration: "flat") {
state("default", label:'Washer\n${currentValue} Watts', foregroundColor: "#000000")
}
valueTile("dryer", "device.dryerWatts", width: 3, height: 2, decoration: "flat") {
state("default", label:'Dryer\n${currentValue} Watts', foregroundColor: "#000000")
}
standardTile("configure", "device.configure", width: 2, height: 2, inactiveLabel: false, decoration: "flat") {
state "configure", label:'', action:"configuration.configure", icon:"st.secondary.configure"
}
main "laundryState"
details(["laundryState","washerState","dryerState","washer","dryer","configure"])
}
}
def parse(String 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(physicalgraph.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 >= settings.washerRW.toInteger()){
//washer is on
sendEvent(name: "washerState", value: "on", displayed: true)
//button event
if (!state.washerIsRunning)
sendEvent(name: "button", value: "pushed", data: [buttonNumber: 1], descriptionText: "Washer has started.", isStateChange: true)
state.washerIsRunning = true
} else {
//washer is off
if (state.washerIsRunning == true){
//button event
//
// Edited "Held" to send "Push" instead for clamp 1 (Washer clamp).
// Original sendEvent(name: "button", value: "held", data: [buttonNumber: 1], descriptionText: "Washer has finished.", isStateChange: true)
sendEvent(name: "button", value: "pushed", data: [buttonNumber: 1], descriptionText: "Washer has finished.", isStateChange: true)
}
sendEvent(name: "washerState", value: "off", displayed: false)
state.washerIsRunning = false
}
} else {
name = "dryerWatts"
if (value >= settings.dryerRW.toInteger()){
//dryer is on
sendEvent(name: "dryerState", value: "on", displayed: false)
//button event
if (!state.dryerIsRunning)
sendEvent(name: "button", value: "pushed", data: [buttonNumber: 2], descriptionText: "Dryer has started.", isStateChange: true)
state.dryerIsRunning = true
} else {
//dryer is off
if (state.dryerIsRunning == true){
//button event
sendEvent(name: "button", value: "held", data: [buttonNumber: 2], descriptionText: "Dryer has finished.", isStateChange: true)
}
sendEvent(name: "dryerState", value: "off", displayed: false)
state.dryerIsRunning = false
}
}
if (state.washerIsRunning || state.dryerIsRunning){
sendEvent(name: "switch", value: "on", descriptionText: "Washer and/or Dryer running...", 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(physicalgraph.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: 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
}
def installed() {
configure()
}
def updated() {
configure()
}
def initialize() {
sendEvent(name: "numberOfButtons", value: 2)
}


