Presence detection is, as you say, hard. It’s particularly hard with multiple people in the house, because you can’t plan for every possibility (such as someone forgetting their phone at home). You can’t even be sure that a device has left the property…it might just be turned off.
I tried the IFTTT route, and you’re not missing anything. It’s really slow to update, which makes it almost useless for entering a zone (though fine for leaving). On Android devices you can use Tasker to trigger via the openHAB app, but I’ve also found Tasker’s geofencing to be mediocre. And to be fair, that’s just because devices don’t update their positioning constantly (I assume to preserve battery power).
Can I ask why you’re against static IPs? openHAB’s network binding is really quick to pick up when a device appears on WiFi, and I’d say that this is one of the fastest ways to detect a device. There’s nothing particularly bad about static IPs from a networking perspective, and the work is minimal if you’re only doing it for a few devices.
I can’t remember where I read it here, but I think the best suggestion was to use multiple vectors for determining presence, so that you’re not relying upon one method to work every single time.
Personally, I find it to be too much of a bother, so I just resolved to having an “Away Mode” switch. I tell Google Home that I’m leaving, and it turns Away Mode on. When I get home, Away Mode turns off when I unlock my door or trip the motion sensor. And then it’s off until I intentionally turn it on again. Yes, it’s less automated, but it also means that if I reboot my phone, Away Mode isn’t going to suddenly activate and turn off all of the lights.
I’m not saying that you should give up on presence detection, but that it’s very tricky to get working in a reliable way…particularly when there are multiple humans in your household.