Advertisement
sanovskiy

rfid

May 10th, 2016
294
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --If you want this to start at every boot of a computer run the following line of code in the startup
  2. -- shell.run("RFID","door")
  3.  
  4.  
  5. --The door stays open as long as you stay in the area of the reader
  6. --              !!! Make sure there is no creeper behind you !!!
  7.  
  8. -- Set up your own door system
  9. doorPass = "qwermtqlvmjhtwerbvrthnwmrtlkjhwlrtbnthwhnwtrh"
  10. cardLabel = "Bunker pass"
  11.  
  12. readerSide = "back"
  13. writerSide = "right"
  14. redstoneSide = "bottom"
  15.  
  16. tArgs = {...}
  17. lastTimer = {}
  18.  
  19. if #tArgs < 1 then
  20.     print("Usage:")
  21.     print("RFID write")
  22.     print("RFID door")
  23.     return
  24. end
  25.  
  26. mode = tArgs[1]
  27. shell.run("clear")
  28.  
  29. if mode == "write" then
  30.     writer = peripheral.wrap(writerSide)
  31.     print("Enter writing mode")
  32.     print("Insert card in the writer")
  33.     while not writer.isPresent() do --Waits until a card is in the writer
  34.         sleep(0)
  35.     end
  36.    
  37.     if writer.encode(doorPass, cardLabel) then --Start write to card
  38.         print("Start writing Pass to card")
  39.     else --Error handling
  40.         if writer.isCoded() then
  41.             print("Card is already coded\nInsert a blank card")
  42.         elseif #cardLabel > 20 then
  43.             print("Card Label is too long max. 20 char")
  44.         elseif #doorPass > 82 then
  45.             print("Data is too long max. 82 char")
  46.         else
  47.             print("Leave the card in the writer")
  48.         end
  49.         return
  50.     end
  51.     os.pullEvent("rfid_written") --Wait until the card is written
  52.     print("RFID card is coded")
  53.     print("Take the card out of the writer")
  54.    
  55.     while writer.isCoded() do --Ends the program when the card is taken out of the writer
  56.         sleep(0)
  57.     end
  58.     shell.run("clear")
  59.    
  60. ------------------------------------------------------
  61. ------------------------------------------------------
  62. elseif mode == "door" then
  63.     reader = peripheral.wrap(readerSide)
  64.     print("Door Contol is running")
  65.     while true do
  66.         if not reader.isScanning() then
  67.           reader.scan() --Creats an "rfid_detected" when a card is in range
  68.         end
  69.         event, p1 = os.pullEvent()
  70.         if event == "rfid_detected" then
  71.             if p1 == doorPass then
  72.                 print("Door opened")
  73.                 rs.setOutput(redstoneSide, true)
  74.                 lastTimer = os.startTimer(1)
  75.             else
  76.                 print("Wrong card")
  77.             end
  78.         elseif event == "timer" and lastTimer == p1 then
  79.             rs.setOutput(redstoneSide, false)
  80.         end
  81.     end
  82. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement