RFID Tags am RasPi überprüfen und ggf. Relais schließen
lima-city → Forum → Sonstiges → Technik und Elektronik
chip
code
datei
endlosschleife
entfernen
file
http
import
kabel
programmcode
programmiersprache
relais
schleife
serielle verbindung
shell
stecker
url
variable speichern
zeile
zugangskontrolle
-
Hallo zusammen,
vielleicht hat jemand von euch meinen etwas älteren Thread gelesen (RFID Board von Pollin an Raspberry Pi anschließen).
Ich habe das Problem mittlerweile erfolgreich gelöst, indem ich von der RS-232 Schnittstelle des RFID-Boards ein selbstgebasteltes Kabel (Cat.6 Kabel mit zwei drangelöteten Steckern) zum Pi gelegt habe, das ich dort mit einem Serial to USB Converter an den Pi angeschlossen habe.
Ich kann jetzt am Raspberry Pi unter "/dev/ttyUSB0" auf die serielle Schnittstelle zugreifen und diese z. B. mit dem Befehl
auslesen.cat /dev/ttyUSB0
Ich will nun Folgendes verwirklichen:
Ich habe mehrere RFID-Chips. Wenn ich einen davon an die Spule des RFID-Boards halte, soll ein Relais, das ich an den Pi angeschlossen habe, geschlossen werden.
Ich habe bereits ein Shell-Skript, das das Relais nach meinen Wünschen ansteuert. Nun bräuchte ich wahrscheinlich in irgendeiner Art eine Endlosschleife, die "/dev/ttyUSB0" überwacht und bei Erkennen des richtigen RFID-Tags das Shell-Skript ausführt.
Mit welcher Programmiersprache löse ich das am geschicktesten?
Wie kann ich den ausgelesenen Tag in einer Variable speichern, um ihn dann zu überprüfen?
Es wäre übrigens schön, wenn die verschiedenen zugelassenen Tags z. B. in einer Textdatei stehen könnten, damit man einfach welche hinzufügen/entfernen kann.
MfG biberiusmero -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
biberiusmero schrieb:
Vermutlich mit der, die du am besten kannst. Ansonsten ist Python in Verbindung mit pySerial einen Blick wert. Dort liest du die Datei mit 2 Zeilen Programmcode ein, öffnest die serielle Verbindung, liest in einer Schleife jeweils eine Zeile und schaust dann, ob diese Zeile so in der Datei vorkam …
Mit welcher Programmiersprache löse ich das am geschicktesten? -
Vielen Dank für deine Antwort,
ich hab das Ganze jetzt mal in Python realisiert, und es funktioniert nun so, wie ich mir das vorstelle.
Zusätzlich habe ich noch, um zu verhindern, dass das Shell-Skript zu oft aufgerufen wird, eine while-Schleife eingabaut.
import serial import os ser = serial.Serial('/dev/ttyUSB0') while True: tags = open('tags.txt', 'r').read() s = ser.readline().replace('\n', '') if s in tags: print 'Relais geschaltet...' os.system('./relais_schalten.sh') ser.timeout = 0.5 s = ser.readline() while s != '': s = ser.readline() ser.timeout = None
Außerdem habe ich ein Skript geschrieben, mit dem neue RFID-Chips eingespeichert werden können.
import serial ser = serial.Serial('/dev/ttyUSB0') ser.timeout = 15 file = open('tags.txt', 'r+') tags = file.read() new_tag = ser.readline().replace('\n', '') if not new_tag in tags: file.write(new_tag) print new_tag print 'Chip erfolgreich gespeichert!' elif new_tag == '': print 'Kein Chip erkannt!' else: print new_tag print 'Dieser Chip wurde bereits eingespeichert!'
MfG biberiusmero
Beitrag zuletzt geändert: 14.5.2015 16:42:36 von biberiusmero -
Hallo
für die Auswertung von NFC/RDIF Geräten eignet sich die libnfc für Linux.
Ich lese mithilfe dieser und eines Raspis MIFARE Karten für eine Zugangskontrolle.
Spitzei -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage