RFID, GPIOs, Python und jede menge if abfragen

Mal wieder ein neues Projekt am Start 🙂
Ich möchte mittels RFID-Chips + Leser einen GPIO Kontakt schalten (wenn ein dann aus und umgekehrt)
Der GPIO Kontakt schaltet ein 5V Relais ein oder aus.
Denkbar wäre eine Weiterverwendung als Türüberwachung mittels Magnetkontakt und Signal.
Weitere Programmteile wie Speicherung der Chip Nummer + Zeit, Datum in eine SQL DB folgen noch.
Aktuelle bin ich mit dem ganzen IF, ELIF, ELSE Programmteil welcher die GPIOS
schaltet noch nicht ganz zufrieden.

#!/bin/bash/python
# -*- coding: utf8 -*-
#V0.01

#imports
import serial
import sys
import time
from operator import xor
import RPi.GPIO as GPIO

#Definiere GPIO 22(Pin 15) als Output:
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(15, GPIO.OUT)
#GPIO.output(15, GPIO.HIGH)


# UART
ID = ""
Zeichen = 0

Checksumme = 0
Tag = 0

# Flags
Startflag = "\x02"
Endflag = "\x03"

# UART oeffnen
UART = serial.Serial("/dev/ttyAMA0", 9600)
UART.open()

while True:

    # Variablen loeschen
    Checksumme = 0
    Checksumme_Tag = 0
    ID = ""

    # Zeichen einlesen
    Zeichen = UART.read()

    # Uebertragungsstart signalisiert worden?
    if Zeichen == Startflag:

        # ID zusammen setzen
        for Counter in range(13):

Zeichen = UART.read()
            ID = ID + str(Zeichen)

        # Endflag aus dem String loeschen
        ID = ID.replace(Endflag, "" );

        # Checksumme berechnen
        for I in range(0, 9, 2):
            Checksumme = Checksumme ^ (((int(ID[I], 16)) << 4) + int(ID[I+1], 16))
        Checksumme = hex(Checksumme)

        # Tag herausfiltern
        Tag = ((int(ID[1], 16)) << 8) + ((int(ID[2], 16)) << 4) + ((int(ID[3], 16)) << 0)
        Tag = hex(Tag)

        print ID[4:10]
		#Erlaube RFID Chips
		a = "25B8A2" #Key 1
		b = "5E5326" #Key 2
		if ID[4:10] == a:
			print "erlaubt Key 1"
		elif ID[4:10] == b:
			print "erlaubt Key 2"
		else:
			print "Key nicht erlaubt"
	
		#break

"""
WENN KEY1 auf leser gelegt wird abfrage ob GPIO HIGH oder LOW
	Wenn LOW dann auf HIGH schalten
	Wenn HIGH dann auf LOW schalten
Bei unerlaubtem RFID Key keine Schaltung und schleife startet von vorne
Schaltmatrix:
key a | GPIO HIGH   #key erlaubt
key a | GPIO LOW    #key erlaubt
key b | GPIO HIGH   #key erlaubt
key a | GPIO LOW    #key erlaubt
key c | GPIO HIGH | GPIO LOW  #key nicht erlaubt, keine Schaltung GPIO!
...
d.h
if key a == erlaubt AND GPIO == HIGH: --> überprüfen ob HIGH
	GPIO auf LOW
	print "Zugang erlaubt!, System aus"
if key a == erlaubt und GPIO == LOW:
	GPIO auf HIGH
	print "Anlage scharf geschaltet"
elif key == c:
	print "Kein Zugang"
	

Bsp für GPIO Signale
if GPIO.input(15) == GPIO.HIGH: #Abfrage status
	GPIO.output(15), GPIO.LOW #Aus