There have been numerous questions/suggestions over the years about how to implement a delay in actions. The answers all seem to be complicated.typically involving programming.
This seems to me to be a fundamental item to accomplish in automation : when something is triggered, wait a period of time to do something else.
I’m a newbie to Smartthings, but have 5 years experience with Vera and have been a software engineer before retirement.
It seems to me that if one thinks of an action as a two-plet:
1. immediate action
2. delayed action
where either 1. or 2, could be null.
and implements the concept the problem is easily resolved.
For example to turn a light on for 10 minutes would be:
Immediate action: turn switch on
Delayed action: after 10 minute turn light off
the selection of a delayed action would pop up a window to select the delay time.
The actions could be nested to create complex actions.
This should be selectable in scenes as well as routines. I’m somewhat baffled why a manually triggered routine (a scene) has different limitations on it than an automatically triggered routine.
This concept is available in other hubs e.g. Vera and would be appealing to users who don’t want everything to be necessarily complex. I falsely assumed there would be a simple way to do this in Smartthings…had I known this, I may have purchased a different hub.
Because, IMO, a Manually Triggered Routine (formerly Scene) is not an automated Routine. It is a mechanism for setting the state of one or more devices either manually triggered or as part of an automated Routine.
Now, that being said, what is missing is the ability to add a time delay in a Routine for the action of running the Manually Triggered Routine, i.e. there is no way to say for the Action “Run Manually Triggered Routine Foo - Delay 5 mins”.
There are some hacks that you can do like have a Routine that fires off a virtual timer and when that timer reaches a desired elapsed time then run a secondary Routine to trigger the Manually Triggered Routine something like this:
If "Triggering Event Occurs"
Then
Start Virtual Timer
If Virtual Timer equal 5 mins
Then
Run Manually Triggered Routine Foo
I use a similar method to send me recurring notifications at 15 minute intervals when a door or gate is left open.
3 Likes
Thank you for your thoughtful response.
I agree that your view
is how Manually triggered routines have been thought of in the past. My suggestion would not get rid of that— just leave the delayed action null.
You could also call my implementation suggestion by another name, If you’d prefer; e. g. a "delayed action setting ".
I appreciate your suggested “hacks” to accomplish the same effect; however it adds unneeded complexity to what is a frequently needed functionality. This not only inhibits untechnical users of the system. but it adds to the readability & maintenance of a routine.
Imagine an automation which you want to make a vacant home looked lived in, You would like to turn on a downstair’s light for say 5 minutes and 30 seconds after turning on the downstair’s light, you could turn on a hall light on the 2nd floor for 2 minutes while 1 minute after turning on the hall light, you turn on the bedroom light for 23 minutes.
This scenario is easily implemented with my suggestion and much more understandable when you revisit the automation month’s later. Using a virtual timer would require 6 separate timers to be used.