Accurate/Reliable Presence detection

I have been searching for a accurate/reliable presence detection solution, but I have not been able to find one or I am messing it up (without knowing). Is there a solution is that is reliable?

First one is GPS tracking: all fine and well, but this does not (I think) work without Nabu Casa or a VPN solution. Why? Well, the Home Assistant application can’t update your location if you are not able to connect to HA. A permanent VPN could be a solution, I could probably live with that, but my wife (and kids) will not be liking that solution. And it is kind off fiddly: connection issues etc…

Router tracking: I have a Ubiquity Dreammachine a an extra AP of Ubiquity in house. They integration is flaky at best, will report my device as away will I am sitting on the couch doing nothing. Maybee combined with a timer this could work some what. I am not yet convinced.

Router tracking 2: Using NodeRed flow to check werther specific MAC addresses are connected works. But the implementation fails almost weekly: I had Unifi controller changes that needed attention before it got working again. Unifi setup some rate limiting on logins, so checking every 10 seconds will cause the limiter to trigger. In my case it took a few hours before I was able to check on Unifi again, very annoying.
Other problem with this, is that the call I was able to make overwrites any attributes to a person entity. So I’ve set a picture to me and my wife. When NodeRed flow updates, the picture is no longer visible when viewing the entity. Updating person helps, until the next NodeRed update (every minute).
This could maybe be fixed with a better API call, I was not able to figure out how to update a state without overwriting any other attributes.

Ping: I was hoping this would be the one, untill I read that modern phones usually do not respond when they are idle.
I was also not able to really implement this. Created a yaml file including this config:

- platform: ping
  consider_home: 0:05
  hosts:
    me_ping_tracker: 192.xxx.xxx.xxx
    her_ping_tracker: 192.xxx.xxx.xxx

And this in the configurastion.yaml:

device_tracker: !include device_tracker.yaml

For some reason it does not show the “me_ping_tracker” anywhere in entities. The test device trakcer I have created and deleted from config are still there and do nothing. Restared HA several times, no avail.

My question is: how do you handle presence without Nabu Casa or a permanent VPN connection?

Am I missing something obvious? Because for me this is really the essence of HA. Without presence detection I would not want to automate anything (turn on lights/heating when I am not home is not desired).
I see some posts about it, but usually they use GPS tracker but do not mention a VPN or Nabu Casa.

I wrote a few articles about this, but the TL/DR is that I use:

  1. Bluetooth (using monitor) for local home/away
  2. The Android app, with remote access, for where, but also for additional home/away

You do realise that you can also set up your own non-VPN remote access solution. Many people do that, whether direct (free Dynamic DNS or own domain + LetsEncrypt or ZeroSSL) or using Cloudflare Tunnels (with own domain).

I will have a look into those articles, thank you.

And about non-VPN solution. That means exposing HA to the Internet right? Although possible, I do not feel I have OpsSec knowledge enough to do that safely. But I’ll consider it, as I am also considering Nabu Casa to just be done with this stuff for a few euros a month.

Yes - it’s not hard, and HA’s own docs cover the highlights.

Nabu Casa isn’t any more (or less) secure than doing it yourself though. The same basics apply - strong (unique) passwords, use of MFA, etc.

I still have the wish to move all my home automation stuff to a seperate VLAN. Lock down that VLAN to my other home devices and then expose HA to the Internet. And ofcourse strong pass and MFA.

Still reading your “here we go again” article. This shows some promise that I can get this to finally work reliable.