Difference between revisions of "Doorbot"

From Technologia Incognita
Jump to: navigation, search
(doorbot shell (doorsh.py))
m (Design)
Line 95: Line 95:
 
     |____________|      |          |
 
     |____________|      |          |
 
           |        [HID reader] [keypad]
 
           |        [HID reader] [keypad]
         Earth           ^----------------- with red||green led + beeper
+
         Earth
 
     (for keypad)
 
     (for keypad)
  

Revision as of 01:38, 17 February 2014

Projects
Participants Brainsmoke
Skills
Status Active
Niche Mechanics
Purpose Infrastructure

Usage

Entering the space: (normally)

  1. scan your fob
  2. enter your pin
  3. press the bell button

Opening the door when in Open mode (like during social night?)

  1. press bell

Changing your pin:

  1. scan your fob
  2. enter 999
  3. press bell
  4. enter your current pin
  5. press bell
  6. enter your new pin (min 4 characters)
  7. press bell
  8. repeat new pin
  9. press bell

Resetting your pin when you have forgotten:

  1. Ask a doorbot maintainer (brainsmoke for now) to trigger a pin reset
  2. scan your fob
  3. enter your new pin (min 4 characters)
  4. press bell
  5. repeat new pin
  6. press bell

Add a fob:

  1. Trick a doorbot maintainer into starting an addkey procedure
  2. scan your fob
  3. enter your new pin (min 4 characters)
  4. press bell
  5. repeat new pin
  6. press bell

Administration

doorbot shell (doorsh.py)

ssh doorbot@doorbot

Administration:

doorbot> list
doorbot> enable <fobid>
doorbot> disable <fobid>
doorbot> delete <fobid>
doorbot> addkey                  # add key using key reader + pinpad
doorbot> addkey <fobid> <pin>    # add key using doorbot shell only
doorbot> resetpin                # reset pin using reader + pinpad
doorbot> resetpin <fobid> <pin>  # reset pin using shell
doorbot> authmode                # put doorbot in authentication mode (default at startup)
doorbot> openmode                # put doorbot in open mode

doorctl.py

python doorctl.py initdb

# import fob db using plain-text pin
# rfid authorised pin
python doorctl.py import-plain << EOF
5431553 1 12345
5431554 1 12345
5431555 1 12345
5431556 1 12345
EOF

python doorctl.py export     # export fob db

python doorctl.py import     # import fob db

python doorctl.py rfidlisten # print fob IDs of fobs being scanned

Design

       5V 2A
    _____|______       [door sensor]          5V   ___12V____
   |            |            |                 |  |          |
   |            |-----[ Lock arduino ]--opto--[relay]   [door lock]
   | Cubieboard |                                 |__________|
   |            |-----[ Auth arduino ]
   |____________|       |          |
         |         [HID reader] [keypad]
       Earth
    (for keypad)

Hardware

Software

Cubieboard

udev persistence rules

To get identifiable arributes:

udevadm info -p /class/tty/ttyUSB0 -a


SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="XXXXXXXX", SYMLINK+="ttyAUTH"
SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="XXXXXXXX", SYMLINK+="ttyLOCK"


doorbotd.py / doorctl.py / doorsh.py

https://github.com/techinc/doorbot

Authentication arduino

source

https://github.com/techinc/doorbot/blob/master/doorauth/doorauth.ino

protocol

Serial, 9600 baud

send:

LED ON\n
LED OFF\n
LED BLINK\n
BEEP\n        (short beep)
DENIED\n      (distorted sound)
GRANTED\n     (double short beep)

receive:

RESET\n       (arduino has reset)
KEY [0-9]\n   (keypad press)
RFID [01]*\n  (rfid scanned)

Lock arduino

source

https://github.com/techinc/doorbot/blob/master/doorauth/doorlock.ino

protocol

Serial, 9600 baud

send:

UNLOCK\n
LOCK\n

receive:

RESET\n        (arduino has reset) 
OPEN\n         (door has opened)
CLOSED\n       (door has closed)

keypad

Project page: matrixpad

source

https://github.com/techinc/matrixpad