Author |
|
GadgetGuy Super User
Joined: June 01 2008 Location: United States
Online Status: Offline Posts: 942
|
Posted: June 19 2013 at 13:10 | IP Logged
|
|
|
I'm thinking that a nice and reliable way to turn my
alarm system on off automatically using PowerHome would
be to detect the presence of my iPhone in the house.
Since I always have my iPhone with me, if it is
detectable then I am home and the Alarm should be Off.
But if no iPhone is detected then I am away from home and
the alarm should be set.
I discovered that the phone can be pinged on my LAN, but
only if it is on and not asleep. As soon as you tap the
power button or the wake timer times out, the phone goes
into sleep mode and cannot be pinged.
But emails seem to come in, along with alerts so clearly
the phone still has one eye open
Is there thus any way to determine if the phone is in the
house, via LAN queries or location detection (ie, are the
GPS coordinates=to Home?)
============
Editing this post to get the following results at the top of the thread!!
I have developed code to reliably detect an iPhone (a non-trivial feat as the iPhone is a very different device) on your local LAN is now available here . . .
(08/26/13) The link below is UPDATE v2.4.2 to prior eleases that improves stability and error recovery. It's download is highly recommended.
(08/27/13) Bad bug introduced into v2.4.2. Do NOT download. Working on fixes, will post as soon as fix available.
(08/27/13) So far, so good. Fixes have been stable on my system, so releasing v2.5.0. NOTE that the structure of the findMyPhone.txt file returns contents that have changed in structure. If you are not examining that file to take further actions, then no problem, else, note that extra line feeds were removed.
(08/27/13) Sorry 'bout that but found another bug in testing that prevented always discovering if the phone was not on the LAN. Got that fixed, so the new version is v2.5.1
(10/25/14) My bad in not updating this post. Many improvements added to v2.6.9 to make iPhone finding more reliable.
The latest code is now ...
findMyPhone-v2.6.0
In addition, there is now a findMyDroid, which incorporates many of the reliability features of the iPhone code and works much better than just trying to ping a Droid.
This code can be found at ...
findMyDroid-v3.1.3
The ZIP files for these App contains the raw VB .Net code, a Windows executable, and a User Guide with instructions on how to integrate into PowerHome.
I have found this App useful in a number of manners. I use the presence/absence of my phone to disarm/arm my motion detection facilities on my security system so as to not clutter up the video recording cache with unnecessary video captures when we are home.
It is also very useful in determining if we are HOME or AWAY in order to control nighttime lighting. If we are away for an extended time we generally leave by 9AM in the morning. So at 4:30AM every morning I clear a PH global of {HOME}. I then wait until after 10AM before using the iPhone's presence to set that global. If we are not home anytime after 10AM and before {Sunset} then
at sunset the home lighting scenes are much reduced from what they would be if we were HOME.
Hopefully you will find it as useful as I have.
Edited by GadgetGuy - October 25 2014 at 10:16
__________________ Ken B - Live every day like it's your last. Eventually, you'll get it right!
|
Back to Top |
|
|
lizaoreo Groupie
Joined: February 11 2013 Location: United States
Online Status: Offline Posts: 75
|
Posted: June 20 2013 at 08:13 | IP Logged
|
|
|
I think the iPhone shuts of wifi when it's asleep. I know mine always wakes up disconnected and connects
after a second or two. It gets emails and such via the push notification system over the cell network I
believe (but that's a guess).
I have seen where one guy had a router flashed with OpenWRT and used that to execute a CRON job whenever
the phones were detected on the network or detected to have left the network. Throwing out my
understanding above, maybe the iPhone keeps some kind of passive connection to the wifi network, but is
unable to respond to pings and such during the lower state.
|
Back to Top |
|
|
GadgetGuy Super User
Joined: June 01 2008 Location: United States
Online Status: Offline Posts: 942
|
Posted: June 20 2013 at 08:28 | IP Logged
|
|
|
Thanks lizaoreo -
I may have to try the router approach. I've had my phone
in Airplane mode for the last 24 hours but with wi-fi re-
enabled to see if it gets alerts, or email.
If nothing comes in then it is truly asleep with regard to
any LAN connections.
__________________ Ken B - Live every day like it's your last. Eventually, you'll get it right!
|
Back to Top |
|
|
smarty Super User
Joined: May 21 2006 Location: United States
Online Status: Offline Posts: 728
|
Posted: June 20 2013 at 12:38 | IP Logged
|
|
|
Watching this topic.....
__________________ Elk - Insteon - BlueIris - DMC1 - PowerHome - XLobby - HA_Bridge w/Dots - Brultech
|
Back to Top |
|
|
GadgetGuy Super User
Joined: June 01 2008 Location: United States
Online Status: Offline Posts: 942
|
Posted: June 20 2013 at 14:27 | IP Logged
|
|
|
I just checked my phone and I have multiple Notification
alerts as well as email. I have been off the cell
network for almost 24 hours but wi-fi is enabled, so
these messages are coming in thru my wireless LAN.
Therefore it seems the phone is actually listening to som
things, but for some reason does not respond to a ping at
its (LAN) IP address.
Now if I can determine kept alive access method, and it
is two way (not just passively accepting messages) then
perhaps it can be polled to tell when it is on the LAN.
__________________ Ken B - Live every day like it's your last. Eventually, you'll get it right!
|
Back to Top |
|
|
GadgetGuy Super User
Joined: June 01 2008 Location: United States
Online Status: Offline Posts: 942
|
Posted: June 22 2013 at 07:40 | IP Logged
|
|
|
Am getting much, much closer!
Discovered that Apple's "bonjour" which provides "Zero
Configuration Networking" allows one to access iOS
devices (also printers, etc) using the special "local" IP
tag.
Thus my iPhone is always detectable on my wireless LAN
(assuming of course that the phone has wi-fi enabled) as
"Ken-iPhone.local:62078".
A simple browser access to this IP:port address results
in a "No Data Returned" response, versus a "Page Not
Found" error, if the phone is not on the LAN at all.
I installed "bonjour" on my PH computer and verified I
can discover the phone with my browser.
Now I just need to figure out how to get PH to do the
same thing.
I tried ph_geturl(), but get a socketblob error.
Hoping to figure out how to get around that and get this
working.
Will keep progress posted!
Edited by GadgetGuy - June 22 2013 at 07:42
__________________ Ken B - Live every day like it's your last. Eventually, you'll get it right!
|
Back to Top |
|
|
GadgetGuy Super User
Joined: June 01 2008 Location: United States
Online Status: Offline Posts: 942
|
Posted: June 22 2013 at 10:40 | IP Logged
|
|
|
Making more progress.
I found that when my phone is awake it is discoverable
using a browser with an address of . . .
"Ken-iPhone.local:62078"
(as are all of our other iOS devices in a similar
fashion). I get a "No Data Returned" error, BUT that
indicates the phone was accessed, just that nothing was
returned. If the phone is not present then a "Page Not
Found" error occurs.
That is just a more general way of accessing the phone
versus http://192.168.1.92:62078 which is its actual IP
network address.
If I can discover the phone with a browser I am a long
way towards using it to automate my system.
Unfortunately the ph_geturl() function crashes, but
ph_)getwburl() grabs the html response from the phone
which is a "Navigation Cancelled" message, but that also
causes the IE browser to pop up the same web page and it
then crashes when you close it?
The problem is that the 62078 port only is alive when the
phone is awake. After the Auto-Lock timeout, the phone
goes back to sleep and does not respond.
Dealing in some strange territory here.
All of this "works" only when the phone is alive, but not
when it is asleep. When asleep, there is no response
from port 62078.
Does anyone know if there is an iPhone port that will
allow a connection independent of phone state?
Ken Burkhalter
Aspire to inspire before you expire.
__________________ Ken B - Live every day like it's your last. Eventually, you'll get it right!
|
Back to Top |
|
|
GadgetGuy Super User
Joined: June 01 2008 Location: United States
Online Status: Offline Posts: 942
|
Posted: June 25 2013 at 07:16 | IP Logged
|
|
|
Original message DELETED as it referred to a spammers post
here, and Dave removed that!
Edited by GadgetGuy - June 25 2013 at 14:44
__________________ Ken B - Live every day like it's your last. Eventually, you'll get it right!
|
Back to Top |
|
|
MrGibbage Super User
Joined: October 23 2006 Location: United States
Online Status: Offline Posts: 513
|
Posted: June 25 2013 at 07:41 | IP Logged
|
|
|
Are you sure you don't have a way to keep wifi on while the phone is asleep? My android
phone has that as an option (last few phones have all had that option, in fact).
__________________ Skip
|
Back to Top |
|
|
GadgetGuy Super User
Joined: June 01 2008 Location: United States
Online Status: Offline Posts: 942
|
Posted: June 25 2013 at 12:31 | IP Logged
|
|
|
Skip -
Good thought, but to the best of my knowledge the iPhone
offers no such feature. To conserve battery, the phone
auto-locks after a timeout and shuts down all transmission
radios. It ignores everything received except a few wake-
on-lan type TCP messages which will wake it back up.
I'm looking now into the 3-way-handshake protocol (SYN,SYN-
ACK,ACK) to see if I can get a response from a sleeping
phone. I think I'm close, but not there yet.
Edited by GadgetGuy - June 25 2013 at 12:32
__________________ Ken B - Live every day like it's your last. Eventually, you'll get it right!
|
Back to Top |
|
|
GadgetGuy Super User
Joined: June 01 2008 Location: United States
Online Status: Offline Posts: 942
|
Posted: June 25 2013 at 13:36 | IP Logged
|
|
|
YES!!!!!
SUCCESS!!!
Using the Wireshark network trace tool, I determined that
the phone awakes (just had to wait for iTunes to query
it) when it sees the standard 3-way handshake TCP
protocol sent to it.
Using the following ph function . . .
Code:
ph_sendsocketdata1 ( "192.168.1.92", 62078, 6, "\x16" ) |
|
|
where 192.168.1.92 is the IP address of my phone and
62078 is the port on the IP that responds to TCP traffic,
6 is the proper FLAG setting to get Control characters
thru, and 16(hex) is the SYNchronize ASCII command, I
find that the phone responds by completing the handshake
sequence.
I sense this success as a null message returned by the
sendsocketdata() function. If the phone is not present,
then the return socket message is "*ERROR* - TIMEOUT
WHILE CONNECTING"
If I don't get the error, the phone is in my home and if
the error occurs then I am gone (with my phone) and the
security system is alarmed.
To minimize phone battery drain from continual
awakenings, I use a Timed Event to poll the phone every
30 minutes.
Talk about being a happy camper!!!
======
Just to show the more general way of addressing your iPhone on the LAN, use this syntax . . .
Code:
ph_sendsocketdata1 ( "ken-iphone.local", 62078, 6, "\x16" ) |
|
|
where "ken-iphone" is just your phone's device name as set in iTunes when you defined the phone. It can be found in the Settings.General>About>Name field.
Edited by GadgetGuy - June 26 2013 at 09:43
__________________ Ken B - Live every day like it's your last. Eventually, you'll get it right!
|
Back to Top |
|
|
MrGibbage Super User
Joined: October 23 2006 Location: United States
Online Status: Offline Posts: 513
|
Posted: June 25 2013 at 13:49 | IP Logged
|
|
|
How can you be sure that the phone's IP address will be the
same every time? If there is a way to go to a fixed IP
address, that will help you at home, but could cause you
trouble if you ever try to join a network outside of your
home.
__________________ Skip
|
Back to Top |
|
|
dhoward Admin Group
Joined: June 29 2001 Location: United States
Online Status: Offline Posts: 4447
|
Posted: June 25 2013 at 13:58 | IP Logged
|
|
|
Skip,
I can answer that one . I just go into my router configuration and reserve a DHCP address based upon my phone (or other devices) MAC address. That way nothing changes on the phone and it always get the same IP address.
Congratulations Ken!!. Glad to hear you got it working to your satisfaction.
Dave.
|
Back to Top |
|
|
lizaoreo Groupie
Joined: February 11 2013 Location: United States
Online Status: Offline Posts: 75
|
Posted: June 25 2013 at 14:08 | IP Logged
|
|
|
Awesome, I think I'll set that up just to turn off the
lights if no one is home... doesn't matter how easy it is
to turn everything off, someone always manages to not do
it.
So I assume you just turn the alarm off manually? :)
Yep, DHCP reservations are awesome, everything in my house
has a reservation so I can keep up with what's what, I even
have an address scheme laid out in Excel I use to decide
what types of devices get what range of addresses.
|
Back to Top |
|
|
MrGibbage Super User
Joined: October 23 2006 Location: United States
Online Status: Offline Posts: 513
|
Posted: June 25 2013 at 14:14 | IP Logged
|
|
|
Great idea, Dave. Ken, I would like to hear the rest of the logic that you
plan to use. For instance, if you are going to use it to auto-arm your
alarm system when you are gone, how will it handle when you are gone, but
other family members are still home. What will you have the HA do when it
detects your presence? What other exceptions do you have to deal with.
I suspect that this is still early in the process, so you probably don't
have answers to all of these. In fact, you probably won't have the logic
all worked out for quite a while as you live with it. So just keep this
thread in mind and come back and tell us what considerations and exceptions
you had to account for, and what cool things you have it doing based on
your presence/lack of presence.
Congrats, Ken!
__________________ Skip
|
Back to Top |
|
|
GadgetGuy Super User
Joined: June 01 2008 Location: United States
Online Status: Offline Posts: 942
|
Posted: June 25 2013 at 14:42 | IP Logged
|
|
|
Re the phone address you can also use the phone's Domain
name when you are on your lan.
My phone, for instance is . . .
"Ken-iPhone.local"
Where "Ken-iPhone" is the name of my phone as set in
iTunes device config.
This will work no matter what the actual IP address is.
I happen to use the DHCP reservation approach as
suggested by Dave.
Re. Logic. I'm not planning to use the phone presence to
actually turn my alarm system on/off (but if you lived
alone that would work) for the reasons you point out of
"others around".
What I am doing it enabling my camera motion detection
triggering, to keep the clutter out of the captured file
folder. There is no point in capturing motion when we
are home, just when away. Since the wife and I usually
are away together, that works. If I capture video when
I'm gone and she's home, no big deal. Most of the
clutter comes in the evening when we are moving around
the house and I wanted to eliminate as much of that as
possible.
__________________ Ken B - Live every day like it's your last. Eventually, you'll get it right!
|
Back to Top |
|
|
smarty Super User
Joined: May 21 2006 Location: United States
Online Status: Offline Posts: 728
|
Posted: June 26 2013 at 08:34 | IP Logged
|
|
|
Just to clarify....is Bonjour the only additional software you had to install
on your PH machine to make this work?
Is Bonjour a service? Does it affect your PH machine stability? Startup
speed or anything else you may have noticed?
__________________ Elk - Insteon - BlueIris - DMC1 - PowerHome - XLobby - HA_Bridge w/Dots - Brultech
|
Back to Top |
|
|
GadgetGuy Super User
Joined: June 01 2008 Location: United States
Online Status: Offline Posts: 942
|
Posted: June 26 2013 at 09:37 | IP Logged
|
|
|
Actually, after the fact, I don't think Bonjour is needed
at all. I didn't discover that until after I installed
it, and just haven't bothered to remove it yet.
An easy test is without Bonjour just wake up your phone
so the screen is lit and using the Windows Command window
send a ping first to your iPhone's actual IP address. EG,
ping 192.168.1.92
That should work.
Then ping by name. EG,
ken-iphone.local
The name of your phone is found in . . .
Settings>General>About>Name
That should also work.
Edited by GadgetGuy - June 26 2013 at 13:54
__________________ Ken B - Live every day like it's your last. Eventually, you'll get it right!
|
Back to Top |
|
|
smarty Super User
Joined: May 21 2006 Location: United States
Online Status: Offline Posts: 728
|
Posted: June 26 2013 at 12:57 | IP Logged
|
|
|
From the little testing I have done, it appears that from a CMD PROMT (aka a dos window), the "ping" command seems to accomplish the same task.
I can ping "sleeping" devices at home (my ipad and old iphone) and they respond. When I ping the wife's or my iphone (which we have with us at work), the ping does not respond and times out.
I have yet to try this ping approach from within PowerHome, but I would suspect it would work the same.
__________________ Elk - Insteon - BlueIris - DMC1 - PowerHome - XLobby - HA_Bridge w/Dots - Brultech
|
Back to Top |
|
|
smarty Super User
Joined: May 21 2006 Location: United States
Online Status: Offline Posts: 728
|
Posted: June 26 2013 at 13:03 | IP Logged
|
|
|
Works the same from within PH as well.
Sleeping or On...makes no difference...
As positive number means the device is found, negative means it's not there...
__________________ Elk - Insteon - BlueIris - DMC1 - PowerHome - XLobby - HA_Bridge w/Dots - Brultech
|
Back to Top |
|
|