Seite 1 von 1

Python | uid-Abfrage aus Excel-Liste

Verfasst: Dienstag 20. Oktober 2020, 11:53
von Anton91
Guten Tag Zusammen , ich habe nochmal in Fett unten makiert woran es hackt.
###Anstatt er die Uid hier aus dem oberen Zeilen Vergleicht, soll er in meine excel-Liste gehen und gucken ob der eintrag vorhanden ist
die wichtigsten schritte hab ich schon gemacht und kann auch aus den Excel-liste einträge auslesen und printen.
Kann mir Jemand helfen bitte ? Ich will das der nur aus der excel liste die Spalte UID mit der gegebenen uid vergleicht und falls richtig dann weiter macht mit dem schalten des relais.

Code: Alles auswählen

import RPi.GPIO as GPIO
import MFRC522
import signal
import time
import xlrd
import xlsxwriter

path = "user.xlsx"
inputWorkbook = xlrd.open_workbook(path)
inputWorksheet = inputWorkbook.sheet_by_index(0)


GPIO.setmode(GPIO.BOARD) # GPIO Nummern statt Board Nummern
MEIN_ERSTES_RELAIS_NUMMER = 3 #
GPIO.setup(MEIN_ERSTES_RELAIS_NUMMER, GPIO.OUT) # GPIO Modus zuweisen
MEIN_ZWEITES_RELAIS_NUMMER = 7 #
GPIO.setup(MEIN_ZWEITES_RELAIS_NUMMER, GPIO.OUT) # GPIO Modus zuweisen
#MEIN_DRITTES_RELAIS_NUMMER = 11 #
#GPIO.setup(MEIN_DRITTES_RELAIS_NUMMER, GPIO.OUT) # GPIO Modus zuweisen
#MEIN_VIERTES_RELAIS_NUMMER = 5 #
#GPIO.setup(MEIN_VIERTES_RELAIS_NUMMER, GPIO.OUT) # GPIO Modus zuweisen

Karte_1 = [99,82,179,2,128]
Karte_2 = [105,68,46,195,192]
   


continue_reading = True

 


# Capture SIGINT for cleanup when the script is aborted
def end_read(signal,frame):
    global continue_reading
    print "Ctrl+C captured, ending read."
    continue_reading = False
    GPIO.cleanup()

# Hook the SIGINT
signal.signal(signal.SIGINT, end_read)

# Create an object of the class MFRC522
MIFAREReader = MFRC522.MFRC522()

# Welcome message
print "Welcome to the MFRC522 data read example"
print "Press Ctrl-C to stop."

# This loop keeps checking for chips. If one is near it will get the UID and authenticate
while continue_reading:
    
    # Scan for cards    
    (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)

    # If a card is found
    if status == MIFAREReader.MI_OK:
        print "Card detected"
        
    # Get the UID of the card
    (status,uid) = MIFAREReader.MFRC522_Anticoll()
    

    # If we have the UID, continue
    if status == MIFAREReader.MI_OK:
       

        # Print UID
        print "Card read UID: %s,%s,%s,%s,%s" % (uid[0], uid[1], uid[2], uid[3], uid[4])
    
        # This is the default key for authentication
        key = [0xFF,0xFF,0xFF,0xFF,0xFF,0xFF]
        
        # Select the scanned tag
        MIFAREReader.MFRC522_SelectTag(uid)

        # Authenticate
        status = MIFAREReader.MFRC522_Auth(MIFAREReader.PICC_AUTHENT1A, 8, key, uid)

        # Check if authenticated
        if status == MIFAREReader.MI_OK:
            data = MIFAREReader.MFRC522_Read(8)
            print "data = "+str(data)
            text = "".join(chr(x) for x in data)
            # Zeilenumbruch ausgeben			
            print "\n"
            print ">>>>>>>>> Username = "+text
            print "\n"
            MIFAREReader.MFRC522_StopCrypto1()
            
            
           [b]###Anstatt er die Uid hier aus dem code von oben zieht, soll er in meine excel-Liste gehen und gucken ob der eintrag vorhanden ist [/b]
           [b][u] if uid == Karte_1:
                print "Tür öffnet sich"
                GPIO.output(MEIN_ERSTES_RELAIS_NUMMER, GPIO.LOW) # aus ground
                #GPIO.output(RELAIS_1_GPIO, GPIO.HIGH) # an
                time.sleep(1)
                GPIO.output(MEIN_ERSTES_RELAIS_NUMMER, GPIO.HIGH) #
                print "Karte_1 Relais_1"
                
            elif uid == Karte_2:
                print "Tür öffnet sich"
                GPIO.output(MEIN_ZWEITES_RELAIS_NUMMER, GPIO.LOW) # aus ground
                #GPIO.output(RELAIS_1_GPIO, GPIO.HIGH) # an
                time.sleep(1)
                GPIO.output(MEIN_ZWEITES_RELAIS_NUMMER, GPIO.HIGH) #
                print "Karte_2 Relais_2"[/u][/b]
            
            #GPIO.output(MEIN_DRITTES_RELAIS_NUMMER, GPIO.LOW) # aus ground
            #GPIO.output(RELAIS_1_GPIO, GPIO.HIGH) # an
            #time.sleep(1)
            #GPIO.output(MEIN_DRITTES_RELAIS_NUMMER, GPIO.HIGH) #
            
            #GPIO.output(MEIN_VIERTES_RELAIS_NUMMER, GPIO.LOW) # aus ground
            #GPIO.output(RELAIS_1_GPIO, GPIO.HIGH) # an
            #time.sleep(1)
            #GPIO.output(MEIN_VIERTES_RELAIS_NUMMER, GPIO.HIGH) #
            else:
                print "Tür bleibt geschlossen"
        else:
            
            print "Authentication error"

         
     
        
        

Re: Python | uid-Abfrage aus Excel-Liste

Verfasst: Dienstag 20. Oktober 2020, 12:16
von Sirius3
Ich habe doch hier schon den Code repariert, warum nutzt Du den dann nicht? Warum immer noch Python2? Warum immer noch das fehlerhafte Aufräumen? Warum immer noch globale Variablen?