HomeKit presence automations

Have there been any reports of presence automations not working in HomeKit? My virtual switches no longer respond per the automation when users leave or arrive at home. Seems to have stopped working in the last week.

When my son’s iPhone updated recently, I had to open the home app on his phone and recreate the automation for it to start working again. No one else’s iPhone presence stopped working though.


Our two iPhones are still happily running HomeKit Automations whenever we arrive and depart, to update virtual Switch+Presence devices in Hubitat. I am using the Hubitat built-in HomeKit integration for these (versus Homebridge.)


My HomePods were playing music when I got home today so the arrival automation ran fine.

iOS 17.1.2

1 Like

I find they occasionally stop working after a major iPhone iOS update.

If that happens, I just use the test function in the HomeKit automations and after that they work perfectly.


The one on my own phone keeps working fine but my wifes will randomly stop working for some reason. It used to be 100% reliable until the iOS 17 update.

Just tried resetting it via the "Test" button as @dJOS suggested, we will see if that fixes it when she goes to work today.


I’ve had the exact same experience since ios17 (or Apple TV update). I have been charting it and I can confidently say it’s on Apple’s end for sure, not the HomeKit integration or homebridge. Apple will randomly deem both my wife and I’s phone not present in the middle of the night, and it won’t deem us as present until we leave and come back again (sometimes not even then). I hadn’t connected the occurrence to iOS updates but maybe that’s it…We have iPhone 13 Pro and iPhone 14 Pro

1 Like

Just chiming in to say that this just started happening on my wife's phone in the last week. I noticed she randomly "returned home" long after she had been there the other day.

Doing to "Test" on both my triggers for the SO phone did not work. She has been at work for a few hours and it still thinks she is home....

Very frustrating.

This is what I have found works best. Delete the automation for the phone that isn’t working. Then recreate it on that same phone. Basically, each presence automation should be built on the respective phone. Once I did that with my wife’s, I’ve had zero issues with the automation.

1 Like

Yeah I tried re-doing it from my phone which worked for a while, I was going to try doing it from her phone next. Guess I should do that, sounds like it might be the fix.

@user4322 just some suggestions you might find helpful - I use a combo of Wifi and iCloud for maximum reliability.

For my Wife and I, my setup looks like this:

1x Virtual Presence Device for each

1x iPhone Wifi Presence Device each (2 min timeout)

1x iCloud Hybrid Presence Device each (this gives you a switch you can expose to HomeKit)

1x Advanced Combiner App for each (to tie them all together)

But for my daughter and guests, I only use Wifi detection. I've found that that iPhones usually popup on the network at least once every 15 mins which is enough for reliable presence detection.


The one big caveat you must be aware of is iPhone's (and I assume Android's) by default have "Private WiFi Address" turned on. You need to turn this off for your Home Wifi SSID on each iPhone. Once this is done, you can then reserve the IP Address they are using in your router. Without a reserved IP address, WiFi detection wont work (at least not using the Hubitat driver Im using).

1 Like

My wife's iPhone used to be the one that was consistent, and mine was only getting presence correctly about 90% of the time. However, it recently changed...

I've updated her OS to the latest, deleted the home from her phone, re-invited her to join the home, deleted the "when she arrives" and "when she departs" from my phone and replaced it with the same on her phone. I have still yet to test it, but hoping this will work.

I have a simple custom app that simply provides two pair of web hooks (/arrived and /departed), internal and cloud ones. On the phones, there's a "Shortcuts" automation that runs a Shortcut that hits either the arrived or departed web hook. The app then sets an associated presence sensor to the proper state.

Could do the same thing with a Rule Machine rule, as well, as they provide web hook triggers.

Doesn't rely on HomeKit, but does need iOS for the Shortcuts app. Presumably there's something similar on Android, but I have no idea what.

I've found this slightly more reliably/responsive than HomeKit based automations, and it doesn't depend on the (less than 100% reliable) HomeKit app in Hubitat. Even with the "restart hourly" box ticked, mine still randomly stops responding in the Home app, which means any automations in the Home app would fail to toggle a virtual presence switch.

1 Like

Just curious…. Any reason you wrote a custom app for this versus simply using the built-in Maker API App?

I don't have Maker API installed, and it's far heavier than I need. My "Shortcut" is just GET on an URI. It doesn't need to do anything else. Does Maker API allow for a simple GET to toggle a presence entity? AFAIK it needs POST + some JSON... more than I want to try to deal with in the craptastic Shortcuts UI.

Same for Rule Machine. Rule Machine is great, but it's a bit of a pig. The amount of RAM and CPU it takes for simple things is pretty crazy. It's not the fault of RM, it's just the nature of such a complex "do everything" automation maker. Yes, it can provide a web hook trigger and run actions based on that, but it's a lot more RAM and CPU.

Also, my app pulls in "Mode", so I can tell it to not mark me away during "Night" ever. I've got "Guest Mode" and "Vacation Mode" switches for the one or two times a year I spend time outside my house at "Night" mode. The app I wrote also has a configurable "away delay" where it waits a few minutes before marking me away. Between those two, it's been both reliable and false-away free.

The biggest difference I see from it compared to the HomeKit automation turning a "virtual presence + switch" device is the speed at which I get marked "home". There's been more than a few times where I'll be on my porch, on WiFi, and Apple Home still hadn't marked me as "home" using that method. Which is pretty annoying because I really like my automatic door unlock. I'm much less concerned about the speed of being marked away, and specifically I have an additional delay added so I don't get marked away falsely.

Yes, it does support exactly that. No JSON payload required to simply change the status of a device. Just a simple GET with params.

The MakerAPI POST URL is completely optional, as it is for notifying a remote app of status changes of the devices you select to allow MakerAPI to expose.

Ahh, yes, this makes good sense in your specific use-case. Only a custom app is going to allow such logic to be added.

My presence in HomeKit is no longer working.

The HomeKit presence is still working on my sons iPhone. We both have upgraded to iPhone 15 Pros and are on the the latest iOS.

When I hit the test buttons in HomeKit for my presence, it works. I have deleted the HomeKit automations and recreated them. Still nothing.

Any further suggestions?

Is it even possible to turn off presence detection on an iPhone? I have looked to see if there is a global setting somewhere but can not find anything.

Mine got much less reliable with iOS 17, then my HomePod mini just randomly died and I have not replaced it yet. So currently its not working at all due to that.

Were your old phones stuck on an older iOS? Could be why it was working before the phone upgrade.

Thanks for the reply.

My old phone was an iPhone 12 on iOS 17 before the switch at the end of December.

My son replaced a iPhone 8 that was on iOS 16, so if anything, I would have assumed issues with that config over my case.

The worst part is I am not even sure when it stopped working since my automations for my presence are still driven from the Locative app.

I checked my logs and there has not been ANY activity with my HomeKit presence.

I am certain that it was working when I originally set it up.