Modes - What is their trigger?


(Paul Patin) #1

What triggers “Modes”? I’m currently at home but my mode is “Away”. I do not see what triggers a mode or how to edit a mode. I see how to create a mode but what am I creating if I can’t tell it what it is?

Thanks,

Paul


#2

Modes are designed to be triggered by some rule that you yourself set up in SmartThings. This could be a routine, rule machine, or another smartapp.

Unfortunately, the platform has been significantly broken this past week, with many people reporting that modes are changing all on their own without an associated trigger.

See the official status page:

http://status.smartthings.com

If you want to set up a routine to manually change the mode, here’s the FAQ:


(Paul Patin) #3

I know I’m missing something…I figured out how to create a Routine but inside it gives the option to change a Mode. I don’t see what Modes do? Why would change a Mode if I can’t configure a Mode.

Speak to me like I’m a 3rd grader though I’m pushing 60 :slight_smile:


FAQ: How to Add a New Mode, or Manually Change from One Mode to Another
#4

The last link inside the mode FAQ is to the support article on modes which gives the official explanation. :sunglasses:

But the short answer is that you can use modes to control when other routines will run. Or other rules like smart lighting automations.

For example, in my house I have a motion sensor in the bedroom.

During the day, I don’t want anything to happen if the motion sensor is triggered.

After sunset, but before I go to bed, if the motion sensor is triggered I want the overhead light in the bedroom to come on.

Once I go to bed, if the motion sensor is triggered I don’t want the overhead light to come on – – instead, I want a night light on the wall to come on.

Some people would take care of this just by using clock times. But I go to bed at different times on different nights.

So I change the mode on the system to tell it which rules apply when.

The regular mode is just “home.” That’s for the daytime. At my house I have a routine that changes the mode to home at 7 AM every day.

The next mode I use is “night”. I have a routine that sets the mode to night every day at 30 minutes before sunset. Then I have a lighting automation rule that says if the mode is night and the motion sensor is triggered, turn on the ceiling light.

Finally, when I am ready to go to sleep, whether that is 8 o’clock at night or two in the morning, I manually change the mode to “asleep”. And I have a different lighting automation rule which says if the mode is asleep and the motion sensor is triggered, turn on the nightlight.

So I have three modes and two rules. Which mode is set will determine which of the two rules will run. :sunglasses:

And the mode gets set three different ways: by clock time in the morning, by sunset in the evening, and manually when I’m ready to go to bed.

There are other reasons why you might want to change the mode manually, and unfortunately a common one is when the system has failed to change it the way it was supposed to.


(Paul Patin) #5

We are getting closer…I understand the concept of Modes And Routines but you must be able to configure a Mode. I’m not able to do that on my iPhone…At least I can’t find it.

When I try to update a Mode, I get to the name page. I can change the name but there is no Save,Done or Next button. If I try to go off that page by hitting the back arrow, I get this message “There are uncommitted changes on this page” It also asks if i really want to leave this page and lose changes and i have to say Yes as nothing else happens.


#6

You can’t really “configure” A mode. You can create a new mode with a new name, like Asleep.

Once it is created, you can reference it inside of a routine in one of two ways.

You can tell the routine to use a mode as a control on that specific routine – – that is to run the routine when the mode is “asleep” or To not run the routine if the mode is “asleep.”

You can also tell the routine to change to a specific mode when The routine runs. This is how you change to a different mode.

Unfortunately, the most recent version of the mobile app broke accessibility for people using voiceover, so I am not able to create a screenshot for you. Perhaps someone else will do it.

If you go into routines, and use the menu option in the top right and select add a new routine, you can then page through all the options for routine and choose “change mode.” That used to be near the very end of routine, I don’t know if it still is. You specify the mode you want to change to, and then save the routine. (You will probably need to tap “next” or “done” on the top right of each screen.) From then on, just tapping that routine icon in the mobile app will cause the mode to change to the one you specified.


(Paul Patin) #7

I think we are close…Let’s try it this way…

What is the difference between a Routine and a Mode. Let’s say at 10pm, I want my thermostat to set to **degrees. I know how to do that through a Routine. Why would I need a Mode? I’m figuring that maybe if I’m not home, then I don’t want the thermostat to change to **degrees. I would set the Routine to run with the exception of if ST was in AWAY Mode.

Now…How do we trigger a Mode to know I’m (and my wife) is away? I would think we would use our iPhones as presence sensors to determine our location but I don’t see any setting in Mode I can change…unless the ST cloud issue is causing the problems and you are assuming I can see stuff to change that I can’t.

BTW - I really appreciate your quick responses.


(Mike Maxwell) #8

A mode is a state, only one mode can be active at a time. You can create delete and add modes. Think of them as filters, allowing or disallowing smartapps to function.
Routines are nothing but smart apps that work like macros.
You can use routines to automatically change modes along with setting thermostats, turning lights on and off etc.


(Paul Patin) #9

Thanks but you should be able to configure a Mode, correct? I don’t see wher I can do that.


(Mike Maxwell) #10

Other than creating one, there is nothing to configure.
Several are created by default. From the right side flyout, select the gear from top left.


(Paul Patin) #11

I am really missing something… I created a Mode called TEST. All I was able to do was give it a name. What is TEST supposed to do / represent?

How would I use the Mode TEST?


#12

Use routines to automatically change the mode value

You use one routine to set the mode based on whatever conditions you want to use.

Then you use a different routine which runs based on which mode is currently set.

So now you have two routines. Once those are both created, the second routine will run automatically when the mode changes to the one which activates it.

Back to my original example.

I have one routine which changes the mode to “night” based on the time being 30 minutes before sunset.

I have a second completely separate routine which says if the mode is “night” and the bedroom motion sensor is triggered, then turn on the overhead light.

Two separate routines.

So, it’s a new day. We had the time of 30 minutes before sunset. This fires routine which does nothing but change the mode to “night.”

So far, that’s all that happens.

Say at 10:14 I walk into my bedroom. This causes the motion sensor to register activity. Now routine B fires because it’s conditions are met: the mode is light and the motion sensor detected activity. The ceiling light comes on.

Now I add a third, totally separate routine. This one does nothing except change the mode to “asleep.”

Another day goes by. At sunset -30 minutes, routine a fires. The mode gets changed to “night.”

Some time goes by, at 8 PM, I walk into my bedroom and the motion sensor detects activity. Routine B fires because the mode is night and the motion sensor detected activity. The ceiling light comes on. All good.

I go back in the living room, I watch TV for a while. At midnight, I go back in the bedroom. Routine B fires again because all its conditions are met. The ceiling light comes on.

I get into bed and I manually run routine C. That changes the mode to “asleep.” So 20 minutes later when my dog leaves the bedroom and goes in the kitchen to drink some water, even though the motion sensor detects activity, routine B does not run because the mode is not “night” anymore. The mode is still “asleep” which means the conditions for routine B are not met. So the ceiling light doesn’t come on just because the dog goes in and out of the room after I’ve gone to bed.

Setting away

If you were asking specifically about the mode value “away”. most people set that using a presence sensor. You can do it just with Geo location from your phone, or you can get a separate physical device to do it. If that’s what you’re asking there’s a whole bunch of forum topics on that specific use case

From a programming standpoint: value vs variable

See if this helps. There is really only one mode variable for the system. All of the things that we name as “modes” are just the values that that variable can take. So the mode variable is either set to “house” or set to “away” or set to “night” or in my case set to “asleep” which is a value that I have added to the list of possible mode values.

The mode variable stay set at the current value until something changes it to a different value from the list

When you set the variable to a particular mode value, it keeps that mode value until you change it to something else. So if it’s “home” it stays "home"until something changes it to away or night or whatever.

One of the ways in which the platform has been broken for the last week is that mode values have been randomly changing all on their own in some cases even to values that don’t belong to that account. That’s a database corruption issue.

But when everything is working the way it’s supposed to, there is one mode variable for your account. It gets set to one of the values on your list of modes. (New accounts start with it set to “home.”) it stays set to that value until a routine or SmartApp changes it to a different value from your list.

Using the mode to trigger actions

Changing the mode value doesn’t do anything in and of itself. However, you can set up routines or smart apps with conditionals so that they will be triggered when the mode variable is changed to a specific value.

So the mode variable is a conditional that can be used to trigger routines and smartapps.

Routines and smart apps can also change the value that the mode variable is set to. And that change can then trigger other routines and smart apps which are triggered by the new value.

It’s common in the forums to say you can only have one mode set at a time. But really what we’re saying is that the mode variable can only have one value at a time.

Configure

I think when you’re saying “configure the mode” what you mean is “change the value of the mode variable.” If that’s what you’re asking, you change it in a routine using the field that is there for that purpose which is labeled “change the mode” or using a similar field in one of the various smart apps like real machine.

And the reason why we keep saying you can’t “configure a mode” is because we are talking about the mode Values which are basically just names on a list. You can change the name but that’s it. You could change “asleep” to “sleeping” or “do not disturb” but that’s the only change you could make to a mode. Because the mode is just a value which is added to the list of values available to the mode variable.

And as I write that sentence I realize that this is yet another place where SmartThings has used the same word for two different things. Because the label does say “change the mode” when it really means “change the mode variable to a new value” and it also says “add a new mode” when it really means “add a new value To the list used by the mode variable.” That is, the SmartThings documentation does not distinguish between the values that the mode variable can take and the mode variable itself. Trust me, this is not the only time you will find this issue with SmartThings terminology. :wink:

So I think you’ve just looked one level deeper into things, as many programmers will, and then you’ve been tripped up by the fact that the word “mode” is used to describe both the mode variable and the values it can take.

Did that help any? Or did I just confuse things further?


(ActionTiles.com co-founder Terry @ActionTiles; GitHub: @cosmicpuppy) #13

Unable to screenshot at the moment, but hopefully if you browse a few of the Marketplace SmartApps you’ll see this:

  1. Many SmartApps have a top-level filter option in their Preferences “Set for specific mode(s)”; or a similar name. This means you can install a SmartApp called… “Vacation Simulator”, for example, that automatically randomly turns on and off lights, and have it only run when Mode = “Vacation”. Or you can have a Smart Lighting instance that is set to turn on all the lights in the house when Mode = “Housekeeping”. Or all the SmartApps that turn on lights based on motion or inside doors opening and closing only run when Mode = “Evening”. – Unfortunately, there’s is only one Mode per Location, and that limits its usefulness. It is entirely up to the Customer to decide how to make use of Mode… maybe you want both “Evening” and “Evening Vacation” … i.e., so that the Vacation lighting SmartApp doesn’t bother with random light-ons during the day! And … of course … all of this applies to any SmartApp that has a Mode filter; not just lighting.

  2. If a Routine or SmartApp changes Mode, then that does fire a Location.Mode Event; which can be subscribed to by other SmartApps. For example, if you have a Routine called “I’m Home”, the Routine might not need to do very many activities … perhaps it unlocks the door for your arrival; but if it also changes the Mode to FamilyAtHome, then if you have a Thermostat/Environmental Control SmartApp running which subscribes to Mode Changes, it could turn on the heat or AC. Yes – totally redundant to what you could do in the Routine itself; except that there is no direct way in SmartThings for one SmartApp to call another SmartApp … so Mode Change Event subscriptions is one way to allow the triggering multiple SmartApps at the same time; such as another SmartApp that uses your text-to-speech speaker system to announceMode has been changed to 'x'.”.


It’s probably best explained with really good examples. Frankly, Mode is limited and generally not necessary, yet… if well planned, it can be a very powerful “global variable” that makes your home smarter.


#14

By creating a routine that only runs when the mode value is “TEST.”

Or creating a routine that doesn’t run when the mode value is “TEST.”

Suppose I suspect my cleaners, who come on Tuesday, are taking things from my liquor cabinet. I want to have a siren go off when the closet door is opened between the hours of 10 AM and 4 PM on Tuesday. I set up a routine that does just that.

However, I also want to have a way of turning off that routine. Maybe I have guests over on Tuesday. Maybe I’m just checking a bunch of other things. Maybe I’m installing a new siren on a Tuesday and I don’t want it going off all the time that I’m working on it.

I go back to my original routine and I leave everything exactly the same, except I tell it not to run when the mode is test.

I also create a second routine which does nothing except change the mode value to test.

And probably I create a third routine which does nothing except change the mode value to home.

Now I’m ready to work on the siren.

I manually run the routine which changes the mode to TEST. Now I can open the closet door as many times as I want to, including on a Tuesday between 10 and four, and the siren will not go off.

Then when I’m done and I want to reactivate the routine that sets off the siren, I manually run the routine that changes the mode back to home.

So creating a new mode value by itself doesn’t do anything. Creating a new routine that changes the mode to that new value by itself doesn’t do anything. Running that new routine will change the mode variable to that new mode value – – but that still won’t do anything Else.

You have to also have created separate routines (or smart apps) which run when the change to that new value occurs.

The routines trigger the events.

The mode values trigger the routines, but only if the routine is set up to specifically react to that particular mode value.


(Paul Patin) #15

Ahhhhh…I’m starting to see the light. So I’m thinking if I create an auto routine that sets the temp of my thermostat to ** and changes the Mode to Home, I can run another routine to change the thermostat to ** at 6am only if the Mode is Home. If a routine was triggered that said I was away, them because the Mode has changed, the temp would not be set.

By George I think I have it!! Let me do some tinkering and see what I come up with.

Thanks for all the help!!


#16

Just remember that it’s possible things won’t run as expected until the platform stabilizes. So today might not be the best day to experiment.


(Paul Patin) #17

Understand that!!


(Ryan) #18

I look at each mode as entirely different copies of the same (ST) program. Each program (mode) I create gives me the ability to build whatever actions I want and have them occur while in that mode (as long as I restrict the actions to that mode…if actions aren’t mode restricted, then they occur in all modes). So, if I want lights to come on and dim to 30%, doors to lock and fans to turn off…all based off individual triggers…I can make that all happen…probably exactly what you bought ST for in the first place…you name the mode something to keep it all straight (say: MORNING). All of these actions need not be related to each other, but can be made to be dependent on basically anything I want.

If I create another mode (say: DAY), I can have those same lights come on and dim at 60%, door unlock and fans turn on…all based on the same or different triggers as when the mode is set to MORNING, but they’re unrelated. So, basically, all these actions can be set up to occur/act/react in multiple ways, using which ever mode they’re limited to as a way to separate them. Separate programs (modes) lets each device be programmed to act in different ways, just depending on which mode you’re currently in.

I use modes (basically) to tell the house if we’re home or not, or what time of day it is, or what actions are going on (HOME, AWAY, MORNING, DAY, NIGHT, VACATION, SUSPEND, etc), because I want actions to occur differently depending on whether or not we’re home, what time of day it is, etc…

Routines are, as has been stated, just macros to have some trigger trip a series of changes (of which could include a mode change, if you wished).

Hope this helps!


#19

I’m a year late to this topic, but see things the same way pmp350 did, i think. even before asking the question, i get all the stuff in the first several replies (more than that). I still don’t really “get” modes until i do partially, at the same point when pmp350 says “Ahhhhh.”

I don’t think implementing moods is as straightforward and quickly adopted as Routines in general. i get which ones exist and that you can have a routine set them. i get that you can create them. what i took a while to get is where, exactly where you change the behavior, the reaction to you motion sensor.

now i do. it’s a little funky that routines both set modes and can change their own behavior to depend on them. smartapps can make their behavior contingent upon them. it just takes a second to grasp; and modes are probably a feature many people don’t use. I’m not sure I will.

If the Modes UX were different, people would get it faster and is modes more, I suggest. If you could see them as prominently or almost as prominently as routines, things, etc…, that would be a start. also, if when you could see them, you could see which routines and smartapps used them (and, even better, if you could add a routine or smartapp to a mode right from that screen), it would help tremendously. right now, seeing modes is buried. using them in a routine is buried deep.

…and, when you ask someone about them or google for them, because you get it and want to do it, but can’t find the place to use them, you won’t get the answer in the 1st, 2nd, 3rd, or even 4th reply.

here is where they can be used with a routine (for a routine to react to them, not to set them):

Go into Automation
Find a routine and choose settings (the little cog)
Look for additional settings
Tap on Automatically peform "[routine]"
Look for Advanced Options
Choose “don’t automatically do this if I am in one of these modes”

There you go. Almost. Except my basic question, how do I make a mode actually do something is still not answered. All I found was how to make it not do something.


#20

When smartthings first started, you did indeed pick the modes that a particular routine would run in. Then about a year ago they changed that so you selected the modes it would not run in. I don’t know why, I agree with you that it’s confusing.

Instead of looking at routines, look at the official smartlighting feature. There you can use a mode change as a trigger as well as using the mode as a behavioral filter, so it’s more of what most people are expecting.


Oddly, the official support article doesn’t mention that this option exists, but it’s there and it works.

I agree it would make a lot more sense if we had a way to look at which modes were being used on our accounts, but we don’t. As I’ve mentioned before, I keep a spreadsheet With control information about my own automations, including modes, but it would definitely be preferable if the system displayed it for me.

Like many aspects of SmartThings, the system is very powerful and flexible, but neither intuitive nor discoverable. Sometimes the only way to find out how to do something is to come to the forum and ask. Fortunately people here are very helpful. :sunglasses: