We wanted to create a useful tool that played to all of our strengths, which was meaningful and could be used in the future. After brainstorming about it, we came up with the idea for a security system using our phones.
What it does
This project is suppose to implement a new level of home secruity system. The idea was to have the user enter in the house using his phone and the Intel Edison. Whenever the user presses a button on his or her phone, through an app we created, the door to their house is suppose to open. We don't have a door to show the idea, but we have the proof of concept that allows this to be possible. Instead of opening a door, the intel edison will show a green light whenever the user has successfully opened a door. The app is divided into 2 parts in which the user can choose which is asking the user if he or she is the owner or a regular user of the application. If the user is an owner then they have 3 options to choose from. First the user has to register the Intel Edison by giving the specified code for the intel edison. After that owner can simly enter their house by pressing the Unlock button on their phone. In addition to the owner opening the door to his or her house, the owner has the capablity to give access to other users such as family members to his or her house. We were able to implement this feature by scanning a QR code of the other person's phone. So for example when a person needs to be added, the owner will have capablity to scan the QR code of the person they want to add. When the QR code is successfully done, the users can successfully unlock the door and enter the house. In the user section of the app, the user can access his own unique phone ID as explained above. The other thing the user can do is simply unlock the door of whatever house they have access to given by the owner. This is all possible because the edison board has a cache of phone ids which are allowed to access the house, and check to see if any phones which try to access the house are in that cache.
How we built it
The intel edison board has node.js code running on it which listens for various events, and fires different callbacks based on the events it has listened for and received. For example, on unlock, it checks the payload which is most likely an id for an arduino and a phone id, and checks to see if the arduino id matches it's own and if the phone id is in the cache of phone ids that are allowed to unlock the system.
The events that are fired are all fired from a central server on a computer, which fires them after various http requests. Those http requests are made by various iPhone apps which are installed by those who have the security system installed. For example, the user would click a button labelled "unlock." This would fire an http request (in this case a POST request) to the server at the url "/unlock/:arduinoid/:phoneid," where :arduinoid is the arduino the phone is trying to unlock, and the :phoneid is the unique id that is tied to the phone. After the POST request is fired, the accompanying socket event is emitted, which in this case is titled "unlockhouse," and has a payload of the arduino id and phone id from the http request.
Challenges we ran into
We initially wanted to use pebbles for users to unlock their houses, but using the pebble api proved to be problematic to use, so we shifted to using phones. In addition, making sure all the server calls functioned properly was tough to manage, as the server crashed often when a request didn't work. Finally, coming up with the structural design and layout of the app, as well as handling view rendering with asynchronous network calls, was difficult for us to handle.
Accomplishments that we're proud of
- getting the QR code scanner to work,
- linking the arduino and the phone
- creating a sane api for the phones to use
- creating an app that allows connections between devices
- making the intel edison work
What we learned
- how to code for the intel edison
- in memory databases
- creating a scanner for QR codes
- bridging objective C and swift (for pebble development)
- using permanentStorage in swift
- clientside socket.io in node.js
- creating a communications protocol between the arduino and a phone using just wifi access
What's next for RockLock
As we said before, we didn't have any access to any door or any houses. So the next step would be hooking up the Intel Edison to the house. Whenever the connection is set and the user can successfully enter the information, instead of just making the Intel Edison produce a green light we want it to actually open a door. Also another thing for the future would putting an alarm sound with the Intel Edison, so whenever a door is opened without permission an alarm is set off and potentially we can contact the police. Another thing we can implement is temporary keys for guests would work for a certain amount of time such a day or two. The final and the biggest thing we can implement in the future is getting the Intel Edison to store instances of unauthorized access of houses. Then using this data we can know the location, the people, and the specific houses that we being broken into. Using this data, we will be able to graph and find patterns on break ins and determine patterns of crime.