Stop using ChatGPT to do your writing.
That is perhaps the key element of the above discussion.
If the purpose of your (original) post was just to share and discuss your experience with other users on how Homey handles geolocation, its fine to do so here.
If your purpose is (also) to get Athom to improve geolocation handling, then @robertklep is just helping you in both managing your expectations and how to best get Athom’s attention on your suggestion. Athom does not actively read along in this forum. Like for raising issues, for improvement suggestions you can reach out to them via Support | Homey.
Hi SunBeech.
As you mentioned, what I’ve shared in this thread is explained clearly so that everyone can understand and contribute their perspectives constructively, no matter what they wish to say.
hey @Jose_Luis_Garcia ,
This is exactly why I wrote this tutorial a few months ago.
If you are using an iPhone, this might be the most accurate way to implement presence. The native geofencing that iOS itself uses for it’s shortcuts is far more accurate than any third party app can do.
My dear lord. I’m out.
Like I said, Homey’s precense detection is pretty basic. I would recommend to use Olisto for precense in your use case, it allows you to set a custom radius (circle around your house where it will be determined as home) and it allows you to add multiple locations and trigger based on those.
Hello Smarthomesven,
I have tried to download the Alisto app and it is not possible from my Samsung S25.
It seems like it isn’t available in the Play Store for newer Android versions.
In many cases, the app would work fine on the newer Android version (it works fine here on my S24 FE on Android 16). If you’re comfortable with it, you can also download Olisto as an APK from their website and then sideload it.
Homey’s presence detection is based on GPS and that is never very accurate unless you’re constantly using our phone.
I have made my own system based on WiFi connection which is around 30 meter accurate.
This method does require the phone to be connected to WiFi at all times or at least when at home or arriving at home. It also requires your phones to have fixed IP addresses within your home LAN.
My own version is more complex than the one below. It allows for a small delay to avoid “leaving home” when your phone is only switching WiFi Access Points for 2 seconds.
This is the core idea of it:
Let me know if you want the full version.
Regards,
Dion
Hello Dion!
It’s a good solution I’d like to try.
Please share here how it is done.
If you have a WiFi router/access point of one of the brands for which a Homey app is available (like ASUS), then you can use your phone’s connect/disconnect action as a trigger for a flow that marks you away/home.
Hola Jose Luis Garcia,
Here is my full flow to detect my presence at home, for one person.
I use multiple separate copies of this flow, one for each person.
Explanation from top to bottom.
Guest Mode
I added the Guest Mode later to easily disable the whole presence detection for a special case where we had guests while we were not at home ourselves.
Delay
To avoid simultaneous detection, i vary the delay on each person’s flow. This one uses the 0 second delay, the others use higher numbers.
Homey will run all these detection flows at the same time (every 10 seconds) but the actual network check will be delayed by a few seconds which causes subsequent action for each person to trigger at slightly different times, preventing interference.
PS. The actions taken when someone comes home or leaves home are run in separate flows triggered by the Home Presence change.
The network check
The Logic action sends a mostly empty network check to the IP address of a person. That phone must have a fixed IP address assigned on your Local WiFi network (LAN).
The phone does not need to have any extra software installed.
But it should automatically connect to your WiFi or Homey to be able to detect it.
The network check will always cause an error but your (phone’s) presence will depend on which error it receives:
- Homey will receive error ECONNREFUSED (Connection Refused) if your phone is connected to the LAN but actively blocks this check. This means that your phone IS present, otherwise it could not give this error.
- Home will receive error EHOSTUNREACH (Host Unreachable) if your phone is not connected to the LAN and the network check will result in a timeout error, no response from your unconnected phone.
var_phone_check_dion
This variable is used to add a delay when you are not really leaving home but when your phone decides to switch Network Access Points or when it just disconnects for a few seconds when you’re walking upstairs or downstairs. This does cause a delay in the “leaving home detection”. ( x (times) = approximately 90 seconds delay. I think it is worth preventing the otherwise many false checks.
The left part of the flow only resets the var_phone_check_dion to zero instantly. You cannot have a false check on being detected as connected. And a delay when arriving home is very annoying and not needed.
Presence check
The check whether I am at home, or out of the home already is just to prevent multiple Logs.
Logs
Logs are not required but very useful when troubleshooting.
Feel free to improve on, critique or copy this mechanic.
It has been working quite well over the past years.
The downside of this approach is that your presence is completely tied to your phone WiFi connection. If you have shitty WiFi, this is not for you.
Btw, Homey’s own presence detection is also dependent on your phone but it doesn’t even work well.
This same mechanic might also be possible using Bluetooth but I chose WiFi because of the better range (and multiple Access Points) in and around my house.
Regards,
Dion
I asked Gemini to improve on my manually created explanation above.
The rephrased version might help some people:
Hi,
Here is my full flow for localized presence detection. I use separate copies of this flow for each person in the house.
The Logic: From Top to Bottom
-
Guest Mode: This acts as a global “kill switch.” I added this to easily disable presence automation when we have guests staying over while we are away.
-
Staggered Delays: Every person’s flow triggers every 10 seconds. To avoid network collisions or simultaneous actions, I vary the initial delay (e.g., 0s for me, 2s for Nicole). This ensures the network checks and subsequent flows (triggered by presence changes) don’t fire at the exact same millisecond.
-
The Network Check (The “Secret Sauce”): The logic sends a simple HTTP GET request to the fixed IP address of the phone on the local LAN. No extra software is needed on the phone. The presence is determined by the type of error Homey receives:
-
ECONNREFUSED(At Home): The phone is on the network and actively refused the connection. This confirms the device is present. -
EHOSTUNREACH(Away): The phone is not on the network, causing a timeout.
-
-
The Debounce Variable (
var_phone_check_dion): Phones often drop Wi-Fi for a few seconds when switching Access Points or moving between floors. To prevent “false away” triggers, I use a counter:-
Arriving: Resets the variable to
0instantly. There are no “false positives” for being home, and I want the lights/locks to trigger immediately. -
Leaving: It requires 9 consecutive negative checks. At a 10-second frequency, this creates a ~90-second grace period. This effectively filters out temporary Wi-Fi drops.
-
-
Presence Verification: I check if the state is already “At Home” or “Away” before updating to prevent redundant log entries and repeated triggers.
-
Logs: Essential for troubleshooting and seeing exactly when the “grace period” was triggered.
Final Thoughts This mechanic has been rock-solid for years. The only downside is that it is 100% dependent on your Wi-Fi quality. If you have dead zones in your house, you’ll need to increase the debounce count.
I chose Wi-Fi over Bluetooth because the range is superior and covers the entire property through multiple Access Points. Feel free to critique or adapt this for your own setup!
Regards, Dion
Hi Dion!
I’ll be following this with great attention and interest. ![]()
Just use the smart presence app..


