Hallo
Ich bin neu hier im Forum, mein Name ist Michael, ich bin 39 Jahre jung und komme aus der Oberpfalz.
Euer Forum hat mir schon viele Ideen gegeben, doch diesmal sitze ich auf dem Schlauch.
Zuerst zum gedachten Projekt: Ich würde gerne für Einsatzkräfte unseres Rettungsdienstes Bereitschaftsstunden protokollieren, mittels NFC-Chip.
Die Hardware steht und funktioniert, als NFC-Platine habe ich eine NXP elements14 (steht so drauf). Die Chips werden erkannt und ich kann damit auch schon ein bisschen was anfangen.
Eine Zeiterfassungs-Software wie http://www.small.li habe ich getestet, funktioniert auch, allerdings nicht über 24 Uhr hinweg. Deshalb dachte ich vielleicht kann ich das ja über Python und ein LOG versuchen.
Ich hab also mal versucht was aufzusetzen, was im Grunde auch schon funzt:
import nxppy
import time
import os, sys
import logging
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(40,GPIO.OUT)
GPIO.output(40,GPIO.LOW)
logging.basicConfig(
format='%(asctime)s %(message)s',
datefmt='%m/%d/%Y %I:%M:%S %p',
filename='/home/pi/example.log',
level=logging.INFO)
mifare = nxppy.Mifare()
os.system('clear')
# Print card UIDs as they are detected
print 'Bitte Chip anlegen:'
while True:
try:
uid = mifare.select()
GPIO.output(40,GPIO.HIGH)
time.sleep(0.2)
GPIO.output(40,GPIO.LOW)
time.sleep(0.2)
if uid <> '':
print ('Hallo, Deine Chipnummer:' + uid)
logging.info('Chipnummer:' + uid)
time.sleep(3)
except nxppy.SelectError:
# SelectError is raised if no card is in the field.
pass
time.sleep(0.1)
Alles anzeigen
Ich lege einen NFC-Chip auf, es piepst und die Chipnummer ist im Log, soweit so gut...
Jetzt die Frage; kann ich:
a) in mehrere LOG-Dateien schreiben (Chip-Nr. 123 in LOG-Datei 123, ChipNr. 456 in LOG-Datei 456) um es später leichter auszulesen?
Log-Einstellungen aus dem Python-Handbuch habe ich schon getestet, da bekomme ich immer Syntax-Fehler
b) im Code if uid = "123456": schreiben um den LOG-Text abzuändern?
if uid is '123456':
print ('Hallo Michael, Deine Chipnummer:' + uid)
logging.info('Michael:' + uid)
time.sleep(3)
if uid <> '123456':
print ('Hallo Fremder, Deine Chipnummer:' + uid)
logging.info('Fremder Chip:' + uid)
time.sleep(3)
Wenn ich ein zweites if unter den ersten Block setze überspringt es mir den ersten Block und führt den zweiten aus, ein else brachte mir einen Syntax-Error
Das alles ist wahrscheinlich etwas verwirrend geschrieben, ich hoffe man versteht mich.
Ich weiß selbst dass das nicht die Top-Lösung wäre, doch was anderes fällt mir nicht ein bzw. weiß ich nicht wie ich es umsetzen kann (SQL o.ä.), dafür reichen meine Kenntnisse nicht aus...
Eine Integration in FHEM habe ich auch schon versucht um vielleicht einen dummy mit den Chips zu steuern der dann geloggt wird, da scheitere ich allerdings an der Verbindung zu FHEM, die Anleitung in FHEM-Wiki bezieht sich auf andere Hardware und damit auch andere Befehle.
Vielleicht ist ja jemand unter Euch der ein ähnliches Projekt erstellt hat.
Vorab schon mal recht herzlichen Dank für Eure Gedanken.
Liebe Grüße
Michael