Current Sensing Module

Glue/tape a z-wave/zigbee temperature sensor to the dryer exhaust. When the temp rises above a set parameter, turn on fan :smile:

Here is the link to amazon

Yes, you can use that to detect the power usage of the dryer and when it’s above a certain threshold you could use a second one to turn on and off your exhaust. At least thats how I understand your issue. Not bad for $60 total.

-Allan

I ordered 2 and we’ll see what happens.

Do I need to write custom code to get this to work, or is there a SmartApp that will work for this?

Never did any of the programming yet . . .

Dave

rule machine will do it for you.

if switch 1 current >= X amount then turn on switch 2

1 Like

Like Matt said… Rule Machine app

If that doesnt do it for you, let me know. Easy app to write…

OK, so I got the current sensor, and I’m playing around with Rule Machine.

Question: Can I change how frequently the Aeon power sensors get updated by the Hub? When I start the dryer, there seems to be a pretty significant lag before ST recognizes that the Power level is above my setpoint (10 in this case).

It seems like I have to refresh the sensor from the app manually to get rule machine to trigger the other switch on.

How can I make this automatically update the power coming from the Aeon sensor?

Thanks,

Dave

I think I partially answered my question - the Pollster App.

If anyone has any better suggestions, please let me know.

Dave

look for Aeon HEMv2+ it lets you lower the poll to seconds

Matt:

Thanks, I’ll try it, but I have a questions (that may be better asked on a different forum)

In the Read Me file, it states pretty clearly that this DOES NOT WORK ON ANDROID. The problem is, I am using my Android phone (Galaxy S5) to run ST for now. My wife has an iPhone, but so far I haven’t used her phone to do any ST stuff, since it is “HER” phone ;o(

I guess I’m a little confused how the Android/iOS interacts with ST. If I just “install” the device with an iOS device, once it is running, I don’t need the iPhone for it to continue working - right? I will just need to use her phone to configure this device??

Will I still be able to monitor the smart plugs with my Android phone??

I hope this makes sense?

Dave

Honestly I dont have an Android so I cant comment

Just a quick update on my little project:

The Aeon Smart Energy Switches work great!

The modified HEMv2+ app did not work at all with my Android, so I just used the standard device handler in ST.

I am using the Pollster App to poll the sensor every minute, which works just fine. The longest the dryer will run without the fan running is 1 minute. Since it is just a duct assist fan, no big deal to run the dryer without the fan running.

Using Rule machine to turn on and off the fan, based on if the dryer is running or not. So far, after a few days, running like a champ.

Thanks for everyone’s help!

Dave

Hi there @cdikland! I’m new to SmartThings and am following this old thread. I believe i have the right hardware components to do what OP was trying, but still struggling on the idea of using custom code/smartapps to get what I want.

I just purchased a Leviton (3-prong, 15amp max) smart switch and have it paired with my SmartThings hub. It works just fine to control the on/off state from the SmartThings app, but I want to do 2 things with the data that I hope the sensor is able to provide.
a) be able to look at a glance and see if a load of laundry is running… basically, is the current amperage greater than, say, 1.0 amps. Enough to indicate it’s doing something.
b) after it’s been running at greater than 1.0 amps for more than 5-10 minutes, send me a notification when the amperage drops below 1.0 amps indicating that the load is done.

Do you think this would work, and are there other apps out there that would do this sort of thing? You mentioned (last year) you might be willing to write such an app, if it were that simple. Are you game still, or anyone else? :slight_smile: I am really excited about the potential for these things, but coding is unfortunately not one of the things I know how to do. Also unfortunately it looks like “Rule Machine” is no more, not sure if there’s anything else out there that is supported or would allow me to make some basic logic/scripts like what I explained above, so I can do it myself without writing code?

Thanks all/community in advance!

Chris

Do you have specs on this device? I am not familiar with it and have no idea whether it actually provides power data in a timely manner (if at all).

I already have such app which worked fine with my Smarthings Smart Outlet (2015 model) which I recently recently replaced with an Aeon Lab Smart Switch. This change gave my app problems as the DH I was using did not send power data in a timely manner. I am currently testing a new DH which appears to work better however I cant tell if its the handler or the device but I get the occasional spike that exceeds the minimum watts I set in the app. This spike fools the app into believing laundry has started. I have “fixed” the problem but it needs more testing
Currently it works as follows:

  • set a minmum wattage within the apps prefs (i.e 10watts. If the power exceeds this amount assume wash cycle has started).
  • To overcome possible spikes, wait till at least 3 power events occur where watts exceeds the minimum set in prefs
  • When power drops below minimum, start timer (amount set in app prefs) and if the wattage is still below the minimum when the times expires assume laundry is done. (i.e. waitTimer=5 Min. Power drops below 10 watts, start timer, power exceeds 10 watts before timer expires cancel timer, power remains below 10 watts after tiimer expires Laundry done.)

This app should work with any device that sends power events but, as I found out, some send events so infrequent the app is useless. So… send me the specs on the device you plan to use and we’ll see what we can do.

Wow, first of all thank you so much for such a quick and thorough response!

I ended up replacing this with the Samsung unit after all, which at least
shows the wattage draw and appears to be very quickly updating. I think the
app toy described will be perfect for what I’m trying to do. It’s the most
recent version available at Best buy,

Samsung Model F-OUT-US-2

So if you already have an app that does this, how do I load that into my
profile if it isn’t an app available in the SmartThings Marketplace? I saw
in the IDE website a way to add apps from code simply, is that what I would
do with the code you provide?

Thanks!!

Chris

/**
 *  Laundry Monitor-Timer
 *
 * by Cor Dikland
 *
 *  Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 *  in compliance with the License. You may obtain a copy of the License at:
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software distributed under the License is distributed
 *  on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
 *  for the specific language governing permissions and limitations under the License.
 *
 */
 
import groovy.time.* 
 
definition(
    name: "Laundry Monitor-Timer",
    namespace: "cdikland",
    author: "Cor Dikland",
    description: "This application is a modification of the Brandon Miller Laundry Monitor SmartApp.  Timer is set each time watts fall below a fixed setting. If timer expires before watts rise above, Laundry is done.",
    category: "Convenience",
    iconUrl: "http://www.vivevita.com/wp-content/uploads/2009/10/recreation_sign_laundry.png",
    iconX2Url: "http://www.vivevita.com/wp-content/uploads/2009/10/recreation_sign_laundry.png")


preferences {
	section("Tell me when this washer/dryer has stopped..."){
		input "sensor1", "capability.powerMeter"
	}

	section("Notifications") {
		input "sendPushMessage", "bool", title: "Push Notifications?"
		input "phone", "phone", title: "Send a text message?", required: false      
	}

	section("System Variables"){
		input "minimumWattage", "decimal", title: "Minimum running wattage", required: false, defaultValue: 50
		input "timesMinimumWExceeded", "decimal", title: "No. of Times Min. Watts Events Occur Before initiating 'Cycle Started' ", required: false, defaultValue: 3
		input "minimumOffTime", "number", title: "Minimum amount of below wattage time to trigger off (Secs)", required: false, defaultValue: 300
		input "message", "text", title: "Notification message", description: "Laundry is done!", required: true
	}
// Usage of the next two pref attributes have not been tested
	section ("Additionally", hidden: hideOptionsSection(), hideable: true) {
		input "switches", "capability.switch", title: "Turn on these switches?", required:false, multiple:true
		input "speech", "capability.speechSynthesis", title:"Speak message via: ", multiple: true, required: false
	}
}

def installed() {
	log.debug "Installed with settings: ${settings}"
	initialize()
}

def updated() {
	log.debug "Updated with settings: ${settings}"
	unsubscribe()
	initialize()
}

def initialize() {
	unschedule()
	atomicState.isRunning = false
	atomicState.jobScheduled=false
    atomicState.minOffTimeMs=minimumOffTime * 1000
    atomicState.aboveMinimum=0
	subscribe(sensor1, "power", powerInputHandler)
	subscribe(sensor1, "health", healthInputHandler)
//	runNotifyAt(now() + atomicState.minOffTimeMs)
}



def healthInputHandler(evt) {

log.debug "Health check"
}
def powerInputHandler(evt) {

	def latestPower = sensor1.currentValue("power")
    log.debug "Power = $latestPower"
	if (latestPower > minimumWattage) {
    	log.debug "latestPower >  minimumWattage === $latestPower W ==="
		atomicState.midCycleTime = now()  // the latest time when wattage was above the minimum
		if (atomicState.jobScheduled== true) {
			log.trace "Power: ${latestPower}W  is above the set minimum.  Previous scheduled job cancelled."
			unschedule()
			atomicState.jobScheduled=false
		}
	}
     else {  // reset aboveMinimum count when wattage falls below the minimum
     	atomicState.aboveMinimum=0
     }
	if (!atomicState.isRunning && latestPower > minimumWattage) {
    	atomicState.aboveMinimum=atomicState.aboveMinimum+1
        if (atomicState.aboveMinimum==timesMinimumWExceeded) {
        	cycleStarted()
            atomicState.aboveMinimum=0  // do I really need this???
        }
/*
		atomicState.isRunning = true
		atomicState.startedAt = now()
		atomicState.stoppedAt = null
		atomicState.midCycleCheck = null
		log.trace "Cycle started."
*/
	} 
	else if (atomicState.isRunning && latestPower < minimumWattage) {        	
		def elapsed = (now() - atomicState.midCycleTime)/1000 	// Time between last time wattage was above (atomicState.midCycleTime) minimum and now when the wattage is below the minimum 
		log.debug "Current Power: ${latestPower}W. Time under wattage=$elapsed"
		if (atomicState.jobScheduled== false) {
			runNotifyAt(now() + atomicState.minOffTimeMs)
			atomicState.jobScheduled=true
		}
	}
}


def cycleStarted() {
    atomicState.isRunning = true
    atomicState.startedAt = now()
    atomicState.stoppedAt = null
    atomicState.midCycleCheck = null
    log.trace "Cycle started."
}

def laundryIsDone() {
	atomicState.jobScheduled=false
	atomicState.isRunning = false
	atomicState.stoppedAt = now()  
	log.debug "startedAt: ${atomicState.startedAt}, stoppedAt: ${atomicState.stoppedAt}"                    
	log.info message

	if (phone) {
		sendSms phone, message
        sendPush message
	} 
	else {
		sendPush message
	}

	if (switches) {
		switches*.on()
	}               
	if (speech) { 
		speech.speak(message) 
	}          
}

def runNotifyAt(timeMs) {
    def date = new Date(timeMs)
    runOnce(date, laundryIsDone)
def stamp = new Date(timeMs).format('dd-MMM-yyyy HH:mm:ss',location.timeZone)
    log.trace "'laundryIsDone' scheduled to run at ${stamp}"
}



private hideOptionsSection() {
	(phone || switches) ? false : true
}

Just copy the code above. In the ST Ide, create new Smart App, In the new window select the option, "From Code. Paste the code you just copied, save and publish. Install the app with the ST app on your mobile.

The pref options are:
“Minimum running wattage” : When watts exceeds this amount the machine is (probably) running.

"No. of Times Min. Watts Events Occur Before initiating ‘Cycle Started’ " : Power/Watts events are received by this app every seconds (i.e. every 20s). To avoid reacting to a power surge, set this to at least 2 which means that the app must receive at least 2 power events with wattage greater than the minimum.

“Minimum amount of below wattage time to trigger off (Secs)”. Often a machine will draw less power than the minimum BEFORE the cycle is completed (in my case, water being added or it just sits while draining without a pump). Set a wait period (I use 300 seconds) before sending a “Laundry Done” message. If the power exceeds the minimum before this wait period is done, the timer is cancelled and wont restart again till the power falls below the minimum. If the timer expires while the power remains below the minimum the laundry must be done. If you set this too low, no big deal except you may get a “Laundry done” message during mid-cycle shortly followed by a “Cycle started” event.

“Notification message” Laundry is Done!!! (or what ever you want.

When you get the app installed and up and running you may want to go to the ST IDE Live Logging screen and monitor the app. There should be frequent log events (power events) appearing when the machine power switch is on but not necessarily running.

As it turns out I think I actually have the 2015 model as well (that you used to have) - I think the new one is more square whereas mine is round. If you have the code from your old instance I can tinker around with that and see if I can get it to work in my environment. Thanks!

Chris

The above code should work without any modification. Only diff between it and the “old” code is the addition of timesMinimumWExceeded which I added because the Aeon Labs device was giving false readings causing the app to think the washer cycle has started. Never experienced that with the ST module but regardless, the change to the code should work just fine regardless of the device…

Thanks very much. I used it tonight for a couple cycles, and the alert notified me correctly on teh first run through! However, when I ran the second cycle of laundry it stopped half-way through the cycle.

The Smartthings outlet was blinking blue and washer wasn’t receiving any power, but the app showed that it was ‘On.’ The app seemed responsive when I was attempting to toggle between off and on, but still the washer had no power and the plug was just blinking blue. I tapped the Connect button once and power immediately came back on.

Is there something in this script (or any other reason you can think of) that could cause the device to stop providing power like that, but still appear connected to the Hub?

Thanks!