Instead of having Automation function having an all or none if/then condition, I would like to see Automation require specific steps.
For example, if I walk out one door and then another, then Automation could mark it “Away.”
But if I return through the other way through two doors, then Automation could mark “Home.”
Or more specifically, if I enter the garage from home, then open the garage door, and get in my car and drive away, then close the garage door. Then ST hub would know I left the house.
But in having the reverse steps done and detected by ST, the hub would know I’m home.
It might be convoluted but I think you could have such actions trigger virtual switches that in turn are used in another automation.
Example: if the garage door opens then turn on the “leaving stage 1” switch. Opening the garage turns on “leaving stage 2” switch. If those are both on (you can also set an automatic time for them to turn back off, say after 10 mins), combine those two switches with your location triggering away mode.
Honestly I would just start with webcore if you haven’t hear of it and go from there.
If you do however want to keep things inside SmartThings or rather don’t want to deal with setting webcore up, it should be pretty simple:
The virtual switch would act as a control logic that once triggered and sequentially other control logics trigger, allow you to set conditions that unless all are true within a set period of time, wouldn’t allow for the activation of “Away”. I also just switched myself today to the new SmartThings app so the Automations may allow for some combination of what I’m suggesting natively and you just need to define further in the “If” portion of your automation. Either way, adding a virtual switch (through the IDE https://graph.api.smartthings.com/) allows a little more flexibility as it grants you further triggers for other things. For instance I have a virtual switch titled “Movie” I can turn on that sets certain lights on/off and their level of brightness throughout the house.
The easiest way to do this would be through Webcore, which allows you to set up very complex rules. It’s very popular, and there are many people who will be glad to help you create the rules you want. They even have their own forum.
See the community FAQ (The topic title is a clickable link):
You might also be able to eventually do this with the official “rules API“ but it’s still in development and for now, Webcore will probably be easier to use.