Initial commit
This commit is contained in:
54
gate.py
Normal file
54
gate.py
Normal file
@@ -0,0 +1,54 @@
|
||||
import pigpio
|
||||
import time
|
||||
import logging
|
||||
import json
|
||||
|
||||
from wiegand import decoder
|
||||
|
||||
class gate:
|
||||
def __init__(self, pi, relay_pin):
|
||||
self.pi = pi
|
||||
self.relay_pin = relay_pin
|
||||
|
||||
# set the pin to high to keep the gate locked
|
||||
pi.write(relay_pin, 1)
|
||||
|
||||
# unlocks the gate for a number of seconds defined by timeout
|
||||
def unlock_gate(self, timeout):
|
||||
self.pi.write(self.relay_pin, 0)
|
||||
time.sleep(timeout)
|
||||
self.pi.write(self.relay_pin, 1)
|
||||
|
||||
def load_secrets():
|
||||
with open("./secrets.json") as secrets:
|
||||
return json.loads(secrets.read())
|
||||
|
||||
if __name__ == "__main__":
|
||||
secrets = load_secrets()
|
||||
pi = pigpio.pi()
|
||||
gate = gate(pi, 4)
|
||||
|
||||
current_code = ""
|
||||
def callback(bits, value):
|
||||
global current_code
|
||||
# indicates keypad press
|
||||
if bits == 4:
|
||||
current_code = current_code[-3:] + str(value)
|
||||
if len(current_code) == 4:
|
||||
# check if we have a valid code
|
||||
if current_code in secrets['codes']:
|
||||
gate.unlock_gate(5)
|
||||
current_code = ""
|
||||
# indicates a card swipe
|
||||
elif bits == 37:
|
||||
current_code = ""
|
||||
str_value = str(value)
|
||||
if str_value in secrets['cards']:
|
||||
gate.unlock_gate(5)
|
||||
|
||||
logging.info("bits={} value={}".format(bits, value))
|
||||
|
||||
w = decoder(pi, 2, 3, callback)
|
||||
time.sleep(1000)
|
||||
w.cancel()
|
||||
pi.stop()
|
||||
Reference in New Issue
Block a user