-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsaveUID.py
91 lines (69 loc) · 2.26 KB
/
saveUID.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!/usr/bin/env python
# -*- coding: utf8 -*-
import RPi.GPIO as GPIO
import MFRC522
import signal
import Adafruit_CharLCD as LCD
import time
import pymongo
from ConnectionDB import ConnectionDB
class SaveUID:
def __init__(self):
pass
@staticmethod
def save_uid(mydb, uid):
try:
tarjeta = {
"serie": uid,
"estado": "inactivo"
}
tarjetas = mydb.tarjetas
card_id = tarjetas.insert_one(tarjeta).inserted_id
return "UID guardado\ncon exito!"
except pymongo.errors.DuplicateKeyError:
return "Esta tarjeta ya\nesta en uso!"
def main():
save = SaveUID()
connection = ConnectionDB().con
db = connection.accesslogic
continue_reading = True
# Capture SIGINT for cleanup when the script is aborted
def end_read(signal, frame):
global continue_reading
print "Ctrl+C capturado, Finalizando lectura."
continue_reading = False
GPIO.cleanup()
# Hook the SIGINT
signal.signal(signal.SIGINT, end_read)
# Create an object of the class MFRC522
reader = MFRC522.MFRC522()
# Configure the GPIOs of the LCD
lcd = LCD.Adafruit_CharLCD(rs=26, en=19, d4=13, d5=6, d6=5, d7=27, cols=16, lines=2)
# Clear de screen
lcd.clear()
# Welcome message
print "Guardar UID de la tarjeta NFC"
print "Presiona Ctrl-C para cerrar"
time.sleep(1)
print "Listo!"
# This loop keeps checking for chips. If one is near it will get the UID and authenticate
while continue_reading:
# Scan for cards
(status, TagType) = reader.MFRC522_Request(reader.PICC_REQIDL)
# If a card is found
if status == reader.MI_OK:
print "Tarjeta detectada"
# Get the UID of the card
(status, uid) = reader.MFRC522_Anticoll()
# If we have the UID, continue
if status == reader.MI_OK:
# Print UID in the LCD
seriec = str(uid[0]) + "," + str(uid[1]) + "," + str(uid[2]) + "," + str(uid[3])
print seriec
msg = save.save_uid(db, seriec)
lcd.message(msg)
# Clear the screen
time.sleep(4)
lcd.clear()
if __name__ == "__main__":
main()