Zeiterfassung via RaspberryPi

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Zeiterfassung via RaspberryPi

      Zeiterfassung via RaspberryPi



      Materialliste


      • RaspberyPi 3
      • Mifare RC 522
      • RFID Chip/Karte
      • Small-Time


      Technisches Konzept


      -Prinzip, Arbeitsweise, Arbeitsbereiche
      • Schnelle Anwesenheitskontrolle, Funktioniert mit einem RFID Reader/Chip,Zeiterfassung in der Firma
      - Leistungsdaten, Toleranzen
      • Einfache Bedienung der Software
      • Leicht zugreifbar
      • Einfache Verkabelung
      • Einfaches Stecksystem




      Small-Time


      Vorteile von Small-Time:
      • Mehrere Benutzer
      • Soll – und Ist – Arbeitsanzeige
      • Arbeitszeit Individuell einstellbar
      • Feiertage können gesetzt werden
      • Absenzen z.B. Krankheit
      • Kurzer täglicher Arbeitsbeschreib
      • Monatsrapport als PDF
      Nachteile von Small-Time
      • Die Minuten werden in Dezimal angezeigt, eine Umstellung ist nicht möglich
      • Kein arbeiten in Schichten über die Nacht möglich, Zeit wird pro Tag abgerechnet


      Installation


      Vorraussezungen:
      • RaspberryPi 3 mit Raspbian
      • RFID-Reader, wie auf dem Bild anschließen








      Installation
      • Terminal öffnen, „sudo passwd“ eingeben und das passwort ändern
      • Im Terminal „sudo nano /boot/config.txt“ eingeben und am Ende der Datei einfügen

      [list]
      • device_tree_param=spi=on
      • dtoverlay=spi-bcm2708
      [/list]
      • Als nächstes wird Python-dev und das Python SPI Modul mit folgenden Befehlen installiert:


      • Dann aktivert man SPI indm man „raspi-config“ eingibt und anschließend auf Interface Options>SPI aktivieren
      • Mit „apt-get install mysql-server apache2 php5“ wird MySql, PHP 5 und apache2, gleichzeitig instaliert.
      • Jetzt muss noch der fertige Ordner, der sich unter „\Gruppe-K\Projekte\Zeiterfassung\Backup“ befindet, mit dem Befehl „mv html/var/www“ in den Pfad verschoben werden.
      • Da der Ordner keine Rechte besitzt, muss man noch „chown- -r /var/www/“´ eingeben
      • Jetzt noch „sudo apt-get update && apt-get upgrade“ eingeben und RaspberryPi rebooten
      • Unter dem Pfad „/var/www/html“, ist ein Skript, das man mit dem Befehl „python stempeln-new.py“ ausführt.


      Automatisieren


      Den Befhel „nano /home/pi/.bashrc“ eingeben und dann die folgenden Zeilen am Ende der Datei anhängen:
      „./start.sh
      sudo python /var/www/html/stempeln_new.py“


      Webinterface


      Um auf die Website zuzugreifen gibt man einfach folgende URL ein: „localhost/“ bzw. die IP Adresse vom Raspberry Pi.


      Um den Webserver zu restarten: „sudo /etc/init.d/apache2 restart“


      Anlegen von Mitarbeitern etc. ist selbsterklärend


      Standard Login für den Admin: admin 1234



      SourceCode von Stempeln.py


      Quellcode: Stempeln.py

      1. #/usr/bin/env python
      2. # -*- coding: utf8 -*-
      3. import RPi.GPIO as GPIO
      4. import MFRC522
      5. import signal
      6. import time
      7. import os, sys
      8. import urllib2, time
      9. terminal = 'http://localhost/terminal.php?rfid='
      10. continue_reading = True
      11. # Capture SIGINT for cleanup when the script is aborted
      12. def end_read(signal,frame):
      13. global continue_reading
      14. print "Ctrl+C captured, ending read."
      15. continue_reading = False
      16. GPIO.cleanup()
      17. # Hook the SIGINT
      18. signal.signal(signal.SIGINT, end_read)
      19. # Hook the SIGINT
      20. signal.signal(signal.SIGINT, end_read)
      21. mifare = MFRC522.MFRC522()
      22. os.system('clear')
      23. print 'ready to read:'
      24. while continue_reading:
      25. # Scan for cards
      26. (status,TagType) = mifare.MFRC522_Request(mifare.PICC_REQIDL)
      27. (status,uid) = mifare.MFRC522_Anticoll()
      28. # If a card is found
      29. if status == mifare.MI_OK:
      30. print "Card detected"
      31. time.sleep(0.1)
      32. # If we have the UID, continue
      33. if status == mifare.MI_OK:
      34. # Print UID
      35. print "Card read UID: "+str(uid[0])+","+str(uid[1])+","+str(uid[2])+","+str(uid[3])
      36. uid_str = ''.join(str(e) for e in uid)
      37. print terminal+uid_str
      38. if uid_str <> '':
      39. print '-> verbinde mit Server .......'
      40. print ''
      41. try:
      42. info = urllib2.urlopen(terminal + uid_str).read()
      43. info = info.replace('Zeit fehlt!', '\033[1;31mZeit fehlt!\033[1;32m')
      44. print '\033[1;32m' + info + '\033[1;m'
      45. time.sleep(3)
      46. except:
      47. print ('\033[1;31m' + 'Stempel - Fehler!' + '\033[1;m')
      48. time.sleep(1)
      49. pass
      50. else:
      51. print ('\033[1;31m' + 'System- Fehler!' + '\033[1;m')
      52. time.sleep(1)
      53. os.system('clear')
      54. print 'ready to read:'
      55. time.sleep(0.1)
      Alles anzeigen
      Grüße

      MrYoshii

      My Steam Profile (from SteamDB)

      • Worth: $2099 ($814 with sales)
      • Games owned: 130
      • Games not played: 18 (14%)
      • Hours on record: 3,786.8h
    • Danke dir für deine schnelle Antwort.

      Habe den Server installiert und bekomme auch die Oberfläche im Browser angezeigt.
      Allerdings kann ich keine Daten speichern.

      Wenn ich einen neuen Benutzer anlege sag er mir alles wäre gespeichert.
      Wenn ich die Seite aktualisiere sind alle Daten wieder weg.

      Mittlerweile glaube ich es gibt ein Problem mit den Schreibrechten.
      Wenn ich händisch in den hinterlegeten Daten einen Benutzer anlege wird dieser auch angezeigt.
      Ich kann diesen aber wieder nur ausserhalb der Oberfläche bearbeiten.

      Wenn ich stempeln.py ausführe liest er die Karte sagt mir aber es wären keine Daten vorhanden und ich müsste die Settings einstellen.
      Jetzt habe ich allerdings keine Ahnung welche Settings oder wo genau das Problem liegt.

      Ich benutze übrigens Stetch mit PHP7.
    • Kein Problem dafür sind wir ja hier :D

      Versuch mal die Schreibrechte für das /var/www/ verzeichniss anzupassen.
      chown -R www-data:www-data /var/www/

      www-data ist der Standart apache2 user.


      Die UID auf der NFC-Card muss mit der UID einen "Mitarbeiter" übereinstimmen.
      Grüße

      MrYoshii

      My Steam Profile (from SteamDB)

      • Worth: $2099 ($814 with sales)
      • Games owned: 130
      • Games not played: 18 (14%)
      • Hours on record: 3,786.8h