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



      1.png




      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

        device_tree_param=spi=on
        dtoverlay=spi-bcm2708

      • Als nächstes wird Python-dev und das Python SPI Modul mit folgenden Befehlen installiert:

      [list]
      • sudo apt-get install git python-dev
      • git clone https://github.com/lthiery/SPI-Py.git
      • cd SPI-Py
      • sudo python setup.py install
      • Dann aktivert man SPI indm man raspi-config eingibt und anschließend auf Interface Options>SPI aktivieren
      • Mit apt-get install mysql-server apache2 php7.0 php7.0-xml wird MySql, PHP 7 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 www-data:www-data /var/www/html eingeben
      • Jetzt noch sudo apt-get update && apt-get upgrade eingeben und nach abschluss des Updates den RaspberryPi rebooten
      • Unter dem Pfad „/var/www/html“, ist ein Skript, das man mit dem Befehl python stempeln-new.py ausführt.
      [/list]

      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
    • Hallo MrYoshii

      Ich wollte mir dieses Zeiterfassungs system nachbauen, bei mir geht aber ab dem 2. Schritt nichts mehr. Die config.txt konnte ich ändern, dan habe ich im Terminal den Befehl :"sudo apt-get install git python-dev –yes" eingegeben. Dann kommt die meldung : E: Paket python-dev-yes kann nicht gefunden werden. Was mache ich falsch?

      ;D
      Danke für die Hilfe
    • hallo MrYoshii

      Danke für die Hilfe!
      Ich dachte soo jetzt hab ichs :D

      bis ich beim nächsten Problem hangengeblieben bin:

      apt-get install mysql-server apache2 php5 im Terminal eingegeben, kommt folgende meldung:
      Reading package lists... Done
      Building dependency tree
      Reading state information... Done
      Package php5 is not available, but is referred to by another package.
      This may mean that the package is missing, has been obsoleted, or
      is only available from another source


      Ich fühle mich momentan ziemlich dumm :D

      Entschuldige die Störung
    • Danke dir, das habe ich gemacht, konnte den Ordner ohne Probleme verschieben wollte jetzt:

      sudo apt-get update && apt-get upgrade ausführen, bekomme aber immer die meldung :

      OK:1 raspbian.raspberrypi.org/raspbian stretch InRelease
      OK:2 archive.raspberrypi.org/debian stretch InRelease
      Paketlisten werden gelesen... Fertig
      E: Sperrdatei /var/lib/dpkg/lock konnte nicht geöffnet werden. - open (13: Keine Berechtigung)
      E: Sperren des Administrationsverzeichnisses (/var/lib/dpkg/) nicht möglich, sind Sie root?

      auf dem localhost sehe ich zwar immer noch die Appache seite.

      Irgendwann klapt das glaube ich schon :D
    • Kein Problem :P helfe hier gerne weiter :D

      schau du musst den /var/www/html Ordner komplett leeren. Und dann musst du einfach denn Inhalt aus dem html.zip entpacken hier erhälst du dann einen neuen html Ordner. Den Inhalt dieses Ordners kopierst du in dein Webroot. Dann sollte es funktionieren.
      Die Apache index.html kannst du ruhig löschen diese ist nur zum testen und trägt nicht zur Funktion des Apache2 Servers bei.

      Wenn du nicht weiter weißt kannst dich gerne wieder melden :D übrigens kannst du auch Screenshots posten dadurch kann Ich dir besser helfen.
      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