Hallo erstmal,
ich habe einen Pi3B mit Reader unter Python2 sehr gut am laufen, als ich nun alles erweitern wollte geht nichts mehr.
Bekomme einfach keine Software mehr aufgespielt, egal habe ja noch ein Pi4 mit Bullseye 64 Bit
Mein ersten Problem war das der sql connector nicht wollte, ok habe ich hinbekommen.
Code aus Pi3
Python
#!/usr/bin/python
# -*- coding: utf8 -*-,
import RPi.GPIO as GPIO
import MFRC522
import signal
import datetime
import time
import MySQLdb
import os
sorb01= 137226219179
sorb02 = 1111111111
sorb03 = 2222222222
#Zugriff auf Datenbank
db = MySQLdb.connect(host = "localhost",
user = "user",
passwd = "pass",
db = "rose")
#Parameter fuer Eintragung
evsb06 = "T"
evsb08 = "W"
continue_reading = True
def end_read(signal,frame):
global continue_reading
print "\nProgramm beendet!"
continue_reading = False
GPIO.cleanup()
signal.signal(signal.SIGINT, end_read)
MIFAREReader = MFRC522.MFRC522()
print ("Programm gestartet zum Karten scannen!")
#Alle Programme Begin
while continue_reading:
now = datetime.datetime.today()
evsb05 = now.strftime('%Y-%m-%d')
evsb09 = now.strftime('%Y')
evsb10 = time.strftime('%H:%M:%S', time.localtime())
(status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)
(status,uid) = MIFAREReader.MFRC522_Anticoll()
if status == MIFAREReader.MI_OK:
card = str(uid[0]) + str(uid[1]) + str(uid[2]) + str(uid[3])
if card == sorb01:,
print("Funktionskarte 1")
elif card == sorb02:
print("Funktionskarte 2")
elif card == sorb03:
print("Funktionskarte 3")
else:
cur = db.cursor()
a= cur.execute("SELECT db01, db02, db03, db04 FROM db WHERE db05 = %s" ,card )
for row in cur.fetchall():
# Bestimme weitere Parameter
ivsb01 = str(row[0])
ivsb02 = str(row[1])
ivsb03 = str(row[2])
ivsb04 = str(row[3])
ivsb05 = evsb05
ivsb06 = evsb06
ivsb07 = card
ivsb08 = evsb08
ivsb09 = evsb09
ivsb10 = evsb10
curo = db.cursor()
a= curo.execute("SELECT * FROM rfid WHERE tt01 = %s" ,card )
#Karte nicht in DB vorhanden
if a == 0:
if b == 0:
itt01 = card
itt02 = "f"
itt03 = "n"
cur.execute("INSERT INTO rfid (tt01, tt02, tt03) VALUES (%s, %s, %s)", (itt01, itt02, itt03))
db.commit()
print (card + " wurde eingetragen")
print("Nächste Karte.")
continue
else:
print("Karte ist schon vorhanden.")
print("Nächste Karte.")
continue
else: #Karte in DB vorhanden
cur.execute("INSERT INTO iss (vsb01, vsb02, vsb03, vsb04, vsb05, vsb06, vsb07, vsb08, vsb09, vsb10) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)", (ivsb01, ivsb02, ivsb03, ivsb04, ivsb05, ivsb06, ivsb07, ivsb08, ivsb09, ivsb10))
db.commit()
print (card + " ~ " + ivsb04 + " wurde eingetragen")
print("Nächste Karte.")
time.sleep(2)
Display More
nun aus Pi4
Python
#!/usr/bin/env python3
from RPi import GPIO
from mfrc522 import SimpleMFRC522
import mysql.connector
import mysql.connector.errors
from contextlib import closing
import time
import datetime
import os
db = mysql.connector.connect(
host="localhost",
user="pi",
password="raspberry",
database="svwi")
sorb01 = 956397711138
sorb02 = 1060436786393
sorb03 = 2222222222
GPIO.setmode(GPIO.BCM)
evsb06 = "T"
evsb08 = "W"
reader = SimpleMFRC522()
print ("Programm gestartet zum Karten scannen!")
while continue_reading:
GPIO.output(LED_GREEN, GPIO.HIGH)
now = datetime.datetime.today()
evsb05 = now.strftime('%Y-%m-%d')
evsb09 = now.strftime('%Y')
evsb10 = time.strftime('%H:%M:%S', time.localtime())
id, text = reader.read()
card = id
print(card)
if card == sorb01:
print("Funktionskarte 1")
time.sleep(0.2)
elif card == sorb02:
print("Funktionskarte 2")
elif card == sorb03:
print("Funktionskarte 3")
else:
############################################################################################################
Hier haenge ich fest
############################################################################################################
cur = db.cursor()
a= cur.execute("SELECT db01, db02, db03, db04 FROM db WHERE db05 = %s" ,card )
for row in cur.fetchall():
# Bestimme weitere Parameter
ivsb01 = str(row[0])
ivsb02 = str(row[1])
ivsb03 = str(row[2])
ivsb04 = str(row[3])
ivsb05 = evsb05
ivsb06 = evsb06
ivsb07 = card
ivsb08 = evsb08
ivsb09 = evsb09
ivsb10 = evsb10
curo = db.cursor()
a= curo.execute("SELECT * FROM rfid WHERE tt01 = %s" ,card )
#Karte nicht in DB vorhanden
######################################################################################################
Oben: Select und Insert hatte ich schon mal geschaft aber
Unten: Diese IF a und IF b Abfrage daran scheitere ich
######################################################################################################
if a == 0:
if b == 0:
print (Card ID wurde eingetragen")
print("Nächste Karte.")
continue
else:
print("Card ID ist schon vorhanden.")
print("Nächste Karte.")
continue
else:
print("Info wurde eingetragen")
print("Nächste Karte.")
############################################################################################################
Hier haenge ich fest
############################################################################################################
print("Nächste Karte.")
time.sleep(2)
Display More
Wie im Code zu sehen hänge ich an IF abfrage fest, ich weß es geht mit try: und co aber da wurde ich auch nicht schlauer draus.
Bitte nicht zu viele Fachbegriffe nutzen damit kann ich nichts anfangen außer es sind befehle .
Wer hat dafür eine lösung