Open imrehg opened 8 years ago
Hey, I think that's a nice idea. I really wanted to do that a while back. Was also thinking of implementing that for a company in Shanghai that's in the checkin business. But then I heard that iOS 8 and up devices now randomize their MAC address when scanning...
Too bad... But I have to admit not hiding your MAC address does seem to be a massive massive privacy lapse!... :D
"According to new recommendations by an IEEE study group, the Wi-Fi protocol needs to be updated to use randomly generated addresses for better security and privacy."
"Apple's latest iOS update includes privacy features for when the devices are scanning for wireless networks -- but the update only works while scanning, not for after the device is connected, and it only works on the most recent iPhone models."
My current best guess at solving the checkin problem would be to ask keyholders to run a background app on their phone that does geofencing, and checks in or out when going in or out of a given zone. And in the rare cases when people don't have a phone, leave the option to just check in manually with one or more big buttons by the door, or the EasyCard checkin, or just a web page (like the web page you already have for checking out if you forget to check out via EasyCard), etc.
I started to look into doing geofencing on Android but it didn't seem easy enough for me to make an app super fast, so I haven't made any progress on that.
Trying to add some easier way to check in the hackerspace, and one current idea is based on devices on the network: do a network scan for MAC addresses of devices, and match them to known values. If a known value is found, the associated person is checked in. Can store laptop/smartphone values in the database (ethernet, wifi) for devices that do not stay at the space, but are taken by the people when they leave the space. When a device is no longer seen on the network and no other associated check-in is available, the person is checked out.
Unlike the EasyCard checkin, this needs pre-registration for most of the intelligence, so needs more logic behind it. Also, have to handle multiple "I'm here" signals (multiple devices, easycard, and so on) and handle check-in/out logic, as well as timing people out.
The aim is to be somewhat better, even if not perfect way to do checking in, so do not expect 100% accuracy.
A workable method is using
nmap
. Since the server is in node.js, keep this function that way as well. Something like callingnmap
from nodejs, returning scan results as XML on the console, read those values into JSON, and store checkin/out in the current sqlite database. Or something... :)