NEWS
Kennt sich wer mit Python aus?
-
Ich suche jemanden der sich mit Python auskennt und mir bei einem Script kurz weiterhelfen kann.
Es geht darum in ein Script einen Befehl zum warten bevor fortgesetzt wird einzubauen.
Einfach kurz schreiben ich melde mich dann.
-
wasn ???
eine einfache time.sleep(yx)
#!/usr/bin/python import time print "anfang: %s" % time.ctime() time.sleep(2) print "ende: %s" % time.ctime()
reicht nicht ??
-
Danke ich probiere es nachher mal. Hatte gestern nur das time.sleep eingefügt das ging aber nicht.
Gesendet von meinem SM-G928F mit Tapatalk
-
Ich bekomme es nun hin das das komplette Script pausiert aber nicht das es da stoppt wenn ich es will.
Das Script ist für das RFID Projekt.
Das Script fragt den Chip selbst bei langsamen dran halten extrem oft ab. Das wollte ich unterbinden das wenn ein Chip erkannt wird einfach X Sekunden gewartet wird und dann das Script einfach weiter macht.
Wollte unter den Prints für Karte1,2 oder wrong card````
time.sleep(X)import MFRC522
import signal
import timecontinue_reading = True
MIFAREReader = MFRC522.MFRC522()Karten konfigurieren
karte1 = [xy]
karte2 = [yx]def end_read(signal, frame):
global continue_reading
continue_reading = False
print "Ctrl+C captured, ending read."
MIFAREReader.GPIO_CLEEN()signal.signal(signal.SIGINT, end_read)
Script starten
print "\x1b[2J" # Terminal leeren
print "RFID Card Reader ioBroker Script"
print "Zum Abbrechen des Skripts STRG-C druecken."while continue_reading:
(status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)
if status == MIFAREReader.MI_OK:
print "Card detected"
(status,backData) = MIFAREReader.MFRC522_Anticoll()
if status == MIFAREReader.MI_OK:
print "Card read UID: "+str(backData[0])+","+str(backData[1])+","+str(backData[2])+","+str(backData[3])+","+str(backData[4])
# Hier werden die Karten abgefragt
if backData == karte1:
import urllib
urllib.urlretrieve('http://ip/set/Test?value=true') # ioBroker URL
print "Status True gesetzt! - Karte 1"
elif backData == karte2:
print "Karte 2"
else:
print "wrong Card" -
import MFRC522 import signal import time continue_reading = True MIFAREReader = MFRC522.MFRC522() # Karten konfigurieren karte1 = [xy] karte2 = [yx] def end_read(signal, frame): global continue_reading continue_reading = False print "Ctrl+C captured, ending read." MIFAREReader.GPIO_CLEEN() signal.signal(signal.SIGINT, end_read) # Script starten print "\x1b[2J" # Terminal leeren print "RFID Card Reader ioBroker Script" print "Zum Abbrechen des Skripts STRG-C druecken." while continue_reading: (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL) if status == MIFAREReader.MI_OK: print "Card detected" # hier könntest du es einbauen warte 1 sec. = 1000 milisec time.sleep(1000) (status,backData) = MIFAREReader.MFRC522_Anticoll() if status == MIFAREReader.MI_OK: print "Card read UID: "+str(backData[0])+","+str(backData[1])+","+str(backData[2])+","+str(backData[3])+","+str(backData[4]) # Hier werden die Karten abgefragt if backData == karte1: import urllib urllib.urlretrieve('http://ip/set/Test?value=true') # ioBroker URL print "Status True gesetzt! - Karte 1" elif backData == karte2: print "Karte 2" else: print "wrong Card"
-
nein das ist auch nicht die passende Lösung.
Es kommt dann Card detected und dann muss ich die Karte die ganze Wartezeit über dran halten damit er die dann richtig liest.
time.sleep(1000) sind meine ich übrigens 1000 sekunden kann das sein?
time.sleep(.1000) sollten 1000 ms sein oder?
-
ok ich dachte du willst die länger drann halten dann so..
import MFRC522 import signal import time import urllib continue_reading = True MIFAREReader = MFRC522.MFRC522() # Karten konfigurieren karte1 = [xy] karte2 = [yx] def end_read(signal, frame): global continue_reading continue_reading = False print "Ctrl+C captured, ending read." MIFAREReader.GPIO_CLEEN() signal.signal(signal.SIGINT, end_read) # Script starten print "\x1b[2J" # Terminal leeren print "RFID Card Reader ioBroker Script" print "Zum Abbrechen des Skripts STRG-C druecken." while continue_reading: (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL) if status == MIFAREReader.MI_OK: print "Card detected" (status,backData) = MIFAREReader.MFRC522_Anticoll() if status == MIFAREReader.MI_OK: print "Card read UID: "+str(backData[0])+","+str(backData[1])+","+str(backData[2])+","+str(backData[3])+","+str(backData[4]) # Hier werden die Karten abgefragt # hier direkt nach erkennen der Karte time.sleep(1) if backData == karte1: urllib.urlretrieve('http://ip/set/Test?value=true') # ioBroker URL print "Status True gesetzt! - Karte 1" elif backData == karte2: print "Karte 2" else: print "wrong Card" # oder am ende der schleife time.sleep(1)
priber mal aus
das kommt davon wenn man mit mehrere Sprachen hantiert.. die funktion arbeitet mit sekunden
time.sleep(1)
solltest auch mal den import urllib nach oben ziehen
-
Am ende ging auch was nicht müsste ich heute abend nochmal schauen. Am besten wäre es direkt hinter die letzten print von den Karten. Aber da bekomme ich einen Script Fehler. Heute Abend geht es weiter. Danke dir schon mal
Gesendet von meinem SM-G928F mit Tapatalk
-
selbst wenn ich es so mache kommt die wartezeit erst wenn ich das script mit strg c abbreche:
import MFRC522 import signal import time import urllib continue_reading = True MIFAREReader = MFRC522.MFRC522() # Karten konfigurieren karte1 = [1111111111] karte2 = [1111111111] def end_read(signal, frame): global continue_reading continue_reading = False print "Ctrl+C captured, ending read." MIFAREReader.GPIO_CLEEN() signal.signal(signal.SIGINT, end_read) # Script starten print "\x1b[2J" # Terminal leeren print "RFID Card Reader ioBroker Script" print "Zum Abbrechen des Skripts STRG-C druecken." while continue_reading: (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL) if status == MIFAREReader.MI_OK: print "Card detected" (status,backData) = MIFAREReader.MFRC522_Anticoll() if status == MIFAREReader.MI_OK: print "Card read UID: "+str(backData[0])+","+str(backData[1])+","+str(backData[2])+","+str(backData[3])+","+str(backData[4]) # Hier werden die Karten abgefragt if backData == karte1: urllib.urlretrieve('http://ip/set/Test?value=true') # ioBroker URL print "Status True gesetzt! - Karte 1" elif backData == karte2: print "Karte 2" else: print "wrong Card" time.sleep(5) print "wartezeit"
verstehe das einfach nicht.
Scanne eine "falsche karte" nach meinem verständnis müsste nun wrong card kommen und nach 5 sec wartezeit. das tut es aber nicht. es kommt immer wieder im millisekundentakt wrong card und das wartezeit erst mit strg c
-
selbst wenn ich es so mache kommt die wartezeit erst wenn ich das script mit strg c abbreche:
import MFRC522 import signal import time import urllib continue_reading = True MIFAREReader = MFRC522.MFRC522() # Karten konfigurieren karte1 = [1111111111] karte2 = [1111111111] def end_read(signal, frame): global continue_reading continue_reading = False print "Ctrl+C captured, ending read." MIFAREReader.GPIO_CLEEN() signal.signal(signal.SIGINT, end_read) # Script starten print "\x1b[2J" # Terminal leeren print "RFID Card Reader ioBroker Script" print "Zum Abbrechen des Skripts STRG-C druecken." while continue_reading: (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL) if status == MIFAREReader.MI_OK: print "Card detected" (status,backData) = MIFAREReader.MFRC522_Anticoll() if status == MIFAREReader.MI_OK: print "Card read UID: "+str(backData[0])+","+str(backData[1])+","+str(backData[2])+","+str(backData[3])+","+str(backData[4]) # Hier werden die Karten abgefragt if backData == karte1: urllib.urlretrieve('http://ip/set/Test?value=true') # ioBroker URL print "Status True gesetzt! - Karte 1" elif backData == karte2: print "Karte 2" else: print "wrong Card" time.sleep(5) print "wartezeit"
verstehe das einfach nicht.
Scanne eine "falsche karte" nach meinem verständnis müsste nun wrong card kommen und nach 5 sec wartezeit. das tut es aber nicht. es kommt immer wieder im millisekundentakt wrong card und das wartezeit erst mit strg c `
wie währe es wenn du dich mit python ein wenig auseinander setzt..
wiki Python_(Programmiersprache)
vor allem der Absatz
#Syntax
das
while continue_reading: (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL) if status == MIFAREReader.MI_OK: print "Card detected" (status,backData) = MIFAREReader.MFRC522_Anticoll() if status == MIFAREReader.MI_OK: print "Card read UID: "+str(backData[0])+","+str(backData[1])+","+str(backData[2])+","+str(backData[3])+","+str(backData[4]) # Hier werden die Karten abgefragt if backData == karte1: urllib.urlretrieve('http://ip/set/Test?value=true') # ioBroker URL print "Status True gesetzt! - Karte 1" elif backData == karte2: print "Karte 2" else: print "wrong Card" time.sleep(5) print "wartezeit"
ist was andereas als das
while continue_reading: (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL) if status == MIFAREReader.MI_OK: print "Card detected" (status,backData) = MIFAREReader.MFRC522_Anticoll() if status == MIFAREReader.MI_OK: print "Card read UID: "+str(backData[0])+","+str(backData[1])+","+str(backData[2])+","+str(backData[3])+","+str(backData[4]) # Hier werden die Karten abgefragt if backData == karte1: urllib.urlretrieve('http://ip/set/Test?value=true') # ioBroker URL print "Status True gesetzt! - Karte 1" elif backData == karte2: print "Karte 2" else: print "wrong Card" time.sleep(5) print "wartezeit"
aus die Einrückung kommt es an wann was ausgeführt wird
zumidest Grundinformationen habe ich erwartet