I have a microcontroller-based widget connected to my home network that monitors some sensors and controls the garage door. I'd like for it to work one way if I'm home and a different way if I'm not home. It could determine if I'm home by looking for my cell phone on the local network. Is there a simple way to do this? The prefered senario is to find the phone at any IP address (using MAC ID?), but I could have the router assign it a fixed IP. Also, it would be better if I didn't have to run an app on the phone, since that will require Android programming and battery drain.

First I understand what you asked. Next if you hard assign the phone IP address you break what could be a way out. That is, your app on the widget could query the router for a list of current DHCP clients and change depending on if the client is there or not. I won't go over issue of lag in that scenario.

If the lag is an issue then the widget tries to ping the phone which you have to test if that works.

So that's all on the widget to perform and we don't need to write or install an app in the phone.

Thanks for the reply @rproffitt. But I do not know how to "query the router for a list of current DHCP clients" in C++ code, and hence the reason for my post. And the lag may be an issue if it's more than a few minutes.