Using your iPhone's location to start ZM recording
Why do we need it?
Your life doesn't always follow a schedule, does it? So how can you expect your camera to follow the same schedule every day? In this day of Connected Devices, most of us carry our phones with us all the time. So wouldn't it be cool if despite whatever you have in cron, there is a way to check if your smart phone is at home or away and depending on its location, you enable/disable recording?
Gotchas
Ah. super useful. But what's the big deal?
- How about I just allocate a permanent lan IP to my phone and ping it every 5 minutes?
- Great idea. Except it doesn't work with phones. When phones go to sleep mode, they don't respond to ICMP. (Apparently Blackberries do respond - how cute)
- Hmm, how about I arping or arpscan?
- Now you are getting closer. Unfortunately, that doesn't work for iPhones - at least for 5. It gives random results - and I can't seem to use it reliably
- If your phone does respond reliably to arping or arpscan, check out Christo's shell script here: http://www.zoneminder.com/forums/viewtopic.php?f=9&t=23026
Solution for iPhone
The only way I found out to reliably know if your iPhone is in or out of your home is to use the iCloud find my iPhone service and get your phone's location. But how do you get to iCloud? Apple does not expose its APIs to non iOS environments (so far). Well, enter pyicloud: https://github.com/picklepete/pyicloud
This is a 3rd party library that provides you iCloud access. Obviously, it can break in future if Apple decided to change its URL formats. But works great for now.