Initial commit: Added what we have so far

We have a script that (kinda) works!

Signed-off-by: Workantile <maintainers@workantile.com>
This commit is contained in:
Workantile 2015-04-07 17:50:29 +00:00
commit d3c799914a
2 changed files with 98 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
*.pyc
*.swp

96
doors.py Normal file
View File

@ -0,0 +1,96 @@
#!/usr/bin/python
####################
# #
# Define GPIO Pins #
# #
####################
RED_LED = 11
GREEN_LED = 13
DOOR_STRIKE = 15
####################
# #
# Set up GPIO Pins #
# #
####################
import atexit
import RPi.GPIO as GPIO
import time
#python-pyserial package. Not sure we need this. Grabbed based on
#http://allenmlabs.blogspot.se/2013/01/raspberry-pi-parallax-rfid-reader.html
import serial
#Find the RFID as a USB device
#TODO: script should find it if not at USB0
RFID_SERIAL = serial.Serial('/dev/ttyUSB0', 2400, timeout=1)
GPIO.setmode(GPIO.BOARD)
atexit.register(GPIO.cleanup)
GPIO.setup(DOOR_STRIKE, GPIO.OUT)
GPIO.setup(RED_LED, GPIO.OUT)
GPIO.setup(GREEN_LED, GPIO.OUT)
#Be explicit with what we want
#lowVoltage of 0 is ground
lowVoltage = 0
highVoltage = 1
#Pull Enable Pin Low to make it readable
GPIO.output(DOOR_STRIKE, lowVoltage)
#When door is open
def open_door():
print("Door is open");
GPIO.output(GREEN_LED, highVoltage)
GPIO.output(RED_LED, lowVoltage)
GPIO.output(DOOR_STRIKE, highVoltage)
#When door is closed and locked
def close_door():
print("Door is closed");
GPIO.output(DOOR_STRIKE, lowVoltage)
GPIO.output(GREEN_LED, lowVoltage)
GPIO.output(RED_LED, highVoltage)
#############################################
# #
# Verify a key with openings.workantile.com #
# #
#############################################
from urllib import request
# Anna's key
KEY="1F00D0B045"
# Which door controller are we?
CONTROLLER="deadbeef01"
# Blocks for 5 seconds before resetting the door
def verify_key(key):
url = "http://openings.workantile.com/access/%s/%s" % (CONTROLLER, key)
if request.urlopen(url).read().decode() == "OK":
open_door()
time.sleep(5)
close_door()
RFID_SERIAL.flushInput() # ignore errors, no data
import sys
#sys.exit(0)
while True:
string = RFID_SERIAL.read(12)
if len(string) == 0:
print("No tag read")
continue
else:
string = string[1:11] #exclude start x0A and stop x0D bytes
print(string)
verify_key(KEY)