Privacy aware location tracking in companion apps

PROBLEM: I love the fact that Home Assistant has great iPhone/Android apps and I can just tell my family members to install one app and be able to control the house. I would also like to use the location tracking in the app to tell HA when someone comes home/leaves, but it turns out that the apps ALWAYS send GPS coordinates with every location update, even if you only enable zone based tracking. This means that you can click on a person’s name anywhere in the UI and see the exact last reported location of that person. I don’t feel comfortable with other family members being able to track my exact location and so do they.

PROPOSED SOLUTION: I would love to have the option to choose between GPS tracking for those who need it and zone based tracking that never sends GPS coordinates to the server. The app knows the boundaries of zones, it can figure out which zone I’m in and just send the name of the zone to the server. The app also needs to clearly state the privacy risks of enabling GPS based location tracking.

ALTERNATIVES: Yes, there are alternatives like ping, NMAP, Wifi SSID, BLE, 3rd party apps, etc. But home/away presence detection is the single most needed use-case for location tracking and it would be great to have it built in the apps without disclosing too much information.

I tried posting an enhancement on GitHub, but the development team did not want to consider that due to the limitations of the current software architecture. I hope with enough votes we can get them to reconsider the necessity of such functionality.

Just to be clear, you only want to know if someone is home or not?
In that case disable all the tracking and use the wifi sensor.
It’s very reliable and fast

1 Like

Yes, that is an alternative, but it does not work if someone uses 4G. It also cannot tell if someone is in a specific zone if that zone does not have a separate wifi network.

You do understand that the difference between zone based and GPS based tracking is very minimal?
If I wanted to know your position then I could just add a few zones and keep adding and making them smaller until I got your (almost) exact position

A well designed app will show a list of currently defined zones during the onboarding process and ask “Here are all the zones. Do you agree to report to the server when you enter or leave one of those zones? Your exact location when you are outside of the zones will never be disclosed.”
If the list of zones on the server is changed and does not match the one the user agreed with, the app needs to get the user’s consent again.

2 Likes

Reading your feature request on github that is not at all what you want.

Another option is to have one admin account, this account creates entities that “translates” the GPS positions to zone based tracking.
Then all other accounts are user accounts with limited access so they only see the entities created by the admin account on their frontend.

I really like the approach. This was one of the first things when I moved to Home Assistant last year and inspected the companion app before I instructed my wife to install it on her mobile.

This would enable use cases as turning heating on or off when household members enter or leave a greater proximity radius (defined by a zone) around the house.

From a user story point of view it would somehow read like this:

As a end user, I want to select defined zones when I configure the Companion app (during initial configuration and through app settings), so that my presence in the selected zones is transmitted to Home Assistant without disclosing the exact GPS coordinates of the device I am running the Companion app on. This way, zone based use cases (e.g. alerting, heating rules, activating away-mode) can be implemented while preserving privacy about my exact location.

5 Likes

This feature already exists! In 2022.10 companion app settings you can choose “zone name only”. This will transmit only home or not_home state, and battery level.

This feature already exists! In 2022.10 companion app settings you can choose “zone name only”. This will transmit only home or not_home state, and battery level.

In my Companion app (Android) I see:

  • Background Location
  • High Accuracy Mode
  • High Accuracy Update Interval
  • Location Zone
  • Single Accurate Location

Even after reading all the descriptions I’m still confused and not able to set it right.

If this is not enough hassle the real struggle comes when some less tech savvy household members use an iPhone and the Companion settings is slightly different making it even more difficult to the point they might even hesitate to use Home Assistant.

It would be great if Zone name only settings could be set somewhere in the config.yaml globally.

Home/Away is a very important feature (for example for heating mode geofencing), but Home Assistant should make it easier for users to choose what they want other household members to see about them (especially when it comes to something as sensitive as their exact location).

This is a no brainer and should be definitely improved.

100% agree, I’d hesitate to recommend any housemates install the app without giving them a rundown of what location settings to disable. Basic Home/Away detection is a fantastic feature to highlight right out of the box, but the defaults seem creepy as heck and make me suspicious of any claim that HA “respects privacy”. If the app setup made it opt-in and prompted “Would you like to integrate this device’s exact location? This is optional but helps blah blah blah” then other questionable privacy settings after you say “yes” would be more forgivable.

I’m sure some people are already very attached to the exact current functionality and I’m certainly not suggesting to yank it out from under them. This is more a question of defaults and clear privacy messaging in the app.