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:
commit
d3c799914a
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
*.pyc
|
||||||
|
*.swp
|
96
doors.py
Normal file
96
doors.py
Normal 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)
|
Loading…
Reference in New Issue
Block a user