Python | uid-Abfrage aus Excel-Liste

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
Anton91
User
Beiträge: 9
Registriert: Dienstag 18. August 2020, 11:04

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"

         
     
        
        
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

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?
Antworten