Initial commit

This commit is contained in:
2020-12-27 22:41:06 -08:00
commit 7dd3309158
4 changed files with 142 additions and 0 deletions

54
gate.py Normal file
View 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()