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