Sonos = 1 Another = 2 keypad = Keypad(Mode) actions = { Mode.Teams: { Key.KEY1: lambda: print("TK1"), Key.KEY2: lambda: print("TK2") }, Mode.Sonos: { Key.KEY1: lambda: print("SK1"), Key.KEY3: lambda: print("TK3") } } def key_pressed(mode: Mode, key: Key): print("user defined") action = (actions.get(mode, {}).get( key, lambda: print( f"no action defined for '{key.name}' in mode '{mode.name}'"))) action() #keypad.start(key_pressed) keypad.start(actions)
new_pin=pin_change['newpin'] if pin.change_pin(config.decider_addr+config.door_name+'/change_pin',uid=uid,old_pin=old_pin,new_pin=new_pin): beep_door.ack() else: beep_door.nak() ident_store=Identity_store() door=Door(gpio(30),open_callback=on_door_open) lock_control=lock_ctrl.Lock_ctrl(IO_open=gpio(95),IO_close=gpio(67),IO_latch=gpio(29)) lock_led=Edge_detect(gpio(23,active_low=True)) lock_led.start() # set unused but connected gpios to output gpio(66,'out') gpio(68,'out') keypad=Keypad(dev='/dev/ttyACM0',on_key=on_key) keypad.start() reader_door=NFCreader.NFCreader(dev='/dev/ttyS2',on_card=card_on_door) reader_exit=NFCreader.NFCreader(dev='/dev/ttyS3',on_card=card_on_exit) beep_door=beeper.Beeper(reader_door.beep) beep_exit=beeper.Beeper(reader_exit.beep) lock=Lock_behaviour(lock_control,door,lock_led,beep_exit) decide=decider.Decider_http(addr=config.decider_addr+config.door_name+'/',opener=lock.open,closer=lock.close,ack=beep_door.ack,nak=beep_door.nak) alarm=Message(addr=config.alarm_addr+config.door_name) reader_exit.start() reader_door.start()
'card': uid, 'sak': sak, 'old_pin': old_pin, 'new_pin': new_pin }) ident_store = Identity_store() door = Door(gpio(config.gpio_door_sensor), open_callback=on_door_open, close_callback=on_door_close) lock_control = lock_ctrl.Lock_ctrl(IO_latch=gpio(config.gpio_electric_strike), IO_closer=gpio(config.gpio_door_closer)) keypad = Keypad(dev=serial.Serial(config.keypad_dev, 9600), on_key=on_key) keypad.start() reader_door = NFCreader.NFCreader(dev=config.outside_reader_dev, on_card=card_on_door) reader_exit = NFCreader.NFCreader(dev=config.inside_reader_dev, on_card=card_on_exit) beep_door = beeper.Beeper(reader_door.beep) beep_exit = beeper.Beeper(reader_exit.beep) interpreter = Interpreter(opener=lock_control.latch, public=lock_control.public, beeper_inside=beep_exit.beep_by_style, beeper_outside=beep_door.beep_by_style) hmac_calculator = hmac.new(config.hmac_key, digestmod='sha512') validator = Validator(hmac_calculator) mqtt = Mqtt(addr=config.mqtt_broker,
from statusled import StatusLED from keypad import Keypad, TEL_16_KEY from starcodes import StarCodes from authorization import Authorization for filename in os.listdir("/tmp"): os.remove("/tmp/{:s}".format(filename)) config = Configuration('config') led = StatusLED() led.start() conn = Connection(config, status_led=led) conn.start() kpd = Keypad(config, status_led=led, layout=TEL_16_KEY) kpd.start() auth = Authorization(config, status_led=led) starcode = StarCodes(config, auth, status_led=led) async def watch_events(keypad): while True: event = await keypad.queue.get() user_code = "".join( event[:config.CODE_LENGTH]) # We leave the user code as a string if len(user_code) is 0: user_code = None if "*" in event: handle_event = starcode.runcode(int("".join( event[-2:]))) # But we convert starcodes to ints else: