A Beginner's Guide to Presence Detection

One of the most difficult aspects of home automation to do correctly is Presence. However, it’s also one of the most useful. Knowing if your home is occupied allows your automation to do things like turn off all the lights, turn down the heat or a/c, or even activate an alarm system when you leave. These obvious use-cases make setting up presence detection a must-have for most smart homes; but unfortunately, this is incredibly easy to get wrong. Flaky detection methods coupled with the natural complications caused by the normal comings and goings of a multi-person house can yield unpredictable behavior and trigger light, sirens, and tempers unexpectedly (see Getting Automation Right).


Let’s take a look at some of the options available for presence detection using Samsung’s SmartThings:

The mobile SmartThings app. Both the old SmartThings Classic and new SmartThings Connect app allow you to register your phone as Presence sensor and then use your phone’s GPS location to determine if you are home. The detection radius around your home is configurable so you can still set your “home” area to accommodate a walk around the block or neighborhood. You can also invite family members to set up their own SmartThings account and link them to yours. You can then add their presence to SmartThings for use in your automations. However, there are a few things to know when using the native SmartThings app presence detection. When installing the app, you must grant it permission to access your phone’s location, even when it is not running. If you don’t, it will not update your status properly. On Android, I’ve found that the new app simply does not work reliably and randomly stops updating the presence status. The old SmartThings Classic app has been more reliable for me on some phones, especially iPhones.

Another option would be to install the WebCore mobile app and use it to report presence. WebCore is a rules engine supported by SmartThings that is extremely powerful but not for the faint of heart. Installing and using WebCore in your SmartThings account requires a willingness to dive into some of the technical guts of SmartThings and, while not very hard, it can be intimidating for new or non-technical users. That being said, WebCore presence gives you a bit more data than the SmartThings app. It can expose things like direction, speed, location, leavingPlace, arrivingPlace, etc. However, I’ve also found it to be somewhat unreliable, more or less on par with the SmartThings app itself.

The most reliable phone-based presence app that reports presence to SmartThings that I’ve used is Life360. Life360 is a great app to have on your kids’ phones in general; it can show you where they are and track driving speed (for teenagers with cars). It also lets you set up circles around locations such as “Home” or “School” and can notify you when a phone enters or leaves a circle. A free account allows you to have only one circle and, for purposes of determining if someone is home, that is enough. Set up Life360 on all of your family members’ phones and create a Circle around your home. Make sure to invite your family to join your circle. You can then install the Life360 integration on SmartThings through the Marketplace section of the Classic app and then choose which family members you’d like to create presence sensors for. This also works with Hubitat! I’ve had good luck with Life360 on devices that did not work well with the other apps we discussed. It does seem to be a little more battery intensive though so you’ll have to find the right balance between reliability and battery life.

Another option is to use a SmartThings Arrival Sensor. This is a key fob that connects to your Zigbee mesh to determine if you are home. It’s meant to attach to your car keys to help ensure that you take them with you when you leave. I haven’t tried the arrival sensor personally, but online reviews mention varying degrees of reliability. In theory, these should be extremely reliable because of the simplicity of their “if it can connect, then you are home, if it can’t then you aren’t” approach but I assume that the reports of the device going to sleep or getting stuck and not connecting are not baseless. SmartThings support documentation  prominently features a “How to Reset” section so there probably will be need to do so at some point.

The last method I’m going to talk about does not involve any app or personal hardware to carry with you besides your phone. It does, however, require a fair amount of setup to use. The premise is, if you are connected to your home’s wifi access point, you are home. If you are not connected, then you’re away. To make your phone’s connection status available to SmartThings, we’ll need to use a service we’ve previously discussed called If This Then That (IFTTT). IFTTT is meant to connect various internet based services and allow event triggers on one service to cause something to happen on another service. For example, Wyze cameras and SmartThings do not talk directly to each other but each has an IFTTT integration. This allows us to create an IFTTT recipe that states “If Wyze Camera 1 detects motion, then have SmartThings turn on the foyer light”. In our case, we need a wireless router that can talk to IFTTT. You can find a list of compatible routers in the IFTTT website. I personally use and love Google Wifi and find its mesh to be extremely reliable. On the SmartThings side, we need to set up a Virtual Presence Sensor. This can be done via the IDE on the SmartThings website - I’ll put together detailed instructions in a future post. The Virtual Presence sensor has two features. First, it can report “present” or “not present” just like a regular presence sensor. The second feature is what makes it “virtual”. Rather than have its presence state controlled by location or Life360, it has an on/off switch just like a light switch that allows presence to be toggled manually or via automation. Once you’ve connected both your router and SmartThings account to IFTTT, you need to create a recipe that states “If my phone connects to Google Wifi, the tell SmartThings to turn off my virtual presence (“off” means present for some reason)” and the inverse “If my phone connects to Google Wifi, the tell SmartThings to turn on my virtual presence”. As with all the other methods, this one is not without drawbacks. If your phone battery dies (or you simply turn off your wifi) you will immediately be marked “not present” and any automations that use that status will run. The other app-based methods will freeze your current status when your phone turns off and won’t change it at that moment; which might be more desirable.

We’ve discussed many ways to detect presence. None of these methods are completely reliable and you’ll have to figure out which apps work best with your various family members’ phones. In my house, I have 3 SmartThings Classic apps, 1 Life360 and 1 wifi method. It’s important to make sure your presence works properly because it is the basis for many automations that involve setting away mode or arming an alarm system. In a future post, we’ll look at some projects you can work on once you have a reliable home presence setup.


Popular posts from this blog

A Beginner's Guide to Smart Bulbs

Migrating Z-Wave Devices to Home Assistant

Please, Please, Please Do Not Disturb!