Ejemplo n.º 1
0
def fingerprintGrab(ref, bucketLoc, universalLoc):
    try:
        f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000)

        if (f.verifyPassword() == False):
            raise ValueError('The given fingerprint sensor password is wrong!')

    except Exception as e:
        print('The fingerprint sensor could not be initialized!')
        print('Exception message: ' + str(e))
        exit(1)


## Gets some sensor information
# print('Currently used templates: ' + str(f.getTemplateCount()) +'/'+ str(f.getStorageCapacity()))
    link = universalLoc + 'biom'
    ## Tries to search the finger and calculate hash
    try:
        f.deleteTemplate(0)
        char = ref.get(link, '')
        f.uploadCharacteristics(0x02, char)
        f.createTemplate()
        positionNumber = f.storeTemplate()
        auth, scan = checkAuth()
        return (auth, scan)

    except Exception as e:
        print('Operation failed!')
        print('Exception message: ' + str(e))
        exit(1)
def delete():

    from pyfingerprint.pyfingerprint import PyFingerprint

    ## Deletes a finger from sensor
    ##

    ## Tries to initialize the sensor
    try:
        f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000)

        if (f.verifyPassword() == False):
            raise ValueError('The given fingerprint sensor password is wrong!')

    except Exception as e:
        print('The fingerprint sensor could not be initialized!')
        print('Exception message: ' + str(e))
        exit(1)

    ## Gets some sensor information
    print('Currently stored templates: ' + str(f.getTemplateCount()))

    ## Tries to delete the template of the finger
    try:
        positionNumber = raw_input(
            'Please enter the template position you want to delete: ')
        positionNumber = int(positionNumber)

        if (f.deleteTemplate(positionNumber) == True):
            print('Template deleted!')

    except Exception as e:
        print('Operation failed!')
        print('Exception message: ' + str(e))
        exit(1)
Ejemplo n.º 3
0
def delete(position_number):
    ## Tries to initialize the sensor
    try:
        f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000)

        if not f.verifyPassword():
            print('The given fingerprint sensor password is wrong!')
            return False

    except Exception as e:
        print('The fingerprint sensor could not be initialized!')
        print('Exception message: ' + str(e))
        return False

    ## Gets some sensor information
    print('Currently used templates: ' + str(f.getTemplateCount()) +'/'+ str(f.getStorageCapacity()))

    ## Tries to delete the template of the finger
    try:
       
            position_number = int(position_number)

            if not f.deleteTemplate(position_number):
                return False
            else:
                return True

    except Exception as e:
        print('Operation failed!')
        print('Exception message: ' + str(e))
        return False
Ejemplo n.º 4
0
    def delete(self, finger_id):
        ## Deletes a finger from sensor
        ##

        employee = Employee()
        ## Tries to initialize the sensor
        try:
            f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000)

            if (f.verifyPassword() == False):
                raise ValueError(
                    'The given fingerprint sensor password is wrong!')

        except Exception as e:
            print('The fingerprint sensor could not be initialized!')
            print('Exception message: ' + str(e))
            exit(1)

        ## Gets some sensor information
        print('Currently used templates: ' + str(f.getTemplateCount()) + '/' +
              str(f.getStorageCapacity()))

        ## Tries to delete the template of the finger
        if finger_id != -1:
            try:
                if (f.deleteTemplate(finger_id) == True):
                    employee.remove_fingerprint(employee.ftou(finger_id))
                    print('Template deleted!')

            except Exception as e:
                print('Operation failed!')
                print('Exception message: ' + str(e))
                print(traceback.format_exc())
                exit(1)
def del1(positionNumber):
    try:
        f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000)

        if (f.verifyPassword() == False):
            raise ValueError('The given fingerprint sensor password is wrong!')

    except Exception as e:
        print('The fingerprint sensor could not be initialized!')
        print('Exception message: ' + str(e))
        exit(1)

## Gets some sensor information
    print('Currently used templates: ' + str(f.getTemplateCount()) + '/' +
          str(f.getStorageCapacity()))

    ## Tries to delete the template of the finger
    try:
        positionNumber = int(positionNumber)

        if (f.deleteTemplate(positionNumber) == True):
            print('Template deleted!')

    except Exception as e:
        print('Operation failed!')
        print('Exception message: ' + str(e))
        exit(1)
Ejemplo n.º 6
0
    def btXoaVanTay_click(self):
        dialogKey = Ui_Keyboard()
        value = dialogKey.exec_()
        if (value == uart.dtMK or value == uart.dtMKHard):
            ## Tries to initialize the sensor
            try:
                f = PyFingerprint(self.USB, 57600, 0xFFFFFFFF, 0x00000000)
                if ( f.verifyPassword() == False ):
                    raise ValueError('The given fingerprint sensor password is wrong!')

            except Exception as e:
                self.lbThongBao.setText("Lỗi kết nối cảm biến vân tay!")
                return

            ## Gets some sensor information
            #print('Currently used templates: ' + str(f.getTemplateCount()) +'/'+ str(f.getStorageCapacity()))
            ## Tries to delete the template of the finger
            numVantay = int(f.getTemplateCount())
            while numVantay > 0:
                try:
                    if ( f.deleteTemplate(numVantay-1) == True ):
                        print('Template deleted!', numVantay)

                except Exception as e:
                    self.lbThongBao.setText("Xóa vân tay có lỗi!")
                    return
                numVantay -= 1
            self.lbThongBao.setText("Xóa hết vân tay thành công!")
Ejemplo n.º 7
0
    def delete_worker(self):
        try:
            f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000)

            if (f.verifyPassword() == False):
                raise ValueError(
                    'The given fingerprint sensor password is wrong!')

        except Exception as e:
            print('The fingerprint sensor could not be initialized!')
            print('Exception message: ' + str(e))
            exit(1)

        ## Gets some sensor information
        print('Currently used templates: ' + str(f.getTemplateCount()) + '/' +
              str(f.getStorageCapacity()))

        ## Tries to delete the template of the finger
        try:
            positionNumber = int(self.controller.template_number)

            if (f.deleteTemplate(positionNumber) == True):
                self.controller.create_info_frame('Fingerprint Deleted')
                self.controller.remove_from_DB()
                self.controller.restore_initial_frame_from_delete()
                print('Template deleted!')

        except Exception as e:
            print('Operation failed!')
            print('Exception message: ' + str(e))
            exit(1)
 def deleteFingerprints(self, deletePosition):
     try:
         f = PyFingerprint('/dev/ttyUSB1', 57600, 0xFFFFFFFF, 0x00000000)
         for x in range(f.getTemplateCount()):
             # f.deleteTemplate(int(x-1))
             if (f.deleteTemplate(x) == True):
                 print('Template deleted!')
     except Exception as e:
         print('Operation failed!')
         print('Exception message: ' + str(e))
         pass
Ejemplo n.º 9
0
def delete(positionNumber):
    port = config.figerScanPort
    f = PyFingerprint(port, 57600, 0xFFFFFFFF, 0x00000000)
    try:
        if ( f.deleteTemplate(positionNumber) == True ):
            print('Template deleted!' + str(positionNumber))
            return 1
    except Exception as e:
        print('Operation failed!')
        print('Exception message: ' + str(e))
        return -1
Ejemplo n.º 10
0
def delete():
    f = PyFingerprint('COM6', 57600, 0xFFFFFFFF, 0x00000000)

    print('Currently used templates: ' + str(f.getTemplateCount()) + '/' +
          str(f.getStorageCapacity()))

    positionNumber = input(
        'Please enter the template position you want to delete: ')
    positionNumber = int(positionNumber)

    if (f.deleteTemplate(positionNumber) == True):
        print('Template deleted!')
Ejemplo n.º 11
0
def delete(keyid):
    ## Tries to initialize the sensor
    try:
        f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000)

        if (f.verifyPassword() == False):
            raise ValueError('The given fingerprint sensor password is wrong!')

    except Exception as e:
        print('The fingerprint sensor could not be initialized!')
        print('Exception message: ' + str(e))
        return 'Sensor Error'

    ## Gets some sensor information
    #print('Currently used templates: ' + str(f.getTemplateCount()) +'/'+ str(f.getStorageCapacity()))

    ## Tries to delete the template of the finger
    try:
        keyid = str(keyid)
        fingerset = {}
        if os.path.exists('dataset_fingers.dat'):
            with open('dataset_fingers.dat', 'rb') as readf:
                fingerset = pickle.load(readf)
        keys = fingerset.keys()
        values = fingerset.values()
        hasFlag = False
        posNo = -1
        for i in range(len(keys)):
            if values[i] == keyid:
                hasFlag = True
                posNo = int(keys[i])
                break
        if hasFlag == False:
            return 'Key Not Present'
        del fingerset[str(posNo)]
        with open('dataset_fingers.dat', 'wb') as writef:
            pickle.dump(fingerset, writef, protocol=pickle.HIGHEST_PROTOCOL)
        if (f.deleteTemplate(posNo) == True):
            print 'Successfully deleted', keyid, 'from the database!'
            return 'Done'

    except Exception as e:
        print('Operation failed!')
        print('Exception message: ' + str(e))
        return 'Unknown Error'
Ejemplo n.º 12
0
def Remover_Digital():
    try:
        f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000)

        if (f.verifyPassword() == False):
            raise ValueError('The given fingerprint sensor password is wrong!')
    except Exception as e:
        exit(1)
    try:
        positionNumber = input(
            'Please enter the template position you want to delete: ')
        positionNumber = int(positionNumber)
        if (f.deleteTemplate(positionNumber) == True):
            print('Template deleted!')
    except Exception as e:
        print('Operation failed!')
        print('Exception message: ' + str(e))
        exit(1)
Ejemplo n.º 13
0
def Effacer(f):
    opwd = (hashlib.sha256(
        gp("Entrez le password: "******"erreur")
    def delete_fid(self, finger_id):
        try:
            f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000)

            if ( f.verifyPassword() == False ):
                raise ValueError('The given fingerprint sensor password is wrong!')

        except Exception as e:
            print('The fingerprint sensor could not be initialized!')
            print('Exception message: ' + str(e))
            exit(1)

        try:
            if ( f.deleteTemplate(finger_id) == True ):
                print('Template deleted!')

        except Exception as e:
            print('Operation failed!')
            print('Exception message: ' + str(e))
            print(traceback.format_exc())
            exit(1)
Ejemplo n.º 15
0
def silme(sil):
    try:
        f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000)

        if (f.verifyPassword() == False):
            pass

    except Exception as e:
        pass
    ## Gets some sensor information

    ## Tries to delete the template of the finger
    try:
        positionNumber = sil + 1
        positionNumber = int(positionNumber)

        if (f.deleteTemplate(positionNumber) == True):
            return 4

    except Exception as e:
        pass
Ejemplo n.º 16
0
    def delete(self):
        try:
            f = PyFingerprint(self.com, self.port, 0xFFFFFFFF, 0x00000000)

            if (f.verifyPassword() == False):
                raise ValueError(
                    'The given fingerprint sensor password is wrong!')

        except Exception as e:
            print('The fingerprint sensor could not be initialized!')
            print('Exception message: ' + str(e))
            exit(1)

        ## Gets some sensor information
        print('Currently used templates: ' + str(f.getTemplateCount()) + '/' +
              str(f.getStorageCapacity()))

        ## Tries to delete the template of the finger
        try:
            positionNumber = input(
                'Please enter the template position you want to delete: ')
            positionNumber = int(positionNumber)

            if (f.deleteTemplate(positionNumber) == True):
                with open('./data_log.csv',
                          'r') as inp, open('./data_log_edit.csv', 'w') as out:
                    writer = csv.writer(out)
                    rows = csv.DictReader(inp)
                    writer.writerows([['positionnumber'] + ['empolynumber']])
                    for row in rows:
                        if row['positionnumber'] != str(positionNumber):
                            writer.writerow(
                                [row['positionnumber'], row['empolynumber']])
                os.rename('./data_log_edit.csv', './data_log.csv')
                print('Template deleted!')

        except Exception as e:
            print('Operation failed!')
            print('Exception message: ' + str(e))
            exit(1)
Ejemplo n.º 17
0
def temizle():
    try:
        f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000)

        if (f.verifyPassword() == False):
            pass

    except Exception as e:
        pass
    ## Gets some sensor information

    ## Tries to delete the template of the finger
    try:
        for i in range(2, 11):
            positionNumber = i
            positionNumber = int(positionNumber)
            if (f.deleteTemplate(positionNumber) == True):
                if (i == 10):
                    return 4

    except Exception as e:
        pass
    def delete_all(self):
        ## Tries to initialize the sensor
        try:
            f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000)

            if ( f.verifyPassword() == False ):
                raise ValueError('The given fingerprint sensor password is wrong!')

        except Exception as e:
            print('The fingerprint sensor could not be initialized!')
            print('Exception message: ' + str(e))
            exit(1)

        ## Gets some sensor information
        print('Currently used templates: ' + str(f.getTemplateCount()) +'/'+ str(f.getStorageCapacity()))

        ## Tries to delete the template of the finger
        for finger_id in range(f.getTemplateCount() + 5):
            try:
                if ( f.deleteTemplate(finger_id) == True ):
                    print('Template deleted!')
            except:
                print('could not delete')
Ejemplo n.º 19
0
def Remover_Digital():
	global sc_bioRem
	sc_bioRem = Toplevel(screen2)
	sc_bioRem.title("Biometria")
	sc_bioRem.attributes('fullscreen',True)
	try:
		f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000)
	
		if ( f.verifyPassword() == False ):
			raise ValueError('The given fingerprint sensor password is wrong!')
			
			
	except Exception as e:
		exit(1)
	try:
		positionNumber = input('Please enter the template position you want to delete: ')
		positionNumber = int(positionNumber)
		if ( f.deleteTemplate(positionNumber) == True ):
			print('Template deleted!')
	except Exception as e:
		print('Operation failed!')
		print('Exception message: ' + str(e))
		exit(1)
Ejemplo n.º 20
0
class fp_class:
    def __init__(self, ttl_path):
        try:
            print('ttl path ' + ttl_path)
            self.f = PyFingerprint(ttl_path, 57600, 0xFFFFFFFF, 0x00000000)
            if (self.f.verifyPassword() == False):
                raise ValueError(
                    'The given fingerprint sensor password is wrong!')
            ## Gets some sensor information
            print('Currently used templates: ' +
                  str(self.f.getTemplateCount()) + '/' +
                  str(self.f.getStorageCapacity()))

        except Exception as e:
            print('The fingerprint sensor could not be initialized!')
            print('Exception message: ' + str(e))
            exit(1)

    def enrollNgetID(self):
        try:
            print('Waiting for finger...')

            ## Wait that finger is read
            while (self.f.readImage() == False):
                pass

            ## Converts read image to characteristics and stores it in charbuffer 1
            self.f.convertImage(0x01)

            ## Checks if finger is already enrolled
            result = self.f.searchTemplate()
            positionNumber = result[0]

            if (positionNumber >= 0):
                print('Template already exists at position #' +
                      str(positionNumber))
                return positionNumber

            print('Remove finger...')
            time.sleep(2)

            print('Waiting for same finger again...')

            ## Wait that finger is read again
            while (self.f.readImage() == False):
                pass

            ## Converts read image to characteristics and stores it in charbuffer 2
            self.f.convertImage(0x02)

            ## Compares the charbuffers
            if (self.f.compareCharacteristics() == 0):
                raise Exception('Fingers do not match')

            ## Creates a template
            self.f.createTemplate()

            ## Saves template at new position number
            positionNumber = self.f.storeTemplate()
            print('Finger enrolled successfully!')
            print('New template position #' + str(positionNumber))
            return positionNumber

        except Exception as e:
            print('Operation failed!')
            print('Exception message: ' + str(e))
            return 0

    def enrollWithID(self, ID_num):
        try:
            print('Waiting for finger...')

            ## Wait that finger is read
            while (self.f.readImage() == False):
                pass

            ## Converts read image to characteristics and stores it in charbuffer 1
            self.f.convertImage(0x01)

            print('Remove finger...')
            time.sleep(2)

            print('Waiting for same finger again...')

            ## Wait that finger is read again
            while (self.f.readImage() == False):
                pass

            ## Converts read image to characteristics and stores it in charbuffer 2
            self.f.convertImage(0x02)

            ## Compares the charbuffers
            if (self.f.compareCharacteristics() == 0):
                raise Exception('Fingers do not match')

            ## Creates a template
            self.f.createTemplate()

            ## Saves template at new position number
            positionNumber = self.f.storeTemplate(ID_num)
            print('Finger enrolled successfully!')
            print('New template position #' + str(positionNumber))
            return positionNumber

        except Exception as e:
            print('Operation failed!')
            print('Exception message: ' + str(e))

    def CheckFingerPrint(self):
        if self.f.readImage() == False:
            print('Waiting for finger...')
            return (0)
        ## Converts read image to characteristics and stores it in charbuffer 1
        self.f.convertImage(0x01)

        ## Searchs template
        result = self.f.searchTemplate()

        positionNumber = result[0]
        accuracyScore = result[1]

        if (positionNumber == -1):
            print('No match found!')
            return (12)
        else:
            print('Found template at position #' + str(positionNumber))
            print('The accuracy score is: ' + str(accuracyScore))
            return (positionNumber)

    def deletfpTemplet(self, positionNumber):
        ## Tries to delete the template of the finger
        try:
            positionNumber = int(positionNumber)
            print('You want to delete: {} Template'.format(positionNumber))

            if (self.f.deleteTemplate(positionNumber) == True):
                print('Template deleted!')

        except Exception as e:
            print('Operation failed!')
            print('Exception message: ' + str(e))
            return (0)
Ejemplo n.º 21
0
    def Updated_fingerprint(self, event):
        self.update()
        curItem = self.tree.focus()
        inter_var = self.tree.item(curItem)
        list_values = inter_var['values']
        print(list_values)  # check the value of a dictionary
        if list_values[12] != '':
            try:
                f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF,
                                  0x00000000)

                if (f.verifyPassword() == False):
                    raise ValueError(
                        'The given fingerprint sensor password is wrong!')

            except Exception as e:
                print('The fingerprint sensor could not be initialized!')
                print('Exception message: ' + str(e))

            ## Gets some sensor information
            print('Currently used templates: ' + str(f.getTemplateCount()) +
                  '/' + str(f.getStorageCapacity()))

            ## Tries to delete the template of the finger
            positionNumber = list_values[12]
            positionNumber = int(positionNumber)
            print(positionNumber)
            if (f.deleteTemplate(positionNumber) == True):
                print('Template deleted!')
            try:
                f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF,
                                  0x00000000)

                if (f.verifyPassword() == False):
                    raise ValueError(
                        'The given fingerprint sensor password is wrong!')

            except Exception as e:
                print('The fingerprint sensor could not be initialized!')
                print('Exception message: ' + str(e))

            ## Gets some sensor information
            print('Currently used templates: ' + str(f.getTemplateCount()) +
                  '/' + str(f.getStorageCapacity()))

            ## Tries to enroll new finger
            ## Wait that finger is read
            while (f.readImage() == False):
                pass

                ## Converts read image to characteristics and stores it in charbuffer 1
            f.convertImage(0x01)

            ## Checks if finger is already enrolled
            result = f.searchTemplate()
            positionNumber = result[0]

            if (positionNumber >= 0):
                messagebox.showinfo(
                    "Notice",
                    "Fingerprint is already registered\n please try again",
                    parent=self)

            time.sleep(2)

            ## Wait that finger is read again
            while (f.readImage() == False):
                pass

                ## Converts read image to characteristics and stores it in charbuffer 2
            f.convertImage(0x02)

            ## Compares the charbuffers
            if (f.compareCharacteristics() == 0):
                messagebox.showerror("Error",
                                     "Finger do not match\n Please try again",
                                     parent=self)

                ## Creates a template
            else:
                f.createTemplate()
                characterics = str(
                    f.downloadCharacteristics(0x01)).encode('utf-8')
                ## Saves template at new position number
                positionNumber = f.storeTemplate()
                self.cursor.execute(
                    "UPDATE residents_db SET FINGER_TEMPLATE = %s WHERE ID = %s",
                    (positionNumber, list_values[0]))
                self.db.commit()
                messagebox.showinfo("Success",
                                    "Fingerprint successfully updated",
                                    parent=self)
                self.update_finger_frame.destroy()
                self.treeview_frame_residents.pack(expand=1, fill="both")

        else:
            try:
                f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF,
                                  0x00000000)

                if (f.verifyPassword() == False):
                    raise ValueError(
                        'The given fingerprint sensor password is wrong!')

            except Exception as e:
                print('The fingerprint sensor could not be initialized!')
                print('Exception message: ' + str(e))

            ## Gets some sensor information
            print('Currently used templates: ' + str(f.getTemplateCount()) +
                  '/' + str(f.getStorageCapacity()))

            ## Wait that finger is read
            while (f.readImage() == False):
                pass

                ## Converts read image to characteristics and stores it in charbuffer 1
            f.convertImage(0x01)

            ## Checks if finger is already enrolled
            result = f.searchTemplate()
            positionNumber = result[0]

            if (positionNumber >= 0):
                messagebox.showinfo(
                    "Notice",
                    "Fingerprint is already registered\n please try again",
                    parent=self)

            time.sleep(2)

            ## Wait that finger is read again
            while (f.readImage() == False):
                pass

                ## Converts read image to characteristics and stores it in charbuffer 2
            f.convertImage(0x02)

            ## Compares the charbuffers
            if (f.compareCharacteristics() == 0):
                messagebox.showerror("Error",
                                     "Finger do not match\n Please try again",
                                     parent=self)

            ## Creates a template
            else:
                f.createTemplate()
                characterics = str(
                    f.downloadCharacteristics(0x01)).encode('utf-8')
                ## Saves template at new position number
                positionNumber = f.storeTemplate()
                self.cursor.execute(
                    "UPDATE residents_db SET FINGER_TEMPLATE = %s WHERE ID = %s",
                    (positionNumber, str(list_values[0])))
                self.db.commit()
                messagebox.showinfo("Success",
                                    "Fingerprint successfully updated",
                                    parent=self)
                self.update_finger_frame.destroy()
                self.treeview_frame_residents.pack(expand=1, fill="both")
Ejemplo n.º 22
0
##


## Tries to initialize the sensor
try:
    f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000)

    if ( f.verifyPassword() == False ):
        raise ValueError('The given fingerprint sensor password is wrong!')

except Exception as e:
    print('The fingerprint sensor could not be initialized!')
    print('Exception message: ' + str(e))
    exit(1)

## Gets some sensor information
print('Currently stored templates: ' + str(f.getTemplateCount()))

## Tries to delete the template of the finger
try:
    positionNumber = raw_input('Please enter the template position you want to delete: ')
    positionNumber = int(positionNumber)

    if ( f.deleteTemplate(positionNumber) == True ):
        print('Template deleted!')

except Exception as e:
    print('Operation failed!')
    print('Exception message: ' + str(e))
    exit(1)
Ejemplo n.º 23
0
class DoorLock(threading.Thread):
    def __init__(self, sc):
        try:
            threading.Thread.__init__(self)
            self.mode = 'check'
            self.sc = sc
            self.f = PyFingerprint('/dev/ttyAMA0', 57600, 0xFFFFFFFF,
                                   0x00000000)
            if self.f.verifyPassword() == False:
                raise ValueError(
                    'The given fingerprint sensor password is wrong!')

            GPIO.setmode(GPIO.BCM)
            GPIO.setup(21, GPIO.OUT)
            os.system('killall nc')
            self.camera()

            self.lcdControl = monitor.lcd()
            self.lcdControl.lcd_clear()

        except Exception as e:
            print('The fingerprint sensor could not be initialized!')
            print('Exception message: ' + str(e))
            exit(1)

    def camera(self):
        PIPE = subprocess.PIPE
        self.p = subprocess.Popen([
            "/bin/bash", "-i", "-c",
            "sudo raspivid -n -ih -t 0 -rot 0 -w 1280 -h 720 -fps 15 -b 1000000 -o - | nc -lkv4 5000"
        ],
                                  stdout=PIPE,
                                  preexec_fn=os.setsid)
        print(self.p)

    def run(self):
        while True:
            if self.mode == 'check':
                self.checkFingerprint()
            elif self.mode == 'enroll':
                self.saveFingerprint()

    def chageMode(self, modename):
        self.mode = modename

    def deleteFingerprint(self, id):
        if (self.f.deleteTemplate(id) == True):
            print('Template deleted!')

    def checkFingerprint(self):
        while True:
            try:
                print('mode: ' + self.mode)
                print('Waiting for finger...')

                self.lcdControl.lcd_clear()
                self.lcdControl.lcd_display_string("mode: " + self.mode, 1)
                self.lcdControl.lcd_display_string("Waiting Finger", 2)

                while self.f.readImage() == False and self.mode == 'check':
                    pass
                if self.mode != 'check':
                    return
                self.f.convertImage(0x01)
                print('Remove finger...')
                self.lcdControl.lcd_clear()
                self.lcdControl.lcd_display_string("mode: " + self.mode, 1)
                self.lcdControl.lcd_display_string("Remove Finger...", 2)
                time.sleep(2)
                result = self.f.searchTemplate()
                positionNumber = result[0]

                os.killpg(os.getpgid(self.p.pid), signal.SIGKILL)
                with PiCamera() as camera:
                    camera.start_preview()
                    time.sleep(1)
                    camera.capture('/home/pi/Desktop/image.jpg')
                    camera.stop_preview()

                self.var = self.rand()
                if storage.download('doorlock/' + self.var + '.jpg'):
                    self.var = self.rand()

                storage.upload('/home/pi/Desktop/image.jpg',
                               'doorlock/' + self.var + '.jpg')
                self.camera()

                if (positionNumber >= 0):
                    print('Success #' + str(positionNumber))
                    self.lcdControl.lcd_clear()
                    self.lcdControl.lcd_display_string("mode: " + self.mode, 1)
                    self.lcdControl.lcd_display_string(
                        "Success #" + str(positionNumber), 2)
                    GPIO.output(21, True)
                    time.sleep(1)
                    GPIO.output(21, False)

                    now = datetime.datetime.now()
                    timenow = now.strftime('%Y-%m-%d %H:%M:%S')
                    picturePath = storage.path('doorlock/' + self.var + '.jpg')
                    doorLockstatus = '정상'

                    self.sc.sndMsg('doorlock\timage\t' + str(picturePath[3:]) +
                                   '\t' + timenow + '\t' + doorLockstatus)

                else:
                    print('Failed to FingerPrint')

                    self.lcdControl.lcd_clear()
                    self.lcdControl.lcd_display_string("mode: " + self.mode, 1)
                    self.lcdControl.lcd_display_string("Falied Finger", 2)
                    time.sleep(1)

                    now = datetime.datetime.now()
                    timenow = now.strftime('%Y-%m-%d %H:%M:%S')
                    picturePath = storage.path('doorlock/' + self.var + '.jpg')
                    doorLockstatus = '비정상'
                    self.sc.sndMsg('doorlock\timage\t' + str(picturePath[3:]) +
                                   '\t' + timenow + '\t' + doorLockstatus)

            except Exception as e:
                print('Operation failed!')
                print('Exception message: ' + str(e))

    def saveFingerprint(self):
        try:
            print('mode: ' + self.mode)
            print('Waiting for finger...')
            self.lcdControl.lcd_clear()
            self.lcdControl.lcd_display_string("mode: " + self.mode, 1)
            self.lcdControl.lcd_display_string("Waiting Finger...", 2)
            while self.f.readImage() == False and self.mode == 'enroll':
                pass
            if self.mode != 'enroll':
                return
            self.f.convertImage(0x01)

            print('Remove finger...')
            self.lcdControl.lcd_clear()
            self.lcdControl.lcd_display_string("mode: " + self.mode, 1)
            self.lcdControl.lcd_display_string("Remove Finger...", 2)

            print('Waiting for same finger again...')
            self.lcdControl.lcd_clear()
            self.lcdControl.lcd_display_string("mode: " + self.mode, 1)
            self.lcdControl.lcd_display_string("SameFinger again", 2)

            while self.f.readImage() == False and self.mode == 'enroll':
                pass
            if self.mode != 'enroll':
                return
            self.f.convertImage(0x02)

            time.sleep(2)

            if self.f.compareCharacteristics() == 0:
                self.lcdControl.lcd_clear()
                self.lcdControl.lcd_display_string("mode: " + self.mode, 1)
                self.lcdControl.lcd_display_string("Do not match", 2)
                time.sleep(1)
            if self.f.compareCharacteristics() == 0:
                raise Exception('Fingers do not match')

            self.f.createTemplate()
            positionNumber = self.f.storeTemplate()
            print('#' + str(positionNumber))
            self.lcdControl.lcd_clear()
            self.lcdControl.lcd_display_string("mode: " + self.mode, 1)
            self.lcdControl.lcd_display_string(
                "Success #" + str(positionNumber), 2)
            time.sleep(1)
            self.sc.sndMsg('doorlock\tenroll\t' + str(positionNumber))

            time.sleep(2)
            self.mode = 'check'
        except Exception as e:
            print('Operation failed!')
            print('Exception message: ' + str(e))

    def openDoor(self):
        GPIO.output(21, True)
        time.sleep(4)
        GPIO.output(21, False)

    def rand(self):
        _LENGTH = 8
        random_var = string.digits
        result = ""
        for i in range(_LENGTH):
            result += random.choice(random_var)
        return result
Ejemplo n.º 24
0
class UtilFingerprint:

    #Realiza la coneccion con el fingerprint
    def __init__(self, instIndex):
        self.initFP(instIndex)

    #Realiza la coneccion con el fingerprint
    def initFP(self, instIndex):
        self.instIndex = instIndex
        try:
            self.f = PyFingerprint('/dev/ttyS0', 57600, 0xFFFFFFFF, 0x00000000)
            if (self.f.verifyPassword() == False):
                raise ValueError(
                    'La contrasena del sensor de huella dactilar presento un error.'
                )
        except Exception as e:
            print('The fingerprint sensor could not be initialized!')
            print('Exception message: ' + str(e))
            exit(1)

    #Busca una huella en especifico
    def search(self, instIndex):
        self.initFP(instIndex)

        try:
            #Esperando a que sea leido el dedo
            while (self.instIndex.semaforo == False
                   and self.f.readImage() == False):
                pass

            if self.instIndex.semaforo == True:
                return 0

            #Convierte la imagen en caracteristicas
            self.f.convertImage(0x01)

            #Se busca la imagen leida en las guardadas previamente
            result = self.f.searchTemplate()
            positionNumber = result[0]
            accuracyScore = result[1]

            self.instIndex.idUser = positionNumber
            self.instIndex.semaforo = True
            return positionNumber

        except Exception as e:
            print('Mensaje de Excepcion: ' + str(e))
            exit(1)

    #-------- Elimina una huella en el dispositivo --------
    def delete(self, positionNumber, instIndex):
        self.initFP(instIndex)

        try:
            if (self.f.deleteTemplate(positionNumber) == True):
                print('Template deleted!')
        except Exception as e:
            print('Operation failed!')
            print('Exception message: ' + str(e))
            exit(1)

    #---------- Verifica existencia de huella -----------
    def exist(self, instIndex):
        self.initFP(instIndex)

        try:
            print("Waiting for finger")

            #Escucha el fingerprint
            while self.instIndex.semaforo == False and self.f.readImage(
            ) == False:
                pass

            #Si se acaba el tiempo se elimina la ejecucion
            if self.instIndex.semaforo == True:
                self.instIndex.result = "timeout"
                return "timeout"

            #En caso de que se ingresara una huella se analiza
            self.f.convertImage(0x01)

            result = self.f.searchTemplate()
            positionNumber = result[0]
            self.instIndex.result = str(positionNumber)

            return str(positionNumber) + ""  # -1 quiere = No existe

        except Exception as e:
            print('Operation failed!')
            print('Exception message: ' + str(e))
            exit(1)

    #-------- Guarda una huella en el dispositivo --------
    def save(self, instIndex):
        self.initFP(instIndex)

        try:
            #Se valida que la huella se registrara correctamente
            while (self.instIndex.semaforo == False
                   and self.f.readImage() == False):
                pass

            #En caso de ser eliminado desde otra clase se termina el flujo
            if self.instIndex.semaforo == True:
                self.instIndex.result = "ERROR!, debe colocar el dedo en el dispositivo"
                return 0

            self.f.convertImage(0x02)

            if (self.f.compareCharacteristics() == 0):
                self.instIndex.result = "Las huellas no coinciden"
                return 0

            self.f.createTemplate()

            positionNumber = self.f.storeTemplate()
            #print ("La posicion de la huella es " + str(positionNumber))

            self.instIndex.idUser = positionNumber
            self.instIndex.result = "Realizado con exito."
            self.instIndex.semaforo = True

        except Exception as e:
            print('Operation failed!')
            print('Exception message: ' + str(e))
            exit(1)
Ejemplo n.º 25
0
            print('Exception message: ' + str(e))

    elif i == 3:  ## Deletes a finger
        ## Gets some sensor information
        print('Currently used templates: ' + str(f.getTemplateCount()) + '/' +
              str(f.getStorageCapacity()))

        ## Tries to delete the template of the finger
        try:
            rollno = input('Please enter the Roll No. to delete: ')
            for i in range(len(dfStudent.index)):
                if (rollno == dfStudent.loc[i, 0]):
                    positions.append(dfStudent.loc[i, 4])
                    positions.append(dfStudent.loc[i, 6])
                    break
            positionNumber = int(positionNumber)

            if (f.deleteTemplate(positions[0]) == True
                    and f.deleteTemplate(positions[1] == True)):
                print('Template deleted!')

        except Exception as e:
            print('Operation failed!')
            print('Exception message: ' + str(e))

    else:
        mylcd.lcd_display_string('Exiting...', 1, 3)
        time.sleep(1)
        mylcd.lcd_clear()
        exit(0)
def enroll(ref, firstName, lastName, licNo, lmv):
    try:
        f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000)

        if (f.verifyPassword() == False):
            raise ValueError('The given fingerprint sensor password is wrong!')

    except Exception as e:
        print('The fingerprint sensor could not be initialized!')
        print('Exception message: ' + str(e))
        exit(1)


## Gets some sensor information
#print('Currently used templates: ' + str(f.getTemplateCount()) +'/'+ str(f.getStorageCapacity()))
    f.deleteTemplate(0)
    ## Tries to enroll new finger
    try:
        print('Waiting for finger...')

        ## Wait that finger is read
        while (f.readImage() == False):
            pass

    ## Converts read image to characteristics and stores it in charbuffer 1
        f.convertImage(0x01)

        ## Checks if finger is already enrolled
        result = f.searchTemplate()
        positionNumber = result[0]
        if (positionNumber >= 0):
            print('Template already exists at position #' +
                  str(positionNumber))
            exit(0)

        print('Remove finger...')
        time.sleep(2)

        print('Waiting for same finger again...')

        ## Wait that finger is read again
        while (f.readImage() == False):
            pass

    ## Converts read image to characteristics and stores it in charbuffer 2
        f.convertImage(0x02)

        ## Compares the charbuffers
        if (f.compareCharacteristics() == 0):
            raise Exception('Fingers do not match')

    ## Creates a template
        f.createTemplate()

        ## Saves template at new position number
        positionNumber = f.storeTemplate()
        f.loadTemplate(positionNumber, 0x01)

        scan = f.downloadCharacteristics(0x01)
        f.deleteTemplate(positionNumber)
        print('Finger scanned successfully!')

        data = {
            'Name': firstName,
            'LastName': lastName,
            'LicenseNo': licNo,
            'LMV': lmv,
            'biom': scan
        }
        driverBucketId = ref.post('/DrivingLicense/details', data)
    except Exception as e:
        print('Operation failed!')
        print('Exception message: ' + str(e))
        exit(1)
Ejemplo n.º 27
0
class UtilFingerprint:

    #Realiza la coneccion con el fingerprint
    def __init__(self,instIndex):
       self.initFP(instIndex)

    #Realiza la coneccion con el fingerprint
    def initFP(self,instIndex):
        self.instIndex = instIndex
        try:
            self.f = PyFingerprint('/dev/ttyS0', 57600, 0xFFFFFFFF, 0x00000000)
            if ( self.f.verifyPassword() == False ):
                raise ValueError('La contrasena del sensor de huella dactilar presento un error.')
        except Exception as e:
            print('The fingerprint sensor could not be initialized!')
            print('Exception message: ' + str(e))
            exit(1)


    #Busca una huella en especifico
    def search(self,instIndex):
        self.initFP(instIndex)

        try:
            #Esperando a que sea leido el dedo
            while (self.instIndex.semaforo == False and self.f.readImage() == False ):
                pass

            if self.instIndex.semaforo == True:
                return 0
            
            #Convierte la imagen en caracteristicas 
            self.f.convertImage(0x01)

            #Se busca la imagen leida en las guardadas previamente
            result = self.f.searchTemplate()
            positionNumber = result[0]
            accuracyScore = result[1]
            
            self.instIndex.idUser = positionNumber
            self.instIndex.semaforo = True
            return positionNumber                     

        except Exception as e:
            print('Mensaje de Excepcion: ' + str(e))
            exit(1)

    #-------- Elimina una huella en el dispositivo --------
    def delete(self, positionNumber, instIndex):
        self.initFP(instIndex)
    
        try:
            if ( self.f.deleteTemplate(positionNumber) == True ):
                print('Template deleted!')
        except Exception as e:
            print('Operation failed!')
            print('Exception message: ' + str(e))
            exit(1)

    
    #---------- Verifica existencia de huella -----------
    def exist(self, instIndex):
        self.initFP(instIndex)
    
        try:
            print("Waiting for finger")

            #Escucha el fingerprint
            while self.instIndex.semaforo == False and self.f.readImage() == False:
                pass
 
            #Si se acaba el tiempo se elimina la ejecucion
            if self.instIndex.semaforo == True:
                self.instIndex.result = "timeout"
                return "timeout"

            #En caso de que se ingresara una huella se analiza
            self.f.convertImage(0x01)

            result = self.f.searchTemplate()
            positionNumber = result[0]
            self.instIndex.result = str(positionNumber)

            return str(positionNumber)+""# -1 quiere = No existe

        except Exception as e:
            print('Operation failed!')
            print('Exception message: ' + str(e))
            exit(1)


    #-------- Guarda una huella en el dispositivo --------
    def save(self, instIndex):
        self.initFP(instIndex)
    
        try:            
            #Se valida que la huella se registrara correctamente
            while (self.instIndex.semaforo == False and self.f.readImage() == False):
                pass
            
            #En caso de ser eliminado desde otra clase se termina el flujo
            if self.instIndex.semaforo == True:
                self.instIndex.result = "ERROR!, debe colocar el dedo en el dispositivo"
                return 0


            self.f.convertImage(0x02)

            if(self.f.compareCharacteristics() == 0):
                self.instIndex.result = "Las huellas no coinciden"
                return 0

            self.f.createTemplate()

            positionNumber = self.f.storeTemplate()
            #print ("La posicion de la huella es " + str(positionNumber))

            self.instIndex.idUser = positionNumber
            self.instIndex.result = "Realizado con exito."
            self.instIndex.semaforo = True

        except Exception as e:
            print('Operation failed!')
            print('Exception message: ' + str(e))
            exit(1)
Ejemplo n.º 28
0
## Tries to initialize the sensor
try:
    f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000)

    if ( f.verifyPassword() == False ):
        raise ValueError('The given fingerprint sensor password is wrong!')

except Exception as e:
    print('The fingerprint sensor could not be initialized!')
    print('Exception message: ' + str(e))
    exit(1)

## Gets some sensor information
numTemps = str(f.getTemplateCount())
print('Currently used templates: ' + numTemps +'/'+ str(f.getStorageCapacity()))

## Tries to delete the template of the finger
try:
    #positionNumber = input('Please enter the template position you want to delete: ')
    #positionNumber = int(positionNumber)
    numT=f.getTemplateCount()
    for x in range(0,numT):
        f.deleteTemplate(x)
    numTemps = str(f.getTemplateCount())
    print('Currently used templates: ' + numTemps +'/'+ str(f.getStorageCapacity()))

except Exception as e:
    print('Operation failed!')
    print('Exception message: ' + str(e))
    exit(1)
Ejemplo n.º 29
0
##

## Tries to initialize the sensor
try:
    f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000)

    if (f.verifyPassword() == False):
        raise ValueError('The given fingerprint sensor password is wrong!')

except Exception as e:
    print("The fingerprint sensor could not be initialized!\n" +
          "Exception message: " + str(e))
    exit(1)

## Load the template to compare against.
if (f.deleteTemplate(0) == True):
    print('Template deleted!')

#print("Uploading characteristics")
f.uploadCharacteristics(0x01, finger_template1)
f.uploadCharacteristics(0x02, finger_template2)
#print("Peak on the uploaded characteristics: " + str(f.downloadCharacteristics(0x02)))

## Gets some sensor information
print("Currently used templates: " + str(f.getTemplateCount()) + '/' +
      str(f.getStorageCapacity()))

## Tries to search the finger and calculate hash
try:
    #    print("Waiting for finger...\n")
    #
Ejemplo n.º 30
0

## Tries to initialize the sensor
try:
    f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000)

    if ( f.verifyPassword() == False ):
        raise ValueError('The given fingerprint sensor password is wrong!')

except Exception as e:
    print('The fingerprint sensor could not be initialized!')
    print('Exception message: ' + str(e))
    exit(1)

## Gets some sensor information
print('Currently used templates: ' + str(f.getTemplateCount()) +'/'+ str(f.getStorageCapacity()))

## Tries to delete the template of the finger
try:
    positionNumber = input('Please enter the template positions you want to delete: ')
    positionNumber = int(positionNumber)
    for Number in range(positionNumber): 
        if ( f.deleteTemplate(Number) == True ):
            print('Template deleted!')

except Exception as e:
    print('Operation failed!')
    print('Exception message: ' + str(e))
    exit(1)

                            print('Exception message' + str(e))
                            exit(1)

                        print('Currently used templates: ' +
                              str(f.getTemplateCount()) + '/' +
                              str(f.getStorageCapacity()))

                        try:
                            lcd.lcd_clear()
                            lcd.lcd_display_string('Enter index:', 1, 2)
                            positionNumber = input(
                                'Please enter the template position you want to delete: '
                            )
                            positionNumber = int(positionNumber)

                            if (f.deleteTemplate(positionNumber) == True):
                                print('Template deleted!')
                                lcd.lcd_clear()
                                lcd.lcd_display_string('Deleted!', 1, 4)
                                time.sleep(3)
                                lcd.lcd_display_string(
                                    str(f.getTemplateCount()) + 'finGer left',
                                    1, 1)
                                time.sleep(2)
                                lcd.lcd_clear()

                        except Exception as e:
                            print('Operation failed!')
                            print('Exception message: ' + str(e))
                            exit(1)
Ejemplo n.º 32
0
class User():
    def __init__(self):
        self.finger = None
        self.digit = None
        self.FLAG = True
        self.inserted_password = ''
        self.cnt_ENTER = 0
        self.cnt_OUT = 0
        self.data_flag = 'active'
        self.positive_flag = ''
        self.camera_flag = 'active'
        #self.CamThreadFlag = True
    def ResetButtonCallback(self, channel):
        diode.resetAll()
        self.cnt_ENTER = 0
        self.cnt_OUT = 0
        self.FLAG = True
        self.digit = None
        self.inserted_password = ''
        self.data_flag = 'active'
        self.positive_flag = ''
        lcd.lcd_clear()
        lcd2.lcd_clear()
        #GPIO.cleanup()
    def CameraButtonCallback(self, channel):
        self.camera_flag = 'off'
        self.CamThreadFlag = False

    def fingerprint_init(self):

        try:
            self.finger = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF,
                                        0x00000000)

            if (self.finger.verifyPassword() == False):
                raise ValueError(
                    'The given fingerprint sensor password is wrong!')

        except Exception as e:
            lcd.lcd_display_string('Error', 1)
            print(e)
            exit(0)

    def add_user_fingerprint(self, user_id):
        try:
            lcd.lcd_clear()
            lcd.lcd_display_string('Adding user..', 1)
            lcd.lcd_display_string('Place finger..', 2)

            while (self.finger.readImage() == False):
                pass

            self.finger.convertImage(0x01)

            result = self.finger.searchTemplate()
            positionNumber = result[0]

            if (positionNumber >= 0):
                lcd.lcd_clear()
                lcd.lcd_display_string('Pattern already', 1)
                lcd.lcd_display_string('exist', 2)

            lcd.lcd_clear()
            lcd.lcd_display_string('Authrization..', 1)
            lcd.lcd_display_string('Please wait..', 2)
            time.sleep(2)

            while (self.finger.readImage() == False):
                pass

            self.finger.convertImage(0x02)

            if (self.finger.compareCharacteristics() == 0):
                lcd.lcd_display_string('Finger patterns', 1)
                lcd.lcd_display_string('do not match', 2)

            self.finger.createTemplate()

            positionNumber = self.finger.storeTemplate()

            lcd.lcd_clear()
            lcd.lcd_display_string('Authrization', 1)
            lcd.lcd_display_string('Complete', 2)
            self.finger.loadTemplate(positionNumber, 0x01)
            characterics = str(
                self.finger.downloadCharacteristics(0x01)).encode('utf-8')
            Char = hashlib.sha256(characterics).hexdigest()
            database.send_data("update users set user_fingerprint = '" + Char +
                               "', pattern_position = " + str(positionNumber) +
                               " where user_id = " + str(user_id))
            time.sleep(1)
            lcd.lcd_clear()
            lcd.lcd_display_string('User added', 1)
            lcd.lcd_display_string('Finger enrolled', 2)
            time.sleep(1.5)
            lcd.lcd_clear()
            lcd2.lcd_clear()

        except Exception as e:
            lcd.lcd_clear()
            lcd.lcd_display_string('Error', 1)
            print(e)

    def counter_OUT(self):
        self.cnt_OUT += 1
        if self.cnt_OUT == 1:
            diode.setRedDiode_OUT()
            time.sleep(1.5)
            diode.resetRedDiode_OUT()
        elif self.cnt_OUT == 2:
            diode.blinkRedDiode_OUT()
        elif self.cnt_OUT == 3:
            diode.setAlarm()
            time.sleep(0.1)
            diode.resetAlarm()
            lcd2.lcd_display_string('AUTHORIZATION', 1)
            lcd2.lcd_display_string('FAILED !!!', 2)
            self.FLAG = False

    def counter_ENTER(self):
        self.cnt_ENTER += 1
        if self.cnt_ENTER == 1:
            diode.setRedDiode_OUT()
            time.sleep(1.5)
            diode.resetRedDiode_OUT()
        elif self.cnt_ENTER == 2:
            diode.blinkRedDiode_OUT()
            #time.sleep(1.5)
        elif self.cnt_ENTER == 3:
            diode.setAlarm()
            time.sleep(0.1)
            diode.resetAlarm()
            lcd2.lcd_display_string('AUTHORIZATION', 1)
            lcd2.lcd_display_string('FAILED !!!', 2)
            self.FLAG = False

    def positive(self):
        if self.positive_flag == 'OUT':
            diode.setGreenDiode_OUT()
            diode.resetRedDiode_OUT()
            time.sleep(1.5)
            diode.resetGreenDiode_OUT()
        elif self.positive_flag == 'ENTER':
            diode.setGreenDiode_ENTER()
            diode.resetRedDiode_ENTER()
            time.sleep(1.5)
            diode.resetGreenDiode_ENTER()

    def residence_time(self, user_id):
        time_in = database.get_data(
            "select time_in from usertime where user_id = " + str(user_id))
        time_out = database.get_data(
            "select time_out from usertime where user_id = " + str(user_id))
        if ((time_in is not None) and (time_out is not None)):
            res_time = (time_out - time_in)
            database.send_data("update usertime set residence_time = '" +
                               str(res_time) + "' where user_id = " +
                               str(user_id))

    def add_delete_user(self):
        try:
            while self.FLAG:
                lcd2.lcd_display_string('Insert password:'******'#':
                        if self.inserted_password[0] == 'A':
                            DoesAddCodeExists = database.get_data(
                                "select count(create_acc_code) from usercode where create_acc_code = '"
                                + self.inserted_password + "'")
                            if DoesAddCodeExists == 1:
                                can_be_added = database.get_data(
                                    "select users.availability from users where users.user_id = (select usercode.user_id from usercode where create_acc_code = '"
                                    + self.inserted_password +
                                    "' and users.user_id = usercode.user_id)")
                                if can_be_added == 1:
                                    user_code_quantity = database.get_data(
                                        "select count(user_id) as quantity from usercode where create_acc_code = '"
                                        + self.inserted_password + "'")
                                    if user_code_quantity == 1:
                                        expire_date = database.get_data(
                                            "select expire_date from usercode where create_acc_code = '"
                                            + self.inserted_password + "'")
                                        current_date = datetime.datetime.strptime(
                                            time.strftime(
                                                '%Y-%m-%d %H:%M:%S',
                                                time.localtime()),
                                            '%Y-%m-%d %H:%M:%S')
                                        if current_date < expire_date:
                                            user_id = database.get_data(
                                                "select users.user_id from users where users.user_id = (select usercode.user_id from usercode where usercode.create_acc_code = '"
                                                + self.inserted_password +
                                                "' and users.user_id = usercode.user_id)"
                                            )
                                            database.send_data(
                                                "update usercode set create_acc_code = null where create_acc_code = '"
                                                + self.inserted_password + "'")
                                            lcd2.lcd_clear()
                                            lcd2.lcd_display_string(
                                                'Code correct!', 1)
                                            time.sleep(1.5)
                                            lcd2.lcd_clear()
                                            lcd2.lcd_display_string(
                                                'Add your', 1)
                                            lcd2.lcd_display_string(
                                                'finger pattern', 2)
                                            self.data_flag = 'off'
                                            self.add_user_fingerprint(user_id)
                                            self.FLAG = False

                                        else:
                                            lcd2.lcd_clear()
                                            lcd2.lcd_display_string(
                                                'Code expired!', 1)
                                            self.inserted_password = ''
                                            self.data_flag = 'active'
                                            self.digit = None
                                            time.sleep(2)
                                            lcd2.lcd_clear()

                                    else:
                                        lcd2.lcd_clear()
                                        lcd2.lcd_display_string(
                                            'Wrong password', 1)
                                        self.inserted_password = ''
                                        self.digit = None
                                        time.sleep(2)

                                else:
                                    lcd2.lcd_clear()
                                    lcd2.lcd_display_string('User cannot', 1)
                                    lcd2.lcd_display_string('be added', 2)
                                    self.inserted_password = ''
                                    self.digit = None
                                    time.sleep(1.5)
                                    lcd2.lcd_clear()

                            else:
                                lcd2.lcd_clear()
                                lcd2.lcd_display_string('This password', 1)
                                lcd2.lcd_display_string('not exists', 2)

                        elif self.inserted_password[0] == 'D':
                            DoesDeleteCodeExists = database.get_data(
                                "select count(delete_acc_code) from usercode where delete_acc_code = '"
                                + self.inserted_password + "'")
                            if DoesDeleteCodeExists == 1:
                                getUserID = database.get_data(
                                    "select user_id from usercode where delete_acc_code = '"
                                    + self.inserted_password + "'")
                                can_be_deleted = database.get_data(
                                    "select availability from users where user_id = "
                                    + str(getUserID))
                                if can_be_deleted == 0:
                                    positionNumber = database.get_data(
                                        "select pattern_position from users where user_id = "
                                        + str(getUserID))
                                    if (self.finger.deleteTemplate(
                                            positionNumber) == True):
                                        database.send_data(
                                            "call delete_user(" +
                                            str(getUserID) + ")")
                                        lcd2.lcd_clear()
                                        lcd2.lcd_display_string(
                                            'User has been', 1)
                                        lcd2.lcd_display_string('deleted', 2)
                                        self.inserted_password = ''
                                        self.digit = None
                                        time.sleep(1.5)
                                        lcd2.lcd_clear()
                                else:
                                    lcd2.lcd_clear()
                                    lcd2.lcd_display_string('User cannot', 1)
                                    lcd2.lcd_display_string('be deleted', 2)
                                    self.inserted_password = ''
                                    self.digit = None
                                    time.sleep(1.5)
                                    lcd2.lcd_clear()

                            else:
                                lcd2.lcd_display_string('Password not', 1)
                                lcd2.lcd_display_string('recognized', 2)

                        elif self.inserted_password[0] == 'B':
                            user_id = database.get_data(
                                "select user_id from users where user_exit_password = '******'")
                            if user_id >= 1:
                                lcd2.lcd_clear()
                                lcd2.lcd_display_string('Password correct', 1)
                                time_out_date = datetime.datetime.strptime(
                                    time.strftime('%Y-%m-%d %H:%M:%S',
                                                  time.localtime()),
                                    '%Y-%m-%d %H:%M:%S')
                                database.send_data(
                                    "update usertime set time_out = '" +
                                    str(time_out_date) + "' where user_id = " +
                                    str(user_id))
                                self.positive_flag = 'OUT'
                                self.positive()
                                self.residence_time(user_id)
                                self.data_flag = 'off'
                                self.FLAG = False

                            else:
                                lcd2.lcd_clear()
                                lcd2.lcd_display_string('Wrong password', 1)
                                self.counter_OUT()
                                time.sleep(1.5)
                                self.digit = None
                                self.inserted_password = ''

                        else:
                            lcd2.lcd_clear()
                            lcd2.lcd_display_string('Password not', 1)
                            lcd2.lcd_display_string('recognized', 2)

                    if self.digit == 'C':
                        index1 = len(self.inserted_password) - 1
                        index2 = len(self.inserted_password) - 2
                        _char1 = self.inserted_password[index1]
                        _char2 = self.inserted_password[index2]
                        self.inserted_password = self.inserted_password.replace(
                            _char1, '', 1)
                        self.inserted_password = self.inserted_password.replace(
                            _char2, '', 1)
                    if self.data_flag == 'active':
                        lcd2.lcd_clear()
                        lcd2.lcd_display_string('insert password', 1)
                        lcd2.lcd_display_string(self.inserted_password, 2)

        except Exception as e:
            lcd.lcd_clear()
            lcd2.lcd_clear()
            lcd.lcd_display_string('Error occured', 1)
            lcd2.lcd_display_string('Error occured', 1)
            print(e)

    def check_user(self):
        while True:
            try:
                while (self.finger.readImage() == False):
                    pass

                lcd.lcd_clear()
                lcd.lcd_display_string('Verifying..', 1)

                self.finger.convertImage(0x01)

                result = self.finger.searchTemplate()
                positionNumber = result[0]

                if positionNumber == -1:
                    lcd.lcd_clear()
                    lcd.lcd_display_string('Given pattern', 1)
                    lcd.lcd_display_string('does not exists', 2)
                    self.counter_ENTER()
                    #exit(0)
                else:
                    lcd.lcd_clear()
                    lcd.lcd_display_string('Welcome', 1)
                    EnterToRoomDate = datetime.datetime.strptime(
                        time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()),
                        '%Y-%m-%d %H:%M:%S')
                    database.send_data(
                        "update usertime set time_in = '" +
                        str(EnterToRoomDate) +
                        "' where user_id = (select user_id from users where pattern_position = "
                        + str(positionNumber) +
                        " and usertime.user_id = users.user_id)")
                    self.positive_flag = 'ENTER'
                    self.positive()
                    lcd.lcd_clear()

            except Exception as e:
                lcd.lcd_clear()
                lcd.lcd_display_string('Error', 1)
                print(e)