für ein Schulprojekt wollen wir ein Automatisches Anwesenheitssystem Programmieren, dieses Läuft über ein Raspberry PI der Verbunden ist mit einem RFID Scan gerät.
Da ich aber relativ Neu in Python bin, stoße ich nun vor ein paar Problemen, wo ich mit Google keine passende Erklärung oder Beispiel gefunden habe das es gut erklärt.
Wie folgt, wir wollen die RFID Karte, einem Schüler zuweisen, durch das Scannen der ID, wird diese Erkannt ( ist in einer Datenbank dem Schüler(DBName: Schueler) Eindeutig zugewiesen ) soweit kein Problem, das war jetzt noch recht einfach, jetzt zu dem Schwierigen Teil für mich.
Schüler haben eindeutige IDs, RFID Karte ist einer ID zugewiesen ( in der Tabelle "Schueler" ) -> das Python Script soll beim Erfolgreichen Scannen die ID des Schülers (zb. RFID = 1 SchuelerID = 1 ) mit Hilfe der eindeutigen RFID auslesen, diese in der Tabelle Anwesenheiten wieder finden und den Entsprechenden Wert 1 in der ersten Stunde (Std1,Std2 etc.. ) eintragen.
Bei den Stunden ist das Problem das diese noch verglichen werden müssen mit der Zeit, wenn 7:45 dann Eintrag in der ersten Stunde --> bis 9 Uhr kommt man zu spät soll die zuspät kommende Zeit eingetragen werde, wenn Std2 ab 9:15 - 11 Uhr immer so weiter.
Meine Frage ist jetzt, wie Vergleiche ich jetzt die RFID in der Tabelle "Schueler" lese somit die ID des Schülers aus, vergleiche diese mit der ID des Schülers in der Tabelle "Anwesenheiten".
Ich habe die Datenbank nicht gemacht hätte es Sinnvoller und Logischer gelöst gerade weil man als Endnutzer diese Datenbank nicht sieht weil am Ende eine Weboberfläche hat, wo man alles auslesen kann, ich hätte direkt die RFID in die Anwesenheitstabelle eingefügt, dann wäre das nicht so schwer wie es jetzt ist.
Ich erwarte keine Lösungen, sei denn ich komme komplett nicht weiter, aber ich würde mich über Lösungsansätze und Tipps freuen, weil ich Python mit SQL Anbindung gerne Lernen würde.
Code: Alles auswählen
import sys
import tty
import termios
import time
import thread
import datetime
import RPi.GPIO as GPIO
import logging
import db
import MFRC522
import MySQLdb
def connect():
return MySQLdb.connect(host="Mir bekannt", user="mir bekannt", passwd="mir bekannt", db="mir bekannt")
def identity():
reading = True
while reading:
MIFAREReader = MFRC522.MFRC522()
(status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)
if status == MIFAREReader.MI_OK:
print("Karte wurde Erkannt")
(status,backData) = MIFAREReader.MFRC522_Anticoll()
if status == MIFAREReader.MI_OK:
print ("Die Karten ID ist: "+str(backData[0])+""+str(backData[1])+""+str(backData[2])+""+str(backData[3])+""+str(backData[4]))
MIFAREReader.AntennaOff()
reading=False
return str(backData[0])+str(backData[1])+str(backData[2])+str(backData[3])+str(backData[4])
def setGpio():
# Show no warnings
GPIO.setwarnings(False)
# Use GPIO pin numbers
GPIO.setmode(GPIO.BOARD)
def read():
cardId=identity()
return cardId
cardId=read()
db2 = connect()
c = db2.cursor()
check = c.execute("SELECT Vorname FROM Schueler WHERE KartenID = " + cardId) ## Hier das Auslesen des Schülers mit der ID...
result = c.fetchall()
for data in result:
print "Name:" + str(data[0])
Code: Alles auswählen
Std1 = 1
SchuelerID = 1
check2 = c.execute("UPDATE Anwesenheiten SET Std1 = %s WHERE SchuelerID = %s" % (Std1,SchuelerID)) ## Hier habe ich Versucht erstmal Generell ein Eintrag zusetzten.