Jarvis Access Control System

Using Android Things I've extended the functionality of my Access Control System with IoT access

Similar projects worth following
We needed a way to remotely lock and unlock our office door. The door already had a magnetic lock, but was not attached to anything. Going through the building's contractors would be costly, so we decided to go the DIY route. Android Things is a fairly new OS so this would be the perfect project to get our hands dirty and see if we could utilize the features that came with it.

The system includes a full access control system from Amazon including a motion detector, manual exit button, magnetic lock, power supply, and a keypad/rfid reader but we also added our own relay switch and a raspberry pi to handle all of the processing. The system can work on it's own if the internet goes down, but mainly works as a connected IoT system. The keypad reader can be put into a reader mode, which bypasses it's internal processor and outputs a Wiegand 26 signal via two data lines to the raspberry pi, where it authenticates users based on an access key lookup table.

The keypad has two modes: Standalone and Reader. In standalone the keypad uses it’s own microcontroller to determine whether it should trigger it’s internal relay to open the door. In reader mode it sends data via two pins using the wiegand 26 protocol. Wiegand 26 is a common format for most access control systems. Data is sent on the low edge of a signal. When the signal is LOW, D0 sends a ‘0’ and D1 sends a ‘1’. When no data is being sent, both lines are pulled HIGH (usually 5v). The format consists of a leading parity bit, 8 bits of a facility code, 16 bits of ID code, and a trailing parity bit. The leading parity bit is calculated from the first 12 bits of data, and the trailing parity bit is calculated from the last 12 bits of data. There are many libraries and code examples available for the Wiegand 26 format, including python, C, arduino, and more. However there were no Java examples, and since Android Things runs Android, I had to implement my own which can be found here.

The system also has an Android Application used for managing access keys, creating pins, provisioning rfid cards, selecting boom music, and more.

Using the Spotify Web API, users can select a 30 second clip of a track that plays every time they walk in the door.

View all 6 components

  • AWS IoT Button

    Austin Nelson04/07/2017 at 12:55 0 comments

    Integrated an Amazon AWS IoT Button

  • Firebase Realtime Database

    Austin Nelson03/29/2017 at 14:49 0 comments

    How do you design a system that authenticates different types of users without having users logged into the system? This was one of the more challenging aspects of the project. I decided on using Access Keys with unique id's to identify and connect users to cards, pins, locations, etc. Everything is stored in Firebase as lookups.

    • Access Keys
      • ID
      • Name
      • Type (admin, user, temp)
      • Location (lookup)
      • Expiration Date
      • Deleted
      • Registered
      • Enable
    • Location
      • ID
      • Name
      • Mode (used for provisioning cards)
    • Pins
      • ID
      • Access Key (lookup)
      • Location (lookup)
      • PIN
    • Cards
      • ID
      • Access Key (lookup)
      • Location (lookup)
      • Card Number
    • Doors
      • ID
      • Access Key (lookup)
      • Location (lookup)
    • Logs
      • ID
      • Access Key (lookup)
      • Location (lookup)
      • PIN or Card or Door

  • Mobile App Features List v1

    Austin Nelson03/29/2017 at 14:38 0 comments

    The Access Control System comes with an Android app used to manage access keys, create pins, provision cards, select boom music, open the door and more.

    Admin: Usually the owner(s) of the company.

    • Has the ability to create new Access Keys for their specified location.
    • Can provision new cards for their specified location and attach them to a different Access Key (of same location)
    • Can provision new pin for their specified location and attach them to a different Access Key (of same location)
    • Can provision new temp pin for their location (creates an Access Key of type ‘temp’)
    • Can enable/disable Access Keys for their location
    • Can create their own pin
    • Can provision their own card
    • Can apply boom music
    • Can view logs
    • Can open door

    User: Usually the employees of the company

    • Can create new pin for their location
    • Can apply boom music
    • Can open door

    Temp: Used for pins (and card?) only

    • Has an expiration date and time
    • Set by the Admin

View all 3 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates