Login page on web app
Initial configuration screen on web app
Example of a phone snapshot that would trigger an incident and send a warning notification to the user's primary device
Web app displaying warning notifications
What is Vera?
'Vera' means 'presence' in Icelandic. It's a home monitoring system that upcycles old smartphones for use as surveillance cameras. We got the idea when we were discussing the expensive home surveillance systems on the market today, and how we can improve security for lower-income families who cannot afford the technology. We hope that our system can serve this purpose, as well as put old smartphones to good use.
How it works
Once every few seconds, the app takes a picture on the surveillance phone. It is quickly compressed and compared to the previous picture using a change detection algorithm, and if the change between the pictures is significant, then the (uncompressed) image is sent through the Microsoft Computer Vision API. The response is scanned to see if the image contains people - if so, then the app immediately sends a notification to the user's primary device.
How we built it
We used OpenSSL to set up a well-encapsulated security system. The back-end was created using Node.js and Postgres. It includes security features such as JSON web tokens (JWTs), which enforce secure connections with APIs. We also incorporated web sockets which allow for real-time interactions. We set up a solid foundation of security that would allow us to scale the system up easily.
The PagerDuty API was used because of its event-based system, allowing our team to send meaningful notifications of potential security breaches. We found the API to be very deep in scope, allowing the creation of many services and incidences as well as users and teams. We were able to use different parts of PagerDuty during integration in both frontend and backend. There is a great future in expandability for this platform and we were happy to use such a fully-featured API.
We examined the possibility of using Tensorflow and Google Cloud Platform to train our own neural network that would detect people in photos, but once we tried the Microsoft Cognitive Services API, we used that instead because it was perfect for our purposes. The mobile front-end was built entirely in Android Studio, with backwards compatibility in mind. The web front-end uses Angular 4, focusing on accessibility and ease of use.
Challenges we ran into
We struggled with choosing an image recognition API that would accurately and quickly detect intruders. After researching and trying out several APIs, we ended up deciding on the Microsoft Cognitive Services API for its speed and accuracy at detecting the presence of people.
Accomplishments that we're proud of
We're proud that we were able to integrate a lot of different tools together, especially APIs that we hadn't used before (ie. Pagerduty). Also, we maintained excellent relations between each other as a team, despite lack of sleep and the stress of deadlines.
What's next for Vera
An intruder alarm and live-streaming would be the next features that we'd like to develop. Further into the future, we'd like to include a wider variety of sensors that could be used to collect more accurate data. We feel that this system has great potential to scale up and provide different services - for example, we could use sensor mats to activate cameras around a baby's crib.