First of all, you need homebrew installed on your system. If you haven't, visit http://brew.sh for instructions, or let me know and I will try to guide you.
Then you need to install
arp-scan. To do it, open a Terminal and type
brew install arp-scan.
Next step. Save the following script, I called
check-iphone-available.scpt, but your can rename if you want.
set IPHONE to do shell script "if /usr/local/bin/arp-scan -l | grep your-iphone-mac; then echo 1; else echo 0; fi" user name "your-username" password "your-password" with administrator privileges
tell application "System Events"
tell process "Messages"
tell menu bar 1
tell menu bar item "Messages"
tell menu "Messages"
tell menu item "My Status"
tell menu "My Status"
if IPHONE is not equal to "0" then
click menu item "Available"
click menu item "Away"
your-username must be an administrator user that can sudo on your computer.
your-password password for that user.
your-iphone-mac can be obtained on your iphone, go to
About and copy
chmod 775 check-iphone-available.scpt.
The script execute as administrator the command
arp-scan. This command sends ARP packets to hosts on the local network and displays any responses that are received. The
grep command look for your iphone on the answer receive by
arp-scan. If the iphone is found, then return 1, otherwise, return 0. On 1, the script do click on Available menu item in Messages, on 0, the same on Away (can be changed by
On the phone, etc).
So, let's do it automatically.
Go to folder
/Users/your-username/Library/LaunchAgents and save there the following plist file. I named it
com.username.checkiphone.plist, but again, feel free to change it.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
The file is pretty self-explanatory. We will launch the command
/usr/bin/osascript /Users/your-username/bin/check-iphone-available.scpt every 60 seconds, will be launched at load, will save errors on
/tmp/com.username.checkiphone-available.err and logs on
Last step, tell the Mac launchd daemon to load it.
launchctl load com.your-username.checkiphone.plist
To stop the script, just replace the word
unload in the above sentence. When your restart your computer the script will be load again. To prevent it, move it to another folder.