Ejemplo n.º 1
0
def begin():  # Tries to initialize the sensor
    global Finger
    try:
        # pulled up to avoid false detection.
        # So we'll be setting up falling edge detection
        GPIO.setmode(GPIO.BCM)
        GPIO.setup(TOUCH_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)
        Finger = PyFingerprint(FINGER_PORT, FINGER_BAUDRATE, FINGER_ADDRESS,
                               FINGER_PASSWORD)
        if not Finger.verifyPassword():
            raise ValueError('Password for the Fingerprint module is wrong!')
        # Gets some sensor information
        print('Fingerprint used templates: ' + str(Finger.getTemplateCount()) +
              '/' + str(Finger.getStorageCapacity()))
        return True
    except Exception as e:
        print('The fingerprint sensor could not be initialized!')
        print('Exception message: ' + str(e))
        return False
Ejemplo n.º 2
0
def verify_test():
    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)

    print('Currently used templates: ' + str(f.getTemplateCount()) +'/'+ str(f.getStorageCapacity()))
    time.sleep(0.1)
    try:
        while ( f.readImage() == False ):
            pass
        f.convertImage(0x01)
        result = f.searchTemplate() ## Searchs template
        positionNumber = result[0]
        accuracyScore = result[1]
        temp = positionNumber
        if ( positionNumber == -1 ):
            print('No match found! Try again')
            time.sleep(0.5)
            #login()
        else:
            print('Found template at position #' + str(positionNumber))
            print('The accuracy score is: ' + str(accuracyScore))
            #return 0
    except Exception as e:
        print('Operation failed!')
        print('Exception message: ' + str(e))
        exit(1)
    
    if ( positionNumber == -1 ):
        print('No match found! Try again....')
        time.sleep(0.5)
        verify_test()
    #else:
    
    return positionNumber
def init_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)

    used = f.getTemplateCount()  #0,1,2,3 = 4
    print('Currently used templates: ' + str(used) + '/' +
          str(f.getStorageCapacity()))

    if (used > 0):
        del_me(used, f)
    else:
        print("Nothing to be deleted in module!")
Ejemplo n.º 4
0
def display():

    ## Reads image and download it
    ##

    ## 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 read image and download it
    try:
        print('Waiting for finger...')

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

        print('Downloading image (this take a while)...')

        imageDestination = tempfile.gettempdir() + '/fingerprint.bmp'
        f.downloadImage(imageDestination)

        print('The image was saved to "' + imageDestination + '".')
        print('Displaying fingerprint:')
        os.system('eog /tmp/fingerprint.bmp')
    except Exception as e:
        print('Operation failed!')
        print('Exception message: ' + str(e))
        exit(1)
Ejemplo n.º 5
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.º 6
0
def enroll():
    print('start enroll')
    port = config.figerScanPort
    f = PyFingerprint(port, 57600, 0xFFFFFFFF, 0x00000000)

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

    ## 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))
            return -1

        f.createTemplate()

        ## Saves template at new position number
        positionNumber = 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 -2
    def delete(self, uid):
        ## 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
        finger_ids = employee.utof(uid)
        if finger_ids != -1:
            for finger_id in finger_ids:
                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)

            employee.remove_fingerprint(uid)
        else:
            print('invalid finger id list')
Ejemplo n.º 8
0
def search():
    ## Tries to initialize the sensor
    f = PyFingerprint('COM6', 57600, 0xFFFFFFFF, 0x00000000)

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

    ## Tries to search the finger and calculate hash
    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(FINGERPRINT_CHARBUFFER1)

    ## Searchs template
    result = f.searchTemplate()

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

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

        f = open('profiles/' + str(positionNumber) + '.txt',
                 'r',
                 encoding='UTF8')
        for line in f:
            print(line, end='')
        f.close()
def index():

    ## Shows the template index table
    ##

    ## 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 show a template index table page
    try:
        page = raw_input(
            'Please enter the index page (0, 1, 2, 3) you want to see: ')
        page = int(page)

        tableIndex = f.getTemplateIndex(page)

        for i in range(0, len(tableIndex)):
            print('Template at position #' + str(i) + ' is used: ' +
                  str(tableIndex[i]))

    except Exception as e:
        print('Operation failed!')
        print('Exception message: ' + str(e))
        exit(1)
Ejemplo n.º 10
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 read image and download it
try:
    print('Waiting for finger...')

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

    print('Downloading image (this take a while)...')

    imageDestination =  tempfile.gettempdir() + '/fingerprint.bmp'
    f.downloadImage(imageDestination)

    print('The image was saved to "' + imageDestination + '".')
        print('Operation failed!')
        print('Exception message: ' + str(e))
    return

def clear_FDB():
    clearDB = yesno("HEY!!!", "Are you sure?")
    if clearDB == True:
        clear()
        info("HEY!!", "Operation was successful")
    else:
        info("NOTE!!", "Going back to main window ")
        delete_menu_window.hide()
        app.show()
        
clear_FDB_btn = PushButton(delete_menu_window, text="Clear FDB", command=clear_FDB)
clearDB_text = Text (delete_menu_window, text='Currently used templates: ' + str(f.getTemplateCount()) +'/'+ str(f.getStorageCapacity()))
#delete menu window ends

#enroll window starts
def enroll():
    ## Gets some sensor information
    print('Currently used templates: ' + str(f.getTemplateCount()) +'/'+ str(f.getStorageCapacity()))
    enroll_status_text1.value =  'Currently used templates: ' + str(f.getTemplateCount()) +'/'+ str(f.getStorageCapacity())
    ## Tries to enroll new finger
    try:
        print('Waiting for finger...')
        enroll_status_text2.value = 'Waiting for finger...'
        ## Wait that finger is read
        while ( f.readImage() == False ):
            pass
    clearDB = yesno("HEY!!!", "Are you sure?")
    if clearDB == True:
        clear()
        info("HEY!!", "Operation was successful")
    else:
        info("NOTE!!", "Going back to main window ")
        delete_menu_window.hide()
        app.show()


clear_FDB_btn = PushButton(delete_menu_window,
                           text="Clear FDB",
                           command=clear_FDB)
clearDB_text = Text(delete_menu_window,
                    text='Currently used templates: ' +
                    str(f.getTemplateCount()) + '/' +
                    str(f.getStorageCapacity()))

#delete menu window ends


#enroll window starts
def enroll():
    ## Gets some sensor information
    print('Currently used templates: ' + str(f.getTemplateCount()) + '/' +
          str(f.getStorageCapacity()))
    enroll_status_text1.value = 'Currently used templates: ' + str(
        f.getTemplateCount()) + '/' + str(f.getStorageCapacity())
    ## Tries to enroll new finger
    try:
        print('Waiting for finger...')
    def RegisterFinger():
        continue_reading = 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:
            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 enroll new finger
        try:
            Pinlbl = Label(top,
                           text="Waiting for finger...",
                           font=myfont,
                           width=16)
            Pinlbl.grid(row=0, column=3)
            Pinlbl.configure(bg='#ff7700')

            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]

            print(positionNumber)

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

            Pinlbl = Label(top, text="Remove Finger...", font=myfont, width=16)
            Pinlbl.grid(row=0, column=3)
            Pinlbl.configure(bg='#ff7700')
            print('Remove finger...')
            time.sleep(2)

            Pinlbl = Label(top,
                           text="Waiting Same Finger Again...",
                           font=myfont,
                           width=16)
            Pinlbl.grid(row=0, column=3)
            Pinlbl.configure(bg='#ff7700')

            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):
                Pinlbl = Label(top,
                               text="Fingers do not match",
                               font=myfont,
                               width=16)
                Pinlbl.grid(row=0, column=3)
                Pinlbl.configure(bg='#ff7700')
                raise Exception('Fingers do not match')
                continue_reading = False

            ## Creates a template
            f.createTemplate()

            ## Saves template at new position number
            positionNumber = f.storeTemplate()
            Pinlbl = Label(top,
                           text="Finger enrolled successfully!",
                           font=myfont,
                           width=16)
            Pinlbl.grid(row=0, column=3)
            Pinlbl.configure(bg='#ff7700')
            print('Finger enrolled successfully!')
            print(positionNumber)
            print('New template position #' + str(positionNumber))

            Pinlbl = Label(top, text="Input Your ID", font=myfont, width=16)
            Pinlbl.grid(row=0, column=3)
            Pinlbl.configure(bg='#ff7700')

            ID = pinin.get()
            userID = ''.join(str(e) for e in ID)

            print("ID Number: ", userID)

            lockstatus = SendtoServer("/add/fingerprint/1", 1, 2, {
                'FingerPrint': str(positionNumber),
                'UserID': userID
            })
            if lockstatus['status'] == 0:
                pinlbl = Label(top,
                               text="Input Data Failed",
                               font=myfont,
                               width=16)
                Pinlbl.grid(row=0, column=3)
                Pinlbl.configure(bg='#ff7700')
                print("Tambah Data Gagal")
            else:
                Pinlbl = Label(top,
                               text="Input Data Succes",
                               font=myfont,
                               width=16)
                Pinlbl.grid(row=0, column=3)
                Pinlbl.configure(bg='#ff7700')
                print("Tambah Data Berhasil")

            continue_reading = False

        except Exception as e:
            print('Operation failed!')
            print('Exception message: ' + str(e))
            continue_reading = False
    def Finger():
        continue_reading = 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:
            print('The fingerprint sensor could not be initialized!')
            Pinlbl = Label(top2,
                           text="Finger Not Deteted",
                           font=myfont,
                           width=16)
            Pinlbl.grid(row=0, column=3)
            Pinlbl.configure(bg='#ff7700')
            print('Exception message: ' + str(e))
            continue_reading = False

            ## 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...')
                Pinlbl = Label(top2,
                               text="Waiting For Finger",
                               font=myfont,
                               width=16)
                Pinlbl.grid(row=0, column=3)
                Pinlbl.configure(bg='#ff7700')

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

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

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

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

                lockstatus = SendtoServer("/scan/fingerprint/1", 1, 2,
                                          {'FingerPrint': str(positionNumber)})
                print(lockstatus)

                if lockstatus['status'] == 3:
                    Pinlbl = Label(top2,
                                   text="Access Danied",
                                   font=myfont,
                                   width=16)
                    Pinlbl.grid(row=0, column=3)
                    Pinlbl.configure(bg='#ff7700')
                    print("Access Denied, YOU SHALL NOT PASS!")
                    print(positionNumber)
                    continue_reading = False
                else:
                    print("Access Granted")
                    Pinlbl = Label(top2,
                                   text="Access Granted",
                                   font=myfont,
                                   width=16)
                    Pinlbl.grid(row=0, column=3)
                    Pinlbl.configure(bg='#ff7700')
                    GPIO.output(Relay, GPIO.HIGH)  #Turn on Relay
                    time.sleep(5)  #Wait 5 Seconds
                    GPIO.output(Relay, GPIO.LOW)  #Turn off Relay
                    continue_reading = False

                ## Loads the found template to charbuffer 1
                f.loadTemplate(positionNumber, 0x01)

                ## Downloads the characteristics of template loaded in charbuffer 1
                characterics = str(
                    f.downloadCharacteristics(0x01)).encode('utf-8')

                ## Hashes characteristics of template
                print('SHA-2 hash of template: ' +
                      hashlib.sha256(characterics).hexdigest())

            except Exception as e:
                print('Operation failed!')
                print('Exception message: ' + str(e))
                continue_reading = False
Ejemplo n.º 15
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 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()
Ejemplo n.º 16
0
    def predict(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 search the finger and calculate hash
        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)

            ## Searchs template
            result = f.searchTemplate()

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

            if (positionNumber == -1):
                print('No match found!')
                exit(0)
            else:
                with open('./data_log.csv', 'r') as file:
                    self.rows = csv.DictReader(file)
                    for row in self.rows:
                        if row['positionnumber'] == str(positionNumber):
                            print('Name :', row['empolynumber'])

                    #print('\nName : ', self.data_empoly[positionNumber])
                    #print('Found template at position #' + str(positionNumber))
                    print('The accuracy score is: ' + str(accuracyScore))

            ## OPTIONAL stuff
            ##

            ## Loads the found template to charbuffer 1
            f.loadTemplate(positionNumber, 0x01)

            ## Downloads the characteristics of template loaded in charbuffer 1
            characterics = str(f.downloadCharacteristics(0x01)).encode('utf-8')

            ## Hashes characteristics of template
            #print('SHA-2 hash of template: ' + hashlib.sha256(characterics).hexdigest())

        except Exception as e:
            print('Operation failed!')
            print('Exception message: ' + str(e))
            exit(1)
Ejemplo n.º 17
0
def enroll_finger():
    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 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()
        print('Finger enrolled successfully!')
        print('New template position #' + str(positionNumber))

    except Exception as e:
        print('Operation failed!')
        print('Exception message: ' + str(e))
        exit(1)
def fprint():
    ## Search for a finger##

    ## 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))
    

    ## 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...')

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

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

        ## Searchs template
        result = f.searchTemplate()

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

        if ( positionNumber == -1 ):
            print('No match found!')

        else:
            print('Found template at position #' + str(positionNumber))
            print('The accuracy score is: ' + str(accuracyScore))
            return True
            '''if(s_mode==0):
                s_mode=1
                DC=1./18.*(120)+2
                pwm.ChangeDutyCycle(DC)
            else:
                s_mode=0
                DC=1./18.*(60)+2
                pwm.ChangeDutyCycle(DC)'''

        ## OPTIONAL stuff
        ##

        ## Loads the found template to charbuffer 1
        f.loadTemplate(positionNumber, 0x01)

        ## Downloads the characteristics of template loaded in charbuffer 1
        characterics = str(f.downloadCharacteristics(0x01)).encode('utf-8')

        ## Hashes characteristics of template
        print('SHA-2 hash of template: ' + hashlib.sha256(characterics).hexdigest())

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

        outlog = ''

        ## Search for a finger
        ##

        ## 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))
            outlog += ('\nThe fingerprint sensor could not be initialized!' + 
            'Exception message: ' + str(e))
            return ('init_error', outlog)
            #exit(1)

        ## Gets some sensor information

        print('Currently used templates: ' + str(f.getTemplateCount()) +'/'+ str(f.getStorageCapacity()))
        outlog += ('\nCurrently used templates: ' + str(f.getTemplateCount()) +'/'+ str(f.getStorageCapacity()))

        ## Tries to search the finger and calculate hash
        try:
            print('Waiting for finger...')
            outlog += '\nWaiting for finger...'

            ## Wait that finger is read
            tic = time.clock()
            toc = time.clock()
            while ( f.readImage() == False and (toc - tic < 0.1)):
                toc = time.clock()

            try:
                ## Converts read image to characteristics and stores it in charbuffer 1
                f.convertImage(0x01)
            except:
                print('error converting image')
                outlog += '\nerror converting image'
                return ('convert_error', outlog)
            
            try:
                ## Search template
                result = f.searchTemplate()

                positionNumber = int(result[0])
                accuracyScore = int(result[1])
            except:
                print('could not find template')
                outlog += '\ncould not find template'
                return ('find_error', outlog)

            if ( positionNumber == -1 ):
                print('No match found!')
                outlog += '\nNo match found!'
                return ('no_match', outlog)
                #exit(0)
            else:
                print('Found template at position #' + str(positionNumber))
                print('The accuracy score is: ' + str(accuracyScore))
                outlog += ('\nFound template at position #' + str(positionNumber) + 
                    '\nThe accuracy score is: ' + str(accuracyScore))
        except:
            print('error reading finger')
            outlog += '\nerror reading finger'
            return ('reading_error', outlog)
        
        #delete excess fingerprints
        #self.delete_extra()

        return (positionNumber, outlog)
Ejemplo n.º 20
0
##

## Tries to initialize the sensor
try:
    f = PyFingerprint('/dev/ttyS0', 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 show a template index table page
try:
    page = input('Please enter the index page (0, 1, 2, 3) you want to see: ')
    page = int(page)

    tableIndex = f.getTemplateIndex(page)

    for i in range(0, len(tableIndex)):
        print('Template at position #' + str(i) + ' is used: ' + str(tableIndex[i]))

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

        outlog = ''

        ## Enrolls new finger
        ##

        ## 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))
            outlog += ('\nThe fingerprint sensor could not be initialized!\n'+
                'Exception message: ' + str(e))
            exit(1)

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

        ## Tries to enroll new finger
        try:
            print('Waiting for finger...')
            outlog += '\nWaiting for finger...'

            scanned = False

            ## Wait that finger is read
            tic = time.clock()
            toc = time.clock()
            while ( f.readImage() == False and (toc - tic < 0.1)):
                toc = time.clock()
            
            scanned = f.readImage()


            ## 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))
                outlog += '\nTemplate already exists at position #' + str(positionNumber)
                return (self.read()[0], outlog)

            print('Remove finger...')
            outlog += '\nRemove finger...'
            time.sleep(2)

            print('Waiting for same finger again...')
            outlog += '\nWaiting for same finger again...'

            ## Wait that finger is read again
            tic = time.clock()
            toc = time.clock()
            while ( f.readImage() == False and (toc - tic < 0.1)):
                toc = time.clock()
            
            scanned = f.readImage()

            if not scanned:
                print('not scanned')
                return -1

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

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

            ## Creates a template
            f.createTemplate()

            ## Saves template at new position number
            positionNumber = f.storeTemplate()
            print('Finger enrolled successfully!')
            outlog += '\nFinger enrolled successfully!'
            print('New template position #' + str(positionNumber))
            outlog += '\nNew template position #' + str(positionNumber)

        except Exception as e:
            print('Operation failed!')
            print('Exception message: ' + str(e))
            outlog += ('\nException message: ' + str(e))
            return (-1, outlog)
            #time.sleep(1)
            #exit(1)

        return (positionNumber, outlog)
Ejemplo n.º 22
0
def search():
    try:
        f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000)

        if (f.verifyPassword() == False):
            GPIO.output(BLUE, 1)
            sleep(1)
            GPIO.output(BLUE, 0)
            raise ValueError('The given fingerprint sensor password is wrong!')

    except Exception as e:
        GPIO.output(BLUE, 1)
        sleep(1)
        GPIO.output(BLUE, 0)
        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 search the finger and calculate hash
    try:
        print('Waiting for finger...')

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

        print('Downloading image (this take a while)...')

        if (os.path.isfile('/home/pi/webapp/static/fingerprint.bmp')):
            os.remove('/home/pi/webapp/static/fingerprint.bmp')

        imageDestination = '/home/pi/webapp/static/fingerprint.bmp'
        f.downloadImage(imageDestination)
        print('The image was saved to "' + imageDestination + '".')

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

        ## Searchs template
        result = f.searchTemplate()

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

        if (positionNumber == -1):
            GPIO.output(RED, 1)
            sleep(1)
            GPIO.output(RED, 0)
            print('No match found!')
            return 0
        else:
            GPIO.output(GREEN, 1)
            sleep(1)
            GPIO.output(GREEN, 0)
            print('Found template at position #' + str(positionNumber))
            print('The accuracy score is: ' + str(accuracyScore))

        ## OPTIONAL stuff
        ##

        ## Loads the found template to charbuffer 1
        f.loadTemplate(positionNumber, 0x01)

        ## Downloads the characteristics of template loaded in charbuffer 1
        characterics = str(f.downloadCharacteristics(0x01)).encode('utf-8')

        ## Hashes characteristics of template
        print('SHA-2 hash of template: ' +
              hashlib.sha256(characterics).hexdigest())

        return 1

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

    if (f.verifyPassword() == False):
        raise ValueError(
            "Mot de passe du capteur d'empreinte digitale incorrect")

except Exception as e:
    print("Impossible d'initialiser le capteur d'empreinte digitale")
    print("Message d'erreur : " + str(e))
    exit(1)

## Affiche les données sur le capteur
print("Bienvenue sur le module de recherche d'empreinte digitale")
print("Emplacements utilisés dans le capteur: " + str(f.getTemplateCount()) +
      '/' + str(f.getStorageCapacity()))

## Lit et exporte au format .bmp l'empreinte digitale
try:
    print("Présentez le doigt... \n")

    ## Attendre que le lecteur lise le doigt
    while (f.readImage() == False):
        pass

    ## Convertis l'image lue en caractéristiques et la stocke en charbuffer 1
    f.convertImage(0x01)

    ## Recherche les caractéristiques de l'image dans le capteur
    result = f.searchTemplate()
Ejemplo n.º 24
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 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]
Ejemplo n.º 25
0
    def added(self):
        print('success')
        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 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))

            print('Remove finger...')

            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()
            print('Finger enrolled successfully!')
            print('New template position #' + str(positionNumber))
            df = pd.read_csv('hostel.csv')
            roll = self.nameEdit_2.text()
            yop = self.yearedit.text()
            x = df.shape[0]
            df.set_value(x, 'Name', str(roll))
            df.set_value(x, 'fingerid', str(positionNumber))
            df.set_value(x, 'YoP', str(yop))
            df.to_csv('hostel.csv', encoding="utf-8", index=False)
            print('success')
            self.yearedit.setText("")
            self.nameEdit_2.setText("")
            self.rolledit.setText("")

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

        self.addcheck()
                                else:
                                    lcd.lcd_clear()
                                    lcd.lcd_display_string('Correct!', 1, 4)
                                    lcd.lcd_display_string(
                                        'accuracy: ' + str(accuracyScore), 2,
                                        2)
                                    time.sleep(3)

                        except Exception as e:
                            lcd.lcd_clear()
                            lcd.lcd_display_string('Error Occur!', 1, 2)
                            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)
Ejemplo n.º 27
0
class Fingerprint:
    _shed_Job: Union[schedule.Job, None] = None
    _sensor: Sensor
    _plugin_manager: PluginManager
    err_str: str = "OK"
    _access_check: Union[threading.Thread, None] = None
    _access_check_stop: bool
    wakupPin: Union[Pin.Pin, None]

    currentFinger: BinarySensor
    currentError: BinarySensor


    level1: Switch
    level2: Switch
    level3: Switch

    def __init__(self, client: mclient.Client, opts: conf.BasicConfig, logger: logging.Logger, device_id: str):
        from gpiozero.pins.native import NativeFactory
        from gpiozero import Device
        Device.pin_factory = NativeFactory()

        self._config = conf.PluginConfig(opts, PluginLoader.getConfigKey())
        self.__client = client
        self.__logger = logger.getChild("Fingerprint")
        self._finger = PyFingerprint(
            self._config["serial"],
            57600,
            0xFFFFFFFF,
            self._config.get("password", 0x00000000)
            )
        
        if not self._finger.verifyPassword():
            self.err_str = "PASSWD"
        
        if self._config.get("WAKEUP", 0) is not 0:
            self.wakupPin = Pin.Pin(pin=self._config.get("WAKEUP", 0), direction=Pin.PinDirection.IN_PULL_LOW)
            self.wakupPin.set_detect(self.wakeup, Pin.PinEventEdge.BOTH)
        else:
            self.wakeup(None, threadsleep=False)
        

    def register(self):
        t = ad.Topics.get_std_devInf()

        self.currentFinger = BinarySensor(
            self.__logger,
            self._plugin_manager,
            self._config["name"],
            binary_sensor_type=ad.BinarySensorDeviceClasses.PRESENCE,
            value_template="{{ value_json.dedected }}",
            json_attributes=True,
            icon="mdi:fingerprint"
        )
        self.currentFinger.register()
        self.currentFinger.turn(
            {
                "dedected": False,
                "fingerID": -1,
                "confidency": 0,
                "hash": None
            }
        )
        self.currentError = BinarySensor(
            self.__logger,
            self._plugin_manager,
            "{} Error".format(self._config["name"]),
            ad.BinarySensorDeviceClasses.PROBLEM,
            json_attributes=True,
            value_template="{{ value_json.is_error }}"
        )
        self.currentError.register()
        self.update_error_sensor()

        self.level1 = Switch(
            self.__logger,
            self._plugin_manager,
            self.level1_callback,
            "{} Level1".format(self._config["name"]),
            icon="mdi:shield-lock"
        )
        self.level1.register()
        self.level1.turn(self._config.get("allow_level1", False))

        self.level2 = Switch(
            self.__logger,
            self._plugin_manager,
            self.level2_callback,
            "{} Level2".format(self._config["name"]),
            icon="mdi:shield-lock"
        )
        self.level2.register()
        self.level2.turn(self._config.get("allow_level2", False))

        self.level3 = Switch(
            self.__logger,
            self._plugin_manager,
            self.level3_callback,
            "{} Level3".format(self._config["name"]),
            icon="mdi:shield-lock"
        )
        self.level3.register()
        self.level3.turn(self._config.get("allow_level3", False))


    def level1_callback(self, message:str, state_requested=False):
        self._config["allow_level1"] = True if message == "ON" else False
        self.send_update()

    def level2_callback(self, message:str, state_requested=False):
        self._config["allow_level2"] = True if message == "ON" else False
        self.send_update()

    def level3_callback(self, message:str, state_requested=False):
        self._config["allow_level3"] = True if message == "ON" else False
        self.send_update()

    def update_error_sensor(self):
        try:
            self.currentFinger.turn(
                {
                    "is_error": self.err_str != "OK",
                    "msg": self.err_str
                }
            )
        except:pass

    def set_pluginManager(self, pm):
        self._plugin_manager = pm

    def stop(self):
        pass

    def sendStates(self):
        self.send_update(True)

    def send_update(self, force=False):
        # Send Error Messeges
        self.update_error_sensor()

        # if resend requested, null fingerprint
        if force:
            self.currentFinger.turn(
                {
                    "dedected": False,
                    "fingerID": -1,
                    "confidency": 0,
                    "hash": None
                }
            )
        
        # Update the Authorisation Levels to Home Assistant
        self.level1.turn(self._config.get("allow_level1", False))
        self.level2.turn(self._config.get("allow_level2", False))
        self.level3.turn(self._config.get("allow_level3", False))
    
    def access_thread(self):
        while not self._access_check_stop:
            try:
                img = self._finger.readImage()
                if not img:
                    sleep(0.1)
                    continue
                self._finger.convertImage(FINGERPRINT_CHARBUFFER1)
                res = self._finger.searchTemplate()
                
                optional = {}
                # Extra Exception handling, because this stuff is optional
                try:
                    if res[0] > -1:
                        self._finger.loadTemplate(res[0], FINGERPRINT_CHARBUFFER1)
                        characterics = str(self._finger.downloadCharacteristics(FINGERPRINT_CHARBUFFER1)).encode('utf-8')

                        optional = {
                            "sha256": hashlib.sha256(characterics).hexdigest(),
                            "capacity": self._finger.getStorageCapacity(),
                            "stored": self._finger.getTemplateCount(),
                            "security": self._finger.getSecurityLevel()
                        }

                except Exception as e:
                    self.err_str = str(e)
                    self.update_error_sensor()

                #Tell homeassistant about the new fingerprint
                required = {
                        "dedected": res[0] > -1,
                        "fingerID": res[0],
                        "confidency": res[1],
                        "hash": hex
                    }
                required.update(optional)
                self.currentFinger.turn( required )

                #Wait some time
                sleep( 5.0 if res[0] > -1 else 0.25 )

                #Clear the fingerprint message
                self.currentFinger.turn(
                    {
                        "dedected": False,
                        "fingerID": -1,
                        "confidency": 0,
                        "hash": None
                    }
                )

            except Exception as e:
                self.__logger.exception("access_thread()")
                self.err_str = str(e)
                self.update_error_sensor()

    def stop_access_thread(self):
        self._access_check_stop = True
        if self._access_check is not None:
            self._access_check.join()
            self._access_check = None
        if self._shed_Job is not None:
            schedule.cancel_job(self._shed_Job)
            self._shed_Job = None


    def wakeup(self, device, threadsleep:bool=True):
        if self._access_check is not None and self._access_check.is_alive():
            return

        if self._shed_Job is not None:
            schedule.cancel_job(self._shed_Job)
        if threadsleep:
            job = schedule.every(self._config.get("WAKEUP_active_secs", 120)).seconds
            job.do(self.stop_access_thread)
            self._shed_Job = job
        self._access_check_stop = False
        self._access_check = threading.Thread(target=self.access_thread, name="FingerAccess", daemon=False)
        self._access_check.start()
Ejemplo n.º 28
0
def finger():
    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 enroll new finger
    while 1:
        disp.clear()
        disp.display()
        draw.rectangle((0, 0, width, height), outline=0, fill=0)
        draw.text((x, top), 'Welcome to Enroll', font=font, fill=255)
        draw.text((x, top + 16), 'Waiting for finger...', font=font, fill=255)
        print('Waiting for finger...')
        disp.image(image)
        disp.display()
        time.sleep(.1)

        ## 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):
            disp.clear()
            disp.display()
            draw.rectangle((0, 0, width, height), outline=0, fill=0)
            draw.text((x, top + 16),
                      'Finger already exists',
                      font=font,
                      fill=255)
            disp.image(image)
            disp.display()
            time.sleep(1)
            os.system("python password.py")
            print('Template already exists at position #' +
                  str(positionNumber))

        # disp.clear()
        # disp.display()
        # draw.rectangle((0,0,width,height), outline=0, fill=0)
        # draw.text((x, top + 16),       'Remove finger' ,  font=font, fill=255)
        # disp.image(image)
        # disp.display()
        # time.sleep(.1)
        # print('Remove finger...')
        # time.sleep(2)

        # disp.clear()
        # disp.display()
        # draw.rectangle((0,0,width,height), outline=0, fill=0)

        # draw.text((x, top + 16),       'Waiting for same' ,  font=font, fill=255)
        # draw.text((x, top + 24),       'finger again' ,  font=font, fill=255)
        # disp.image(image)
        # disp.display()

        # print('Waiting for same finger again...')
        # time.sleep(.1)

        ## 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 ):
        #     disp.clear()
        #     disp.display()
        #     draw.rectangle((0,0,width,height), outline=0, fill=0)
        #     draw.text((x, top + 16),       'Fingers do not match' ,  font=font, fill=255)
        #     disp.image(image)
        #     disp.display()
        #     time.sleep(2)
        #     disp.clear()
        #     disp.display()
        #     draw.rectangle((0,0,width,height), outline=0, fill=0)
        #     os.system("python enroll_trial.py")

        ## Creates a template
        f.createTemplate()

        ## Saves template at new position number
        positionNumber = f.storeTemplate()
        print('tihis is code ', code)
        sql_enroll(code, positionNumber)

        #     print("Wrong Input")
        disp.clear()
        disp.display()
        draw.rectangle((0, 0, width, height), outline=0, fill=0)
        draw.text((x, top), 'Employee Number:', font=font, fill=255)
        draw.text((x, top + 8), code, font=font, fill=255)
        draw.text((x, top + 16), 'Employee add suceess', font=font, fill=255)
        disp.image(image)
        disp.display()
        GPIO.cleanup()
        time.sleep(2)
        os.system("python password.py")
Ejemplo n.º 29
0
def enroll():
    ## Tries to initialize the sensor
    f = PyFingerprint('COM6', 57600, 0xFFFFFFFF, 0x00000000)

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

    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(FINGERPRINT_CHARBUFFER1)

    ## 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(FINGERPRINT_CHARBUFFER2)

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

    ##
    print("Nhập thông tin:")
    StudenID = input("StudentID: ")
    Name = input("Name: ")
    Class = input("Class: ")
    School = input("School: ")
    Faculty = input("Faculty: ")
    Room = input("Room: ")
    Phone = input("Phone: ")
    Email = input("Email: ")

    file = open('profiles/2.txt', 'w', encoding='UTF8')
    file.writelines("StudentID: " + StudenID + "\nName: " + Name +
                    "\nClass: " + Class + "\nSchool: " + School +
                    "\nFaculty: " + Faculty + "\nRoom: " + Room + "\nPhone: " +
                    Phone + "\nEmail: " + Email)
    file.close()

    ## Creates a template
    f.createTemplate()

    ## Saves template at new position number
    positionNumber = f.storeTemplate()
    print('Finger enrolled successfully!')
    print('New template position #' + str(positionNumber))
Ejemplo n.º 30
0
def fingerprintdemo():
    global start
    start = time.time()
    print(start)
    ## Search for a finger
    ##

    ## 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 search the finger and calculate hash
    try:
        print('Waiting for finger...')

        ## Wait that finger is read

        while (f.readImage() == False):
            if (time.time() > start + PERIOD_OF_TIME):
                morewaiting()
                start = time.time()
                print(start)
            else:
                pass

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

        ## Searchs template
        result = f.searchTemplate()

        positionNumber = result[0]
        accuracyScore = result[1]
        global repeataccess
        if (positionNumber == -1):
            print('No match found!')
            exit(0)
            repeataccess = 0
        else:
            print('Found template at position #' + str(positionNumber))
            print('The accuracy score is: ' + str(accuracyScore))
            repeataccess = 1

        ## OPTIONAL stuff
        ##

        ## Loads the found template to charbuffer 1
        f.loadTemplate(positionNumber, 0x01)

        ## Downloads the characteristics of template loaded in charbuffer 1
        characterics = str(f.downloadCharacteristics(0x01)).encode('utf-8')

        ## Hashes characteristics of template
        print('SHA-2 hash of template: ' +
              hashlib.sha256(characterics).hexdigest())

    except Exception as e:
        print('Operation failed!')
        print('Exception message: ' + str(e))
        exit(1)
Ejemplo n.º 31
0
    def enroll(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 enroll new finger
        try:

            empoly_number = input(
                '\n[SET]Please input the Employee No , (ex.48628) = ')
            if len(empoly_number) == 0:
                raise Exception('Empoly number error')

            print('[INFO]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  #' + str(empoly_number))
                exit(0)

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

            print('[INFO]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()

            cw = open("./data_log.csv", 'a+')
            cw.write(str(positionNumber) + "," + str(empoly_number) + "\n")

            print('[OK]Finger enrolled successfully!')
            print('[OK]New template position #' + str(empoly_number))

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

    ## 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 enroll new finger
    try:
        msg = messagebox.showinfo("Enroll", "Press OK when Finger Ready")
        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(1)

        msg = messagebox.showinfo("Enroll", "Press OK when Finger Ready")
        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')
            run()

        ## Creates a template
        f.createTemplate()

        ## Saves template at new position number
        positionNumber = f.storeTemplate()
        #print(positionNumber)
        idnum = positionNumber

        print('Finger enrolled successfully!')
        print('New template position #' + str(positionNumber))
        idnum = positionNumber
        #template = result[0]
        firstname = input("Enter your first name: ")
        lastname = input("Enter your last name: ")
        c.execute("INSERT INTO students VALUES(?, ?, ?, ?, ?, ?);",
                  (idnum, firstname, lastname, 'NULL', 'NULL', 'NULL'))
        conn.commit()
        #conn.close()
        f = open("idtemplate.txt", "w")
        f.write(str(idnum))
        f.close
        #exit(1)

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


#run()
#top.mainloop()
Ejemplo n.º 33
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!')
    mylcd.lcd_clear()
    mylcd.lcd_display_string('Unable to initialize!')
    print('Exception message: ' + str(e))
    exit(1)

## Gets some sensor information
template_count = f.getTemplateCount()
storage_capacity = f.getStorageCapacity()
print('Currently used templates: ' + str(template_count) +'/'+ str(storage_capacity))
mylcd.lcd_clear()
mylcd.lcd_display_string('Used: ' + str(template_count) +'/'+ str(storage_capacity))

## Tries to show a template index table page
try:
    page = input('Please enter the index page (0, 1, 2, 3) you want to see: ')
    page = int(page)

    tableIndex = f.getTemplateIndex(page)

    for i in range(0, len(tableIndex)):
        print('Template at position :' + str(i) + ' is used: ' + str(tableIndex[i]))