Is there a way to suspend a smartapp?

There are times when I need a smartapp not to execute and it seems that it’s easier if I could suspend the app from firing instead of uninstalling and reconfiguring it later? Is there such a feature that I’m not seeing?

Thanks!

Nope… but there are a couple of work around options.

The first, of course, is to uninstall and re-install, which can be a pain.

The second would be to modify the options to make it impossible to run. For example, let’s say your app runs when something turns on, go into the settings and change it from a light to a virtual button tile which will never turn on. Then when you need the app to run again, change it back to the appropriate switch.

Third, you could use modes for this. Now, if you’re already using modes extensively this would make it rather complicated and probably not worth doing. But if you’re not a heavy mode user, just install your programs to run in every mode. This program install to run in every mode by one. Then when you don’t need this program to run, change the mode to the one where this program isn’t installed.

Fourth, if you know a little coding it would relatively easy to install and option that would allow you to quikcly enable/disable your app. The easiest form you could just ask the user to enter a number. Then in the payload of your app run a simple If-Then command. If the number /= 0, then run the app as normal. But if it equal zero, then don’t run it. Now when you install the app you put a 1 (or any number other than zero) in this blank and the app runs. When you want to suspend it, you open the app, change the number to 0 and update it.

If you know a little coding, you can also try using an apptouch event to set something in state, then have your regular event handler check the value in ‘state’ before it does anything.

def installed() { state.enabled = true initialize() }

def updated() {
unsubscribe()
initialize()
}

def initialize() {
subscribe( app, enableDisable )
subscribe( someotherDevice, someEvent, someHandler )
}

def enableDisable( evt ) {
state.enabled = !state.enabled
// sendPush or sendSms

}

def someHandler( evt ) {
if( !state.enabled )
return
doTheRealStuff()
}

I don’t know if this works on Android, but on an iDevice, you would see a small triangle to the right of your SmartApp in the “Installed SmartApps” list (the one you get by hitting the ‘three-circles’ in the upper-right corner of the SmartThingsApp). Touching the triangle would invoke enableDisable above.

Not sure if this helps but I created a mode called system pause. None of my apps have access to this mode therefore when I enable it nothing automated happens.

Thanks for the input guys. I will try this when I can concentrate on it more. I don’t code at all but can follow instructions and sometimes cobble things up together :slight_smile:

I created a mode called "Disable"
When ever I want to suspend an app I assign this mode to it.