Wiki - eIntranet.net

Deutsch flag Čeština flag English flag Español flag Slovenčina flag Magyar flag Polski flag

Anwesenheit - Chip/Fingerabdruck

Modul Arbeitszeiterfassung - Chip/Fingerabdruckleser

1. Modulübersicht

1.1 Zweck des Moduls

Das Modul Arbeitszeiterfassung - Chip/Fingerabdruckleser (WorkAttendanceChips) dient zur automatisierten Erfassung der Arbeitszeit der Mitarbeiter mittels physischer Chipkarten (RFID/NFC), biometrischer Fingerabdruckleser oder Gesichtserkennung unter Verwendung künstlicher Intelligenz.

Das Modul eliminiert die Notwendigkeit der manuellen Eingabe von Ankunfts- und Abfahrtszeiten, erhöht die Genauigkeit der Erfassung und bietet Kontrollmechanismen gegen Missbrauch (z.B. Fotografie beim Einchecken, minimale Pausenlänge, automatischer Abschluss der Arbeitszeit).

1.2 Hauptfunktionen

  • Einrichtung von Chipkarten - Erfassung des Sicherheitscodes des RFID/NFC-Chips für jeden Mitarbeiter
  • Fingerabdruckleser - Biometrische Identifikation mittels Fingerabdrücken (optional)
  • Gesichtserkennung - KI-Gesichtserkennung mittels face-api.js (erfordert RasPi-Terminal mit Kamera)
  • RasPi-Zeiterfassungsterminal - Physisches Terminal zur Zeiterfassung vor Ort
  • IP-Beschränkung - Whitelist zugelassener IP-Adressen für Lesegeräte (Sicherheit)
  • Konfigurierbare Schaltflächen - Am Terminal verfügbare Zeiterfassungstypen (Arzt, Dienstreise usw.)
  • Automatischer Abschluss - Automatisches Beenden der Arbeitszeit (3 Modi)
  • Fotografie beim Einchecken - Sicherheitsfoto vom Terminal zur Erkennung von Kartenmissbrauch
  • Verhinderung manueller Änderungen - Strenger Chip-Modus mit Möglichkeit von Ausnahmen (Urlaub, Krankheit)
  • Minimale Pause - Erzwingung einer minimalen Pausenlänge
  • Dashboard-Schaltflächen - Virtuelles Kommen/Gehen direkt im System ohne physische Karte

1.3 Zielgruppe

Diese Dokumentation richtet sich an:

  • Systemadministratoren - Modulkonfiguration, Lesegeräteverwaltung, Sicherheitseinstellungen
  • Personalverantwortliche - Verwaltung von Benutzerrechten, Einstellung von Chipcodes, Kontrolle von Fotografien
  • IT-Administratoren - Installation von RasPi-Terminals, Netzwerkkonfiguration, Firmware-Aktualisierungen
  • Führungskräfte - Kontrolle der Anwesenheit, Genehmigung von Ausnahmen
Wichtig: Für den Zugriff auf die Moduleinstellungen muss der Benutzer entweder Administratorrechte haben (admin=1) oder im Feld AdminToModules_ser_arr mit dem Wert dochazka_cipy aufgeführt sein.

2. Einstellungen und Konfiguration

2.1 Moduleinstellungen

Pfad zu den Einstellungen: Einstellungen → Arbeitszeiterfassung - Chip/Fingerabdruckleser

Das Modul verwendet folgende Konfigurationsparameter, die in der Datenbanktabelle Company und User gespeichert sind:

Parameter der Tabelle Company

Parameter Typ Beschreibung Standardwert
wa_RasPi_Face boolean Gesichtserkennung aktivieren (erfordert RasPi mit Kamera) 0 (deaktiviert)
wa_RasPi_TakePhoto boolean Fotografien beim Einchecken vom Terminal aufnehmen 0 (deaktiviert)
wa_chip_allowed_ips_ser_arr array Zugelassene IP-Adressen der Lesegeräte (serialisiertes Array) ['all']
wa_chip_show_active boolean Status (Anwesenheit) anderer im Lesegerät anzeigen 0 (deaktiviert)
wa_chip_use_WDT_14 boolean Mittagspausen getrennt von Pausen erfassen ermöglichen 0 (deaktiviert)
wa_chip_buttons_on_dashboard boolean Schaltflächen Ankunft/Abfahrt im Hauptpanel anzeigen 0 (deaktiviert)
wa_chip_WritePause boolean Pause nach Rückkehr am selben Tag erfassen 0 (deaktiviert)
wa_chip_AutoCloseInLastDay boolean Warnung und Abschluss der Anwesenheit vom Vortag 0 (deaktiviert)
wa_chip_ChiporFaceDetect string Primärer Erkennungsmodus ('c' = Chip, 'f' = Gesicht) 'c' (Chip)

Parameter der Tabelle User

Parameter Typ Beschreibung Standardwert
wa_chip_code string Sicherheits-Hash-Code des Mitarbeiterchips NULL
wa_chip_last_inout enum Aktueller Status des Mitarbeiters ('in', 'out') 'out'
wa_chip_minimal_pause_min int Minimale Pausenlänge in Minuten NULL
wa_chip_last_poznamka string Letzte Bemerkung beim Einchecken NULL
wa_chip_AllowManualType_ser_arr array Zugelassene Anwesenheitstypen für manuelle Erfassung (serialisiertes Array) []
rights_workattendance enum Anwesenheitsrechte ('1' = nur Chip, '2' = auch manuelle Erfassung) '2'
FingerPrints_ser_arr array Gespeicherte Fingerabdrücke (serialisiertes Array) []

2.2 Benutzerrechte

Für den Zugriff auf die Moduleinstellungen muss eine der folgenden Bedingungen erfüllt sein:

  • Administratorrechte: $Logged_User->admin == 1
  • Modulverwalter: in_array('dochazka_cipy', $Logged_User->AdminToModules_ser_arr)
Sicherheitshinweis: Ohne diese Rechte wird der Zugriff auf das Modul durch Aufruf der Funktion DieUnauthorized() verweigert.

3. Benutzeroberfläche

3.1 Registerkartenübersicht

Die Benutzeroberfläche des Moduls ist in 5 Hauptregisterkarten unterteilt:

  1. Benutzerrechte - Einstellung von Chipcodes, Fingerabdrücken, Verhinderung manueller Änderungen
  2. Zugelassene IP-Adressen - Whitelist der Lesegeräte-IP-Adressen
  3. Zusätzlich zugelassene Schaltflächen - Konfiguration von Schaltflächen am Terminal
  4. Weitere Einstellungen - Allgemeine Moduleinstellungen
  5. Registrierte Lesegeräte - Übersicht der RasPi-Terminals
Hinweis: Die aktuell angezeigte Registerkarte wird in der Session-Variable $_SESSION['nastaveni_dochazka_cipy']['Show'] gespeichert.

3.2 Registerkarte: Benutzerrechte

Hauptregisterkarte für die Einstellung des Mitarbeiterzugriffs auf das Zeiterfassungssystem.

Benutzererkennung

Das System unterstützt 3 Methoden zur Mitarbeiteridentifikation:

Methode Beschreibung Anforderungen Status
Nach Chip (RFID/NFC) Standard-Chipkarte RFID/NFC-Lesegerät Immer aktiviert
Nach Gesicht KI-Gesichtserkennung mittels face-api.js RasPi-Terminal mit Kamera, wa_RasPi_Face=1 Optional
Nach Fingerabdruck Biometrischer Fingerabdruckleser RasPi mit Fingerabdruckleser, FingerPrintReader=1 Optional

Mitarbeitertabelle

Die Tabelle enthält folgende Spalten:

Spalte Beschreibung Aktion
ID Mitarbeiter-ID im System -
Nachname, Vorname Vollständiger Name mit Link zum Benutzerdetail Klicken Sie, um die Mitarbeiterdetails zu öffnen
Chipcode Sicherheits-Hash-Code des Chips
  • In das Textfeld eingeben
  • Änderung wird automatisch gespeichert (onChange)
  • Clipboard-Symbol kopiert die API-URL
Fingerabdruck Indikator, ob der Mitarbeiter gespeicherte Fingerabdrücke hat Zeigt 0/1 gemäß sizeofSafe($User->FingerPrints_ser_arr) an
Änderungen verhindern Kontrollkästchen zur Verhinderung manueller Anwesenheitsänderungen
  • Durch Ankreuzen wird rights_workattendance='1' gesetzt
  • Schaltfläche zum Zulassen von Ausnahmen wird angezeigt
Minimale Pausenlänge Anzahl der Minuten minimaler Pause Geben Sie eine Zahl ein (z.B. 30), die Änderung wird automatisch gespeichert
Aktionen Spezielle Aktionen für Mitarbeiter
  • Wenn Status "in", wird Schaltfläche Zurücksetzen (für Ankunft) angezeigt
  • Setzt Status auf "out" zurück

Schaltfläche: Manuell kann nur Anwesenheitstyp erfassen...

Diese Schaltfläche wird nur bei Mitarbeitern angezeigt, die Änderungen der Arbeitszeit verhindern aktiviert haben.

Funktion: Öffnet ein modales Fenster zur Auswahl der Anwesenheitstypen, die der Mitarbeiter trotz Verhinderung manueller Änderungen manuell erfassen kann.

Typische Verwendung:

  • Urlaub (Mitarbeiter kann Urlaub manuell erfassen)
  • Krankheit (Mitarbeiter kann Krankheit manuell erfassen)
  • Homeoffice (Mitarbeiter kann Homeoffice manuell erfassen)
Tipp: Dieser Mechanismus ermöglicht eine strenge Kontrolle der Anwesenheit (nur Chip), bietet aber gleichzeitig Flexibilität für spezielle Abwesenheitstypen.

3.3 Registerkarte: Zugelassene IP-Adressen

Diese Registerkarte dient zur Einstellung einer Sicherheits-Whitelist von IP-Adressen, von denen aus sich Lesegeräte beim System melden dürfen.

Haupt-Kontrollkästchen

Lesegerätezugriff nur von den unten aufgeführten IP-Adressen zulassen

  • Aktiviert: System prüft die IP-Adresse der Anfrage gegen die Whitelist
  • Deaktiviert: Zugriff ist von allen IP-Adressen erlaubt (wa_chip_allowed_ips_ser_arr = ['all'])

Dynamisches IP-Adressenfeld

Nach Aktivierung des Haupt-Kontrollkästchens wird ein Feld zur Eingabe von IP-Adressen angezeigt:

  • Jede IP-Adresse hat ein eigenes Textfeld
  • Nach dem Ausfüllen wird automatisch ein weiteres leeres Feld angezeigt
  • Änderungen werden automatisch gespeichert (AJAX)
  • Es sind immer mindestens 2 leere Felder zum Hinzufügen weiterer IPs sichtbar

Beispielkonfiguration:

192.168.1.100
192.168.1.101
10.0.0.50
Wichtig: Wenn Sie die IP-Whitelist aktivieren und keine IP-Adresse eingeben, können sich die Lesegeräte nicht verbinden! Stellen Sie sicher, dass Sie die richtigen IP-Adressen vor der Aktivierung eingegeben haben.

3.4 Registerkarte: Zusätzlich zugelassene Schaltflächen

Konfiguration zusätzlicher Schaltflächen am Zeiterfassungsterminal für spezielle Anwesenheitstypen (Arzt, Dienstreise usw.).

Schaltfläche: Schaltfläche hinzufügen

Öffnet ein modales Fenster zum Hinzufügen einer neuen Schaltfläche:

  1. Wählen Sie Anwesenheitstyp aus der Dropdown-Liste (es werden nur Typen mit chip_buttons_available=1 geladen)
  2. Klicken Sie auf Speichern
  3. Die Schaltfläche erscheint am Terminal und in der Tabelle

Schaltflächentabelle

Zeigt alle konfigurierten Schaltflächen mit folgenden Spalten an:

Spalte Beschreibung Optionen
Schaltfläche Name des Anwesenheitstyps Z.B. "Arzt", "Dienstreise"
Automatischer Abschluss zur Anzahl der Arbeitsstunden pro Tag System berechnet das Ende gemäß täglichem Arbeitspensum
  • Radio-Button
  • Speichert autoclose_user_hour_day=1
  • Beispiel: Pensum 8h, Ankunft 7:00 → auto Ende 15:00
Automatischer Abschluss zur angegebenen Zeit Feste Abschlusszeit
  • Radio-Button + Zeitfeld (HH:MM)
  • Speichert autoclose_user_hour_day=0
  • Speichert autoclose_at_time (z.B. "15:30:00")
  • Beispiel: Immer um 16:00 beenden
Fest vorgegebene Länge in Min. Konkrete Minutenanzahl
  • Radio-Button + Zahlenfeld
  • Speichert autoclose_user_hour_day=2
  • Speichert autoclose_at_length (Minuten)
  • Beispiel: Arzt = 60 Min.
Aktionen Schaltfläche zum Entfernen
  • Schaltfläche Schaltfläche entfernen
  • Setzt delete=1
  • Schaltfläche verschwindet vom Terminal

Modi für automatischen Abschluss - detailliert

1. Zur Anzahl der Arbeitsstunden pro Tag

Wie es funktioniert:

  1. System lädt das Tagespensum des Mitarbeiters (z.B. 8 Stunden)
  2. Beim Einchecken der Ankunft wird die Zeit aufgezeichnet (z.B. 7:00)
  3. Automatisch berechnet das Ende: 7:00 + 8h = 15:00
  4. Wenn der Mitarbeiter die Abfahrt bis Mitternacht nicht erfasst, schließt das System automatisch um 15:00 ab

Anwendungsbeispiel: Dienstreise - Mitarbeiter geht auf Reise, System beendet die Zeit automatisch gemäß seinem Pensum.

2. Zur angegebenen Zeit

Wie es funktioniert:

  1. Administrator legt eine feste Abschlusszeit fest (z.B. 15:30)
  2. Beim Einchecken der Ankunft wird die Zeit aufgezeichnet (z.B. 7:00)
  3. Wenn der Mitarbeiter die Abfahrt bis Mitternacht nicht erfasst, schließt das System automatisch um 15:30 ab

Anwendungsbeispiel: Konferenz - alle Teilnehmer haben ein festes Ende um 16:00.

3. Fest vorgegebene Länge

Wie es funktioniert:

  1. Administrator legt die Minutenanzahl fest (z.B. 60)
  2. Beim Einchecken der Ankunft wird die Zeit aufgezeichnet (z.B. 9:00)
  3. System schließt automatisch nach 60 Minuten ab: 9:00 + 60 Min. = 10:00

Anwendungsbeispiel: Arzt - Mitarbeiter geht zum Arzt, System schließt nach 60 Minuten ab.

Hinweis: Wenn bis Mitternacht kein Ende erfasst wird, wendet das System den automatischen Abschluss gemäß dem gewählten Modus an. Die Bedingung ist in der Funktion zum Abschluss der Anwesenheit implementiert.

3.5 Registerkarte: Weitere Einstellungen

Allgemeine Einstellungen des Moduls, die das Verhalten des gesamten Systems beeinflussen.

Einstellung Beschreibung Standardwert
Status (Anwesenheit) anderer im Lesegerät anzeigen Am Terminal wird eine Liste aller Mitarbeiter mit ihrem aktuellen Status (anwesend/abwesend) angezeigt.

Datenbankspalte: wa_chip_show_active
Deaktiviert (0)
Mittagspausen getrennt von Pausen erfassen ermöglichen Mitarbeiter kann am Terminal zwischen allgemeiner Pause und Mittagspause unterscheiden (spezieller Pausentyp).

Datenbankspalte: wa_chip_use_WDT_14
Anwesenheitstyp: WDT_14 (Mittagspause)
Deaktiviert (0)
Schaltflächen Ankunft/Abfahrt im Hauptpanel nach Anmeldung anzeigen Jeder Mitarbeiter sieht nach der Anmeldung im Dashboard Schaltflächen zum Einchecken von Ankunft/Abfahrt ohne physische Karte.

Datenbankspalte: wa_chip_buttons_on_dashboard
Verwendung: Geeignet für Mitarbeiter, die von zu Hause arbeiten oder keinen Zugang zum Terminal haben
Deaktiviert (0)
Pause nach Rückkehr am selben Tag erfassen Wenn der Mitarbeiter die Abfahrt erfasst und dann wieder die Ankunft am selben Tag, erfasst das System automatisch die Zeit dazwischen als Pause.

Datenbankspalte: wa_chip_WritePause
Beispiel: Abfahrt 12:00, Ankunft 12:30 → Pause 30 Min.
Deaktiviert (0)
Fotografie beim Erfassen der Anwesenheit vom Terminal Bei jedem Einchecken vom RasPi-Terminal wird eine Fotografie des Mitarbeiters aufgenommen. Dient zur Erkennung von Kartenmissbrauch (Überprüfung, dass die Karte vom tatsächlichen Besitzer verwendet wird).

Datenbankspalte: wa_RasPi_TakePhoto
Anforderungen: RasPi-Terminal mit Kamera
Deaktiviert (0)
Warnung und Abschluss der Anwesenheit vom Vortag Wenn der Mitarbeiter gestern vergessen hat, die Abfahrt zu erfassen, und heute eine neue Ankunft erfasst, zeigt das System eine Warnung an und verlangt die Ergänzung der gestrigen Abfahrt mit dem Vorgesetzten.

Datenbankspalte: wa_chip_AutoCloseInLastDay
Zweck: Prävention von "hängenden" Einträgen in der Anwesenheit
Deaktiviert (0)
Empfohlene Einstellung zur Erhöhung der Sicherheit:
  • Aktivieren Sie Fotografie beim Erfassen - erkennt Kartenmissbrauch
  • Aktivieren Sie Warnung und Abschluss vom Vortag - verhindert Fehler in der Anwesenheit
  • Legen Sie Minimale Pausenlänge fest (z.B. 30 Min.) - erzwingt Mittagspause

3.6 Registerkarte: Registrierte Lesegeräte

Übersicht aller im System registrierten RasPi-Terminals.

Lesegerätetabelle

Spalte Beschreibung
ID Eindeutige Kennung des Lesegeräts in der Datenbank (idRasPi)
Anschaffungsdatum Installations-/Registrierungsdatum des Lesegeräts (BuyDate)
Installierte FW-Version Auf RasPi installierte Firmware-Version (Version)
Letzte Überprüfung Datum und Uhrzeit der letzten Kommunikation mit dem Lesegerät (LastCheck)
Information: Lesegeräte registrieren sich automatisch beim ersten Kontakt mit dem Server. Lesegerätedaten werden aus der Datenbanktabelle RasPi gemäß Company_idCompany geladen.

Lesegerätediagnose

Anhand der Spalte Letzte Überprüfung können Sie Probleme diagnostizieren:

  • Grün: Lesegerät hat sich in der letzten Stunde gemeldet - alles in Ordnung
  • Gelb: Lesegerät hat sich seit mehr als einer Stunde nicht gemeldet - mögliches Netzwerkproblem
  • Rot: Lesegerät hat sich seit mehr als einem Tag nicht gemeldet - schwerwiegendes Problem (ausgeschaltet, Netzwerk, Hardware)
Problemlösung:
  • Überprüfen Sie die Netzwerkverbindung des RasPi
  • Stellen Sie sicher, dass die IP-Adresse des RasPi in der Whitelist ist (Registerkarte "Zugelassene IP-Adressen")
  • Überprüfen Sie, ob RasPi eingeschaltet ist und läuft
  • Versuchen Sie, RasPi neu zu starten

4. Grundlegende Operationen

4.1 Einrichtung des Chipcodes für einen Mitarbeiter

Ziel: Einem Mitarbeiter einen Sicherheits-Chipcode zuweisen, damit er die Anwesenheit erfassen kann.

  1. Öffnen Sie Einstellungen → Arbeitszeiterfassung - Chip/Fingerabdruckleser
  2. Wechseln Sie zur Registerkarte Benutzerrechte
  3. Finden Sie in der Mitarbeitertabelle den gewünschten Mitarbeiter (Sie können die Suchfunktion verwenden)
  4. Geben Sie in der Spalte Chipcode den Sicherheits-Hash-Code ein (empfohlen mindestens 16 Zeichen, zufällig)
  5. Das System speichert die Änderung automatisch beim Verlassen des Feldes (onChange-Event)
  6. Optional: Klicken Sie auf das Clipboard-Symbol (fa-clipboard), um die API-URL zum Testen zu kopieren
Beispiel-API-URL:
https://ihre-domain.de/?w=wa_chip_inout&idUser=123&hash=abc123xyz789def456

4.2 Verhinderung manueller Anwesenheitsänderungen

Ziel: Einem Mitarbeiter einen strengen Modus einstellen, in dem er die Anwesenheit nur per Chip erfassen kann.

  1. Finden Sie in der Registerkarte Benutzerrechte den Mitarbeiter
  2. Aktivieren Sie in der Mitarbeiterzeile das Kontrollkästchen Änderungen der Arbeitszeit in der Anwesenheit verhindern
  3. Das System setzt rights_workattendance='1'
  4. Eine grüne Schaltfläche Manuell kann nur Anwesenheitstyp erfassen... wird angezeigt
  5. Klicken Sie auf die Schaltfläche
  6. Aktivieren Sie im modalen Fenster die zugelassenen Typen (z.B. Urlaub, Krankheit, Homeoffice)
  7. Klicken Sie auf Speichern

Ergebnis: Der Mitarbeiter kann die Anwesenheit nicht mehr manuell ändern, kann aber ausgewählte Abwesenheitstypen manuell erfassen.

Technische Details: Zugelassene Typen werden im serialisierten Array wa_chip_AllowManualType_ser_arr gespeichert. Bei einem Versuch der manuellen Erfassung prüft das System, ob der Typ zugelassen ist.

4.3 Einstellung der minimalen Pause

Ziel: Eine minimale Pausenlänge erzwingen (z.B. Mittagspause mindestens 30 Minuten).

  1. Finden Sie in der Registerkarte Benutzerrechte den Mitarbeiter
  2. Geben Sie in der Spalte Minimale Pausenlänge (Minuten) die Minutenanzahl ein (z.B. 30)
  3. Das System speichert die Änderung automatisch

Wie es funktioniert:

  • Mitarbeiter erfasst eine Pause (z.B. 12:00 - 12:10 = 10 Minuten)
  • System prüft wa_chip_minimal_pause_min (z.B. 30)
  • Wenn die Pause kürzer ist, verlängert es sie automatisch auf das Minimum (10 Min. → 30 Min.)
  • Im Anwesenheitseintrag erscheint eine Pause von 30 Minuten
Achtung: Die automatische Verlängerung der Pause kann Mitarbeiter überraschen. Wir empfehlen, die Mitarbeiter über die Einstellung der minimalen Pause zu informieren.

4.4 Zurücksetzen des Ankunft/Abfahrt-Status

Ziel: Den "hängenden" Status eines Mitarbeiters zurücksetzen, der vergessen hat, die Abfahrt zu erfassen.

  1. Finden Sie in der Registerkarte Benutzerrechte den Mitarbeiter
  2. Wenn der Mitarbeiter im Status "in" (anwesend) ist, wird die Schaltfläche Zurücksetzen (für Ankunft) angezeigt
  3. Klicken Sie auf die Schaltfläche
  4. Das System ändert den Status auf "out" (abwesend)
  5. Der Mitarbeiter kann jetzt wieder die Ankunft erfassen

Wann verwenden:

  • Mitarbeiter hat gestern vergessen, die Abfahrt zu erfassen
  • System "hängt" im Status "in" und erlaubt keine neue Ankunft
  • Sie müssen den Mitarbeiter schnell freischalten
Hinweis: Das Zurücksetzen ändert nur den Status wa_chip_last_inout='out'. Es löst nicht den fehlenden Eintrag in der Anwesenheit - diesen müssen Sie manuell im Modul Anwesenheit ergänzen.

5. Erweiterte Funktionen

5.1 Hinzufügen einer Schaltfläche zum Lesegerät

Ziel: Einen speziellen Anwesenheitstyp (z.B. Arzt, Dienstreise) als Schaltfläche zum RasPi-Terminal hinzufügen.

  1. Wechseln Sie zur Registerkarte Zusätzlich zugelassene Schaltflächen am Chip-Lesegerät
  2. Klicken Sie auf die grüne Schaltfläche Schaltfläche hinzufügen
  3. Wählen Sie im modalen Fenster Anwesenheitstyp aus der Dropdown-Liste
  4. Klicken Sie auf Speichern
  5. Die Schaltfläche wird in der Tabelle angezeigt
  6. Legen Sie den Modus für automatischen Abschluss fest (siehe unten)

Einstellung des automatischen Abschlusses

Nach dem Hinzufügen der Schaltfläche wählen Sie einen von 3 Modi:

A) Zur Anzahl der Arbeitsstunden pro Tag
  • Aktivieren Sie den Radio-Button in der Spalte Automatischer Abschluss zur Anzahl der Arbeitsstunden pro Tag
  • System berechnet das Ende gemäß dem Tagespensum des Mitarbeiters
  • Beispiel: Dienstreise - Mitarbeiter hat 8h Pensum, fährt um 9:00 ab → auto Ende 17:00
B) Zur angegebenen Zeit
  • Aktivieren Sie den Radio-Button in der Spalte Automatischer Abschluss zur angegebenen Zeit
  • Geben Sie im Zeitfeld darunter die Zeit ein (z.B. 15:30)
  • Beispiel: Schulung - alle haben ein festes Ende um 16:00
C) Fest vorgegebene Länge
  • Aktivieren Sie den Radio-Button in der Spalte Fest vorgegebene Länge in Min.
  • Geben Sie im Zahlenfeld darunter die Minutenanzahl ein (z.B. 60)
  • Beispiel: Arzt - automatisch nach 60 Minuten beenden
Empfehlung:
  • Dienstreise → Zur Anzahl der Arbeitsstunden
  • Schulung/Konferenz → Zur angegebenen Zeit
  • Arzt/Behörde → Fest vorgegebene Länge (60-120 Min.)

5.2 Entfernen einer Schaltfläche

  1. Finden Sie in der Schaltflächentabelle die Zeile mit der Schaltfläche, die Sie entfernen möchten
  2. Klicken Sie auf die rote Schaltfläche Schaltfläche entfernen
  3. Die Schaltfläche wird aus der Datenbank entfernt und verschwindet vom Terminal

5.3 IP-Adressenbeschränkung

Ziel: Zugriff auf die API nur von vertrauenswürdigen IP-Adressen (Lesegeräten) zulassen.

  1. Wechseln Sie zur Registerkarte Zugelassene IP-Adressen, von denen sich das Lesegerät melden kann
  2. Aktivieren Sie Lesegerätezugriff nur von den unten aufgeführten IP-Adressen zulassen
  3. Geben Sie im ersten leeren Feld die IP-Adresse des Lesegeräts ein (z.B. 192.168.1.100)
  4. Nach der Eingabe wird automatisch ein weiteres leeres Feld angezeigt
  5. Wiederholen Sie dies für alle Lesegeräte
  6. Änderungen werden automatisch gespeichert

Sicherheitsprüfung im Code:

// System prüft USER_IP gegen wa_chip_allowed_ips_ser_arr
if (!in_array(USER_IP, $Company->wa_chip_allowed_ips_ser_arr)
    && $Company->wa_chip_allowed_ips_ser_arr[0] != 'all') {
    DieUnauthorized();
}
Kritischer Hinweis: Wenn Sie die IP-Whitelist aktivieren und keine IP-Adressen der Lesegeräte eingeben, werden alle Lesegeräte blockiert! Geben Sie zuerst die IP-Adressen ein, dann aktivieren Sie die Whitelist.

5.4 Aktivierung der Gesichtserkennung

Ziel: Mitarbeitern ermöglichen, die Anwesenheit per Gesichtserkennung ohne Chip zu erfassen.

Anforderungen:

  • RasPi-Terminal mit Kamera
  • Fotografien der Mitarbeiter im System (mindestens 1 Foto pro Mitarbeiter)
  • JavaScript-Bibliothek face-api.js (Bestandteil des Systems)

Aktivierungsvorgang:

  1. Wechseln Sie zur Registerkarte Benutzerrechte
  2. Aktivieren Sie in der Tabellenüberschrift Nach Gesicht (unser Lesegerät erforderlich)
  3. Das System setzt wa_RasPi_Face=1
  4. Am RasPi-Terminal wird die Kamera und Gesichtserkennung aktiviert

Wie es funktioniert:

  1. Mitarbeiter tritt vor die RasPi-Kamera
  2. System lädt alle gespeicherten Mitarbeiterfotografien
  3. Face-api.js erkennt das Gesicht im Live-Video
  4. Vergleicht das erkannte Gesicht mit gespeicherten Fotografien (Schwellenwert 0,4)
  5. Bei Übereinstimmung wird die Anwesenheit automatisch erfasst
Technische Details:
  • Bibliothek: face-api.js v0.22.2
  • Modell: SsdMobilenetv1 (schnell, genau)
  • Schwellenwert: 0,4 (40% Übereinstimmung = Erkennung)
  • Fotografien: Werden geladen von /UserFaceRecognitionShow/{hash}-{photoID}.png

5.5 Anzeige der Status anderer

Ziel: Am Terminal anzeigen, wer anwesend und wer abwesend ist.

  1. Wechseln Sie zur Registerkarte Weitere Einstellungen
  2. Aktivieren Sie Status (Anwesenheit) anderer im Lesegerät anzeigen
  3. Das System setzt wa_chip_show_active=1

Ergebnis: Am RasPi-Terminal wird eine Liste aller Mitarbeiter angezeigt:

  • Grün: Anwesend (wa_chip_last_inout='in')
  • Rot: Abwesend (wa_chip_last_inout='out')
Vorteile:
  • Mitarbeiter sehen, wer bei der Arbeit ist
  • Schnelle Orientierung für Besucher
  • Transparenz der Anwesenheit

5.6 Schaltflächen im Dashboard

Ziel: Mitarbeitern ermöglichen, die Anwesenheit direkt über die Weboberfläche ohne physische Karte zu erfassen.

  1. Wechseln Sie zur Registerkarte Weitere Einstellungen
  2. Aktivieren Sie Schaltflächen Ankunft/Abfahrt im Hauptpanel nach Anmeldung anzeigen
  3. Das System setzt wa_chip_buttons_on_dashboard=1

Ergebnis: Nach der Anmeldung sieht jeder Mitarbeiter im Dashboard:

  • Grüne Schaltfläche "Ankunft" (wenn Status 'out')
  • Rote Schaltfläche "Abfahrt" (wenn Status 'in')

Verwendung:

  • Homeoffice - Mitarbeiter hat keinen Zugang zum Lesegerät
  • Mobile Mitarbeiter - Einchecken vom Handy/Tablet
  • Verwaltung - alternative Erfassungsmethode
Sicherheitshinweis: Schaltflächen im Dashboard überprüfen nicht die physische Anwesenheit. Wir empfehlen, sie mit Fotografien beim Einchecken zu kombinieren oder nur für vertrauenswürdige Mitarbeiter zu verwenden.

5.7 Fotografie beim Erfassen

Ziel: Sicherheitsfotografie bei jedem Einchecken zur Erkennung von Kartenmissbrauch aufnehmen.

  1. Wechseln Sie zur Registerkarte Weitere Einstellungen
  2. Aktivieren Sie Fotografie beim Erfassen der Anwesenheit vom Terminal
  3. Das System setzt wa_RasPi_TakePhoto=1

Wie es funktioniert:

  1. Mitarbeiter legt den Chip an das Lesegerät
  2. RasPi-Kamera nimmt eine Fotografie auf
  3. Fotografie wird auf den Server hochgeladen
  4. Wird in der Tabelle Files mit Verknüpfung zum Anwesenheitseintrag gespeichert
  5. Administrator kann die Fotografien im Modul Anwesenheit überprüfen

Missbrauchserkennung:

  • Auf der Fotografie ist eine andere Person als der Kartenbesitzer → Missbrauch
  • Fotografie ist verschwommen/leer → Versuch, das System zu umgehen
  • Wiederholte Fotografien derselben Person mit fremder Karte → regelmäßiger Missbrauch
Empfehlung: Aktivieren Sie die Fotografie für maximale Sicherheit. Informieren Sie die Mitarbeiter, dass die Fotografien nur zur Kontrolle dienen und nicht öffentlich zugänglich sind.

6. Integration

6.1 Verbundene Module

Modul Beziehung Beschreibung
Anwesenheit Datenerfassung Automatische Erfassung der Ankunfts-/Abfahrtszeiten in die Tabelle Workattendance.
Wenn wa_chip_WritePause=1 aktiviert ist, wird auch die Pausenlänge erfasst.
Benutzer Verknüpfung zu Mitarbeitern Laden von Benutzerdaten (Klasse cUser):
- Chipcode (wa_chip_code)
- Fingerabdrücke (FingerPrints_ser_arr)
- Anwesenheitsrechte (rights_workattendance)
- Minimale Pause (wa_chip_minimal_pause_min)
RasPi-Terminals Physisches Lesegerät Verwaltung von RasPi-Geräten (Klasse cRasPi):
- Firmware-Version (Version)
- Letzte Überprüfung (LastCheck)
- Fingerabdruckleser (FingerPrintReader)
- API-Endpunkt (GetUrl())
Anwesenheitstypen Schaltflächen am Lesegerät Laden von Anwesenheitstypen (cWorkattendance_days_type):
- Typname (day_name_cs)
- Verfügbarkeit am Lesegerät (chip_buttons_available)
- Verknüpfung über Tabelle Workattendance_chip_buttons
Dateien Fotografien beim Erfassen Speicherung von Fotografien vom Terminal:
- Tabelle Files
- Verknüpfung zum Anwesenheitseintrag
- Zugriff über Modul Anwesenheit

6.2 Datenflüsse

Fluss 1: Einchecken per Chip vom RasPi-Terminal

1. Mitarbeiter legt Chip an das RasPi-Lesegerät
   ↓
2. RasPi liest den Chipcode vom RFID/NFC
   ↓
3. RasPi ruft API-Endpunkt auf:
   GET /?w=wa_chip_inout&idUser=123&hash=abc123xyz
   ↓
4. inc/wa_chip_inout.php verarbeitet die Anfrage:
   - Überprüft Hash gegen User.wa_chip_code
   - Überprüft IP-Adresse gegen wa_chip_allowed_ips_ser_arr
   - Prüft Status wa_chip_last_inout
   ↓
5. Eintrag in Tabelle Workattendance:
   - Ankunft: Erstellt neuen Eintrag mit time_start
   - Abfahrt: Ergänzt time_end im bestehenden Eintrag
   ↓
6. Aktualisierung User.wa_chip_last_inout:
   - 'in' → 'out' oder 'out' → 'in'
   ↓
7. Wenn wa_RasPi_TakePhoto=1:
   - RasPi nimmt Fotografie auf
   - Lädt auf Server hoch
   - Speichert in Tabelle Files
   ↓
8. Antwort an RasPi-Terminal:
   - HTML-Seite mit Bestätigung
   - Anzeige der Erfassungszeit
   - Liste der Anwesenden (wenn wa_chip_show_active=1)

Fluss 2: Einchecken vom Dashboard (Weboberfläche)

1. Mitarbeiter klickt auf Schaltfläche "Ankunft" im Dashboard
   ↓
2. JavaScript ruft AJAX auf:
   $.get('/?w=wa_chip_inout&idUser='+idUser+'&hash='+hash)
   ↓
3. inc/wa_chip_inout.php verarbeitet wie bei RasPi
   ↓
4. Eintrag in Workattendance
   ↓
5. Aktualisierung wa_chip_last_inout
   ↓
6. AJAX-Antwort:
   - Dashboard wird aktualisiert
   - Neuer Status wird angezeigt ("Abfahrt" statt "Ankunft")

Fluss 3: Gesichtserkennung (Face Recognition)

1. Mitarbeiter tritt vor die RasPi-Kamera
   ↓
2. RasPi streamt Video zum Server
   ↓
3. JavaScript face-api.js:
   - Lädt alle Mitarbeiterfotografien
   - Erstellt FaceMatcher mit gespeicherten Gesichtern
   - Erkennt Gesicht im Live-Video
   - Vergleicht mit gespeicherten Gesichtern
   ↓
4. Bei Übereinstimmung (threshold > 0,4):
   window.location.replace('?w=wa_chip_inout&FaceDetection='+hash)
   ↓
5. Server verarbeitet FaceDetection-Parameter:
   - Findet idUser anhand des Hash
   - Lädt wa_chip_code
   - Erfasst Anwesenheit
   ↓
6. Gleicher Fluss wie Fluss 1 (Schritt 5-8)

6.3 Abhängigkeiten

Komponente Abhängigkeit Erforderlich
RasPi-Terminal Physisches Gerät mit RFID/NFC-Lesegerät Ja
Anwesenheitsmodul Muss für Datenerfassung aktiv sein Ja
Benutzer Mitarbeiter müssen Anwesenheitsrechte haben Ja
RasPi mit Kamera Für Gesichtserkennung und Fotografien Optional
Fingerabdruckleser Für biometrische Identifikation Optional
face-api.js Bibliothek für Gesichtserkennung Optional
Netzwerkverbindung RasPi muss Zugriff auf Server haben Ja

7. API-Endpunkt

7.1 Haupt-Endpunkt

URL-Format:

https://ihre-domain.de/?w=wa_chip_inout&idUser={ID}&hash={HASH}

7.2 Parameter

Parameter Typ Erforderlich Beschreibung
w string Ja Endpunkt-Kennung
Wert: wa_chip_inout
idUser int Ja Mitarbeiter-ID im System
Beispiel: 123
hash string Ja Sicherheits-Hash-Code des Chips
Entspricht: User.wa_chip_code
Beispiel: abc123xyz789def456
idWorkattendance_chip_buttons int Nein ID der Schaltfläche am Lesegerät (spezieller Anwesenheitstyp)
Beispiel: 5 (Arzt)
FaceDetection string Nein Hash des erkannten Gesichts
Format: {userHash}-{photoID}
Beispiel: abc123-1
FingerID int Nein ID des erkannten Fingerabdrucks
Beispiel: 7
wa_chip_action string Nein Spezifische Aktion (z.B. manuelle Auswahl einer Bemerkung)
Werte: note, pause

7.3 Sicherheitsprüfungen

Der API-Endpunkt führt folgende Sicherheitsprüfungen durch:

  1. Hash-Überprüfung:
    if ($User->wa_chip_code != $_GET['hash']) {
        DieUnauthorized();
    }
  2. IP-Adressen-Kontrolle:
    if (!in_array(USER_IP, $Company->wa_chip_allowed_ips_ser_arr)
        && $Company->wa_chip_allowed_ips_ser_arr[0] != 'all') {
        DieUnauthorized();
    }
  3. Kontrolle der Benutzerexistenz:
    $User = new cUser();
    $User->load($_GET['idUser']);
    if ($User->idUser == 0) {
        DieUnauthorized();
    }
  4. Kontrolle des aktiven Kontos:
    if ($User->active != 1 || $User->deleted != 0) {
        DieUnauthorized();
    }

7.4 API-Antwort

Die API gibt eine HTML-Seite mit folgenden Informationen zurück:

  • Uhr und Datum: Aktuelle Zeit und Datum (JavaScript-Uhr)
  • Erfassungsbestätigung: "Ankunft erfasst" / "Abfahrt erfasst"
  • Erfassungszeit: Genaue Zeit des Eincheckens
  • Liste der Anwesenden: Wenn wa_chip_show_active=1
  • Fotografie: Wenn wa_RasPi_TakePhoto=1, wird eine Vorschau der Fotografie angezeigt

7.5 Aufrufbeispiele

Beispiel 1: Normale Ankunft

GET https://firma.de/?w=wa_chip_inout&idUser=45&hash=x7k9mN2pQ5rT8vW1

Beispiel 2: Abfahrt zum Arzt (Schaltfläche ID=3)

GET https://firma.de/?w=wa_chip_inout&idUser=45&hash=x7k9mN2pQ5rT8vW1&idWorkattendance_chip_buttons=3

Beispiel 3: Gesichtserkennung

GET https://firma.de/?w=wa_chip_inout&FaceDetection=abc123def456-1

Beispiel 4: Fingerabdruck

GET https://firma.de/?w=wa_chip_inout&idUser=45&hash=x7k9mN2pQ5rT8vW1&FingerID=7

8. RasPi-Terminal

8.1 Gerätebeschreibung

Das RasPi (Raspberry Pi) Terminal ist ein kompakter Computer in Kreditkartengröße, der als physisches Zeiterfassungslesegerät dient.

Hardware-Komponenten

Komponente Beschreibung Erforderlich
Raspberry Pi Hauptplatine (empfohlen RPi 4 oder neuer) Ja
RFID/NFC-Lesegerät Modul zum Lesen von Chipkarten (z.B. RC522) Ja
Display Touchscreen-Display zur Anzeige von Schaltflächen und Status Ja
Kamera Pi Camera für Fotografie und Gesichtserkennung Optional
Fingerabdruckleser Biometrischer Fingerabdruckleser (z.B. R307) Optional
Netzwerkverbindung Ethernet oder WiFi für Kommunikation mit dem Server Ja

8.2 Terminalfunktionen

Grundfunktionen

  • Chiplesen: Automatische Erkennung von RFID/NFC-Karten
  • Zeitanzeige: Aktuelle Uhrzeit und Datum
  • Anwesenheitstyp-Schaltflächen: Ankunft, Abfahrt, Pause, Mittagspause + konfigurierbare Schaltflächen
  • Erfassungsbestätigung: Visuelle und akustische Signalisierung der erfolgreichen Erfassung
  • Liste der Anwesenden: Anzeige, wer bei der Arbeit ist (wenn aktiviert)

Erweiterte Funktionen (optional)

  • Gesichtserkennung: KI-Erkennung mittels Kamera und face-api.js
  • Fingerabdrucklesen: Biometrische Identifikation mittels Fingerabdrücken
  • Fotografie: Aufnahme einer Sicherheitsfotografie bei jedem Einchecken
  • Videostream: Live-Video von der Kamera für Gesichtserkennung

8.3 Terminalverwaltung

Registrierung eines neuen Terminals

  1. Verbinden Sie RasPi physisch mit dem Netzwerk (Ethernet oder WiFi)
  2. Führen Sie das Installationsskript auf RasPi aus
  3. RasPi registriert sich automatisch auf dem Server:
POST https://firma.de/RestAPI/RasPi.php
{
    "action": "register",
    "hash": "E5tlu8Jg44ZwwlBQgSbCE3lU7RSRvMXa"
}
  1. In der Administration wird ein neues Terminal in der Registerkarte Registrierte Lesegeräte angezeigt

Überprüfung des Terminalstatus

Das Terminal meldet sich regelmäßig beim Server (alle 5 Minuten):

GET https://firma.de/RestAPI/RasPiCheck.php?hash={hash}

Server aktualisiert die Spalte LastCheck in der Tabelle RasPi.

Firmware-Aktualisierung

  1. Melden Sie sich per SSH am RasPi an
  2. Führen Sie den Befehl aus: sudo /home/pi/UpdateFromeIntranetServer
  3. Skript lädt die neueste Version von: https://firma.de/Apps/RasPiUpdate/
  4. Startet Dienste automatisch neu
  5. Version wird in der Datenbank aktualisiert (Spalte Version)

8.4 Terminal-API-URL

Jedes RasPi-Terminal hat eine eindeutige API-URL:

https://firma.de/RasPi/{HASH}/RFID/WorkAttenDance

Wobei {HASH} die Sicherheitskennung des Terminals ist (z.B. E5tlu8Jg44ZwwlBQgSbCE3lU7RSRvMXa).

Verwendung:

  • RasPi liest Chip mit Code 12345
  • RasPi ruft auf: https://firma.de/?w=wa_chip_inout&idUser=45&hash=12345
  • Server überprüft und erfasst Anwesenheit
  • RasPi zeigt Bestätigung an

8.5 Problemdiagnose

Problem: Terminal meldet sich nicht

Symptome: In der Registerkarte "Registrierte Lesegeräte" steht eine alte Zeit in der Spalte "Letzte Überprüfung"

Lösung:

  1. Überprüfen Sie die Netzwerkverbindung des RasPi (ping server)
  2. Stellen Sie sicher, dass die IP-Adresse des RasPi in der Whitelist ist
  3. Überprüfen Sie die Logs auf RasPi: /var/log/eintranet/
  4. Starten Sie RasPi neu: sudo reboot

Problem: Lesegerät liest keine Chips

Symptome: Anlegen des Chips löst keine Reaktion aus

Lösung:

  1. Überprüfen Sie die physische Verbindung des Lesegeräts zum RasPi
  2. Stellen Sie sicher, dass der Lesegerätedienst läuft: sudo systemctl status rfid
  3. Starten Sie den Dienst neu: sudo systemctl restart rfid
  4. Überprüfen Sie, dass der Chip kompatibel ist (RFID/NFC 13,56 MHz)

Problem: Gesichtserkennung funktioniert nicht

Symptome: Kamera zeigt kein Video oder erkennt keine Gesichter

Lösung:

  1. Stellen Sie sicher, dass in den Einstellungen aktiviert ist: wa_RasPi_Face=1
  2. Überprüfen Sie die Kameraverbindung zum RasPi
  3. Stellen Sie sicher, dass Mitarbeiter hochgeladene Fotografien im System haben
  4. Überprüfen Sie die JavaScript-Konsole im Browser auf Fehler
  5. Versuchen Sie, den Schwellenwert zu senken: ändern Sie minConfidence = 0.3 (statt 0,4)

9. Tipps und Tricks

9.1 Kopieren der API-URL

Tipp: Klicken Sie in der Registerkarte "Benutzerrechte" auf das Clipboard-Symbol (fa-clipboard) neben dem Chipcode. Die URL wird in die Zwischenablage kopiert.

Verwendung: Sie können die URL im Browser öffnen, um das Einchecken manuell ohne physisches Lesegerät zu testen.

9.2 Testen ohne RasPi-Terminal

Vorgehensweise:

  1. Kopieren Sie die API-URL des Mitarbeiters
  2. Öffnen Sie die URL im Browser
  3. Das System erfasst die Anwesenheit wie vom RasPi
Achtung: Wenn Sie die IP-Whitelist aktiviert haben, müssen Sie Ihre IP-Adresse hinzufügen, sonst wird der Zugriff verweigert.

9.3 Massenweises Zurücksetzen "hängender" Status

Situation: Mehrere Mitarbeiter haben vergessen, die Abfahrt zu erfassen, und das System ist im Status "in".

Lösung per SQL-Abfrage:

UPDATE User
SET wa_chip_last_inout='out'
WHERE Company_idCompany=123
AND wa_chip_last_inout='in';

Hinweis: Dies setzt nur die Status zurück, löst nicht die fehlenden Einträge in der Anwesenheit.

9.4 Minimale Pause für alle einstellen

Situation: Sie möchten eine minimale Pause von 30 Minuten für alle Mitarbeiter einstellen.

Lösung per SQL-Abfrage:

UPDATE User
SET wa_chip_minimal_pause_min=30
WHERE Company_idCompany=123
AND active=1
AND deleted=0;

9.5 Exportieren von Chipcodes

Vorgehensweise:

  1. Verwenden Sie in der Registerkarte "Benutzerrechte" den DataTables-Export
  2. Klicken Sie auf die Schaltfläche "Excel" oder "CSV"
  3. Eine Datei mit allen Chipcodes wird heruntergeladen

9.6 Automatische Schaltfläche für Homeoffice

Empfehlung: Fügen Sie eine Schaltfläche "Homeoffice" mit automatischem Abschluss zur Anzahl der Arbeitsstunden hinzu.

Vorteil: Mitarbeiter erfasst Homeoffice, System schließt automatisch gemäß seinem Pensum ab.

9.7 Kombination von Chip und Gesicht

Möglichkeit: Aktivieren Sie Gesichtserkennung und Chip gleichzeitig.

Vorteil:

  • Mitarbeiter kann Chip verwenden (schnell)
  • Oder Gesicht (wenn er die Karte vergessen hat)
  • System unterstützt beides

9.8 Fotografien als Beweis

Tipp: Wenn Sie Streitigkeiten über die Anwesenheit haben, verwenden Sie die Fotografien vom Terminal als Beweis.

Zugriff:

  1. Modul Anwesenheit
  2. Eintragsdetail
  3. Fotografie wird angezeigt, die beim Einchecken aufgenommen wurde

9.9 Mobile App als Alternative

Information: Das System unterstützt auch eine mobile App zum Einchecken der Anwesenheit.

Vorteil:

  • Mitarbeiter braucht keinen Chip
  • Einchecken vom Telefon von überall
  • GPS-Standort beim Erfassen (optional)

9.10 Regelmäßiges Löschen alter Fotografien

Tipp: Fotografien beanspruchen Speicherplatz auf dem Server. Richten Sie automatisches Löschen von Fotografien ein, die älter als 3 Monate sind.

Cron-Job:

DELETE FROM Files
WHERE table_name='Workattendance'
AND created < DATE_SUB(NOW(), INTERVAL 3 MONTH);

10. Problemlösung

10.1 Chip funktioniert nicht

Symptome: Anlegen des Chips an das Lesegerät löst keine Reaktion aus oder es wird ein Fehler angezeigt.

Mögliche Ursachen und Lösungen:

Ursache Lösung
Fehlerhafter oder leerer Chipcode Überprüfen Sie, dass in der Registerkarte "Benutzerrechte" der Chipcode ausgefüllt ist.
Er muss genau mit dem Code im Chip übereinstimmen.
IP-Adresse des Lesegeräts nicht in der Whitelist Wechseln Sie zur Registerkarte "Zugelassene IP-Adressen".
Fügen Sie die IP-Adresse des RasPi-Terminals hinzu.
Oder deaktivieren Sie die IP-Whitelist (nicht aktiviert).
Lesegerät liest Chip nicht Überprüfen Sie die physische Verbindung des Lesegeräts zum RasPi.
Starten Sie den RFID-Dienst neu: sudo systemctl restart rfid
Inkompatibler Chip Stellen Sie sicher, dass der Chip RFID/NFC 13,56 MHz ist (z.B. Mifare).
Das System unterstützt keine 125 kHz-Chips.
Netzwerkproblem Überprüfen Sie die RasPi-Netzwerkverbindung.
Ping zum Server: ping ihre-domain.de

Test: Kopieren Sie die API-URL (Clipboard-Symbol) und öffnen Sie sie im Browser. Wenn es funktioniert, liegt das Problem bei RasPi/Lesegerät. Wenn es nicht funktioniert, liegt das Problem in den Systemeinstellungen.

10.2 Mitarbeiter kann nicht manuell erfassen

Symptome: Bei Versuch der manuellen Erfassung im Modul Anwesenheit wird der Fehler "Sie haben keine Berechtigung" angezeigt.

Mögliche Ursachen und Lösungen:

Ursache Lösung
"Änderungen verhindern" aktiviert Deaktivieren Sie in der Registerkarte "Benutzerrechte" das Kontrollkästchen Änderungen der Arbeitszeit verhindern.
Oder klicken Sie auf Manuell kann nur Anwesenheitstyp erfassen... und erlauben Sie bestimmte Typen.
Anwesenheitstyp nicht zugelassen Klicken Sie auf Manuell kann nur Anwesenheitstyp erfassen...
Aktivieren Sie den gewünschten Typ (z.B. Urlaub, Krankheit).
Klicken Sie auf Speichern.
Keine Anwesenheitsrechte Überprüfen Sie in der Benutzerverwaltung, dass der Mitarbeiter rights_workattendance eingestellt hat.
Muss '1' oder '2' sein (nicht NULL oder 0).

10.3 Pause wird automatisch verlängert

Symptome: Mitarbeiter erfasst eine Pause von 15 Minuten, aber im System erscheinen 30 Minuten.

Ursache: Es ist eine minimale Pausenlänge eingestellt.

Lösung:

  1. Finden Sie in der Registerkarte "Benutzerrechte" den Mitarbeiter
  2. Löschen Sie in der Spalte Minimale Pausenlänge (Minuten) den Wert oder senken Sie ihn (z.B. von 30 auf 15)
  3. Das System speichert automatisch

Hinweis: Die Pausenverlängerung ist eine beabsichtigte Funktion, kein Fehler. Sie dient zur Erzwingung der Mittagspause.

10.4 Fotografien werden nicht aufgenommen

Symptome: Im Modul Anwesenheit fehlen bei den Einträgen Fotografien, obwohl die Funktion aktiviert ist.

Mögliche Ursachen und Lösungen:

Ursache Lösung
Nicht in den Einstellungen aktiviert Aktivieren Sie in der Registerkarte "Weitere Einstellungen" Fotografie beim Erfassen der Anwesenheit vom Terminal.
Überprüfen Sie, dass wa_RasPi_TakePhoto=1.
RasPi hat keine Kamera Stellen Sie sicher, dass eine Pi Camera physisch am RasPi angeschlossen ist.
Überprüfen Sie die Kameraverbindung.
Führen Sie Kameratest aus: raspistill -o test.jpg
Kameradienst läuft nicht Überprüfen Sie Status: sudo systemctl status camera
Neu starten: sudo systemctl restart camera
Fehler beim Hochladen auf Server Überprüfen Sie RasPi-Logs: /var/log/eintranet/camera.log
Überprüfen Sie Netzwerkverbindung und Schreibberechtigungen auf dem Server.
Einchecken vom Dashboard Fotografien werden nur beim Einchecken vom RasPi-Terminal aufgenommen.
Schaltflächen im Dashboard nehmen keine Fotografien auf (haben keine Kamera).

10.5 Terminal meldet sich nicht

Symptome: In der Registerkarte "Registrierte Lesegeräte" steht in der Spalte "Letzte Überprüfung" ein altes Datum/Uhrzeit (mehr als eine Stunde).

Mögliche Ursachen und Lösungen:

Ursache Lösung
RasPi ist ausgeschaltet Überprüfen Sie, dass RasPi an die Stromversorgung angeschlossen ist und die LED leuchtet.
Versuchen Sie einen physischen Neustart (Stromversorgung trennen und wieder anschließen).
Netzwerkproblem Überprüfen Sie Ethernet-Kabel oder WiFi-Verbindung.
Ping zum Server vom RasPi: ping ihre-domain.de
Überprüfen Sie Firewall und Router.
IP-Adresse nicht in der Whitelist Fügen Sie in der Registerkarte "Zugelassene IP-Adressen" die IP-Adresse des RasPi hinzu.
Überprüfen Sie, dass sich die IP-Adresse des RasPi nicht geändert hat (DHCP).
Wir empfehlen, eine statische IP einzustellen.
Check-Dienst wurde nicht gestartet SSH zum RasPi.
Überprüfen Sie Status: sudo systemctl status eintranet-check
Neu starten: sudo systemctl restart eintranet-check
Fehler in Konfigurationsdatei Überprüfen Sie Konfiguration: /etc/eintranet/config.json
Stellen Sie die Richtigkeit der Server-URL und des Hash sicher.

10.6 Gesichtserkennung funktioniert nicht

Symptome: Kamera zeigt Video, aber System erkennt keinen Mitarbeiter.

Mögliche Ursachen und Lösungen:

Ursache Lösung
Nicht in den Einstellungen aktiviert Aktivieren Sie in der Registerkarte "Benutzerrechte" Nach Gesicht (unser Lesegerät erforderlich).
Überprüfen Sie, dass wa_RasPi_Face=1.
Fehlende Mitarbeiterfotografien Überprüfen Sie in der Benutzerverwaltung, dass Mitarbeiter hochgeladene Fotografien haben.
Mindestens 1 Foto pro Mitarbeiter.
Fotografien müssen frontal, gut beleuchtet, ohne Brille/Mütze sein.
Schlechte Lichtverhältnisse Sorgen Sie für ausreichende Beleuchtung vor dem Lesegerät.
Vermeiden Sie Gegenlicht und dunkle Bereiche.
Ideal ist gleichmäßiges Tageslicht.
Zu hoher Schwellenwert Senken Sie in der Datei inc/wa_chip_inout.php minConfidence:
let minConfidence = 0.3 (statt 0,4)
Achtung: Niedrigerer Schwellenwert = mehr Falscherkennungen.
JavaScript-Fehler Öffnen Sie die JavaScript-Konsole im Browser (F12).
Überprüfen Sie Fehlermeldungen.
Versuchen Sie einen anderen Browser (empfohlen Chrome).
Face-api.js wurde nicht geladen Überprüfen Sie, dass die Datei existiert:
/_components/face-api.js-0.22.2/dist/face-api.min.js
Überprüfen Sie Netzwerkverbindung (API lädt Modelle von CDN).

10.7 Schaltflächen im Dashboard sind nicht sichtbar

Symptome: Nach Anmeldung im Dashboard fehlen die Schaltflächen Ankunft/Abfahrt.

Mögliche Ursachen und Lösungen:

Ursache Lösung
Nicht in den Einstellungen aktiviert Aktivieren Sie in der Registerkarte "Weitere Einstellungen" Schaltflächen Ankunft/Abfahrt im Hauptpanel anzeigen.
Überprüfen Sie, dass wa_chip_buttons_on_dashboard=1.
Browser-Cache Aktualisieren Sie die Seite mit gelöschtem Cache: Strg + F5 (Windows) oder Cmd + Shift + R (Mac).
Oder löschen Sie Cookies und Cache in den Browsereinstellungen.
Kein ausgefüllter Chipcode Überprüfen Sie in der Registerkarte "Benutzerrechte", dass der Mitarbeiter einen ausgefüllten Chipcode hat.
Schaltflächen werden nur Benutzern mit Chipcode angezeigt.
JavaScript-Fehler Öffnen Sie die JavaScript-Konsole (F12).
Überprüfen Sie Fehlermeldungen.
Versuchen Sie einen anderen Browser.

10.8 Automatischer Abschluss funktioniert nicht

Symptome: Mitarbeiter erfasst speziellen Typ (z.B. Arzt), aber Anwesenheit wird nicht automatisch abgeschlossen.

Mögliche Ursachen und Lösungen:

Ursache Lösung
Modus nicht eingestellt Überprüfen Sie in der Registerkarte "Zusätzlich zugelassene Schaltflächen" die Schaltfläche.
Einer der 3 Radio-Buttons muss aktiviert sein (zu Stunden, Zeit oder Länge).
Wenn nicht, aktivieren Sie und legen Sie den Wert fest.
Mitarbeiter hat Abfahrt manuell erfasst Automatischer Abschluss wird nur angewendet, wenn Mitarbeiter die Abfahrt bis Mitternacht NICHT erfasst hat.
Wenn er manuell erfasst hat, wird die Automatik nicht verwendet.
Cron-Job läuft nicht Automatischer Abschluss wird von Cron-Job durchgeführt (z.B. um 00:01).
Überprüfen Sie, dass er läuft: crontab -l
Suchen Sie nach Zeile mit wa_chip_autoclose.php (oder ähnlich).
Fehlerhafte Zeiteinstellung Überprüfen Sie beim Modus "Zur angegebenen Zeit" das Zeitformat: HH:MM
Muss gültige Zeit sein (z.B. 15:30, nicht 25:00).

10.9 Minimale Pause wird nicht angewendet

Symptome: Mitarbeiter hat minimale Pause von 30 Min. eingestellt, aber System akzeptiert auch kürzere Pausen.

Mögliche Ursachen und Lösungen:

Ursache Lösung
Wert nicht ausgefüllt Überprüfen Sie in der Registerkarte "Benutzerrechte" die Spalte Minimale Pausenlänge.
Muss numerischer Wert sein (z.B. 30), nicht leeres Feld.
Manuelle Anwesenheitserfassung Minimale Pause wird nur beim Einchecken vom Terminal angewendet.
Bei manueller Erfassung im Modul Anwesenheit wird die Kontrolle nicht durchgeführt.
Logik nicht implementiert Überprüfen Sie, dass der Code in inc/wa_chip_inout.php die Kontrolle der minimalen Pause enthält.
Suchen Sie nach Zeile mit wa_chip_minimal_pause_min.

10.10 IP-Whitelist blockiert legitimen Zugriff

Symptome: Lesegerät funktioniert nicht, obwohl es korrekt konfiguriert ist. Im Log ist der Fehler "Unauthorized".

Mögliche Ursachen und Lösungen:

Ursache Lösung
IP-Adresse nicht in der Liste Fügen Sie in der Registerkarte "Zugelassene IP-Adressen" die IP-Adresse des Lesegeräts hinzu.
Ermitteln Sie die tatsächliche IP-Adresse des RasPi: hostname -I
Dynamische IP-Adresse (DHCP) IP-Adresse des RasPi könnte sich nach Neustart geändert haben.
Wir empfehlen, eine statische IP-Adresse in den Router-Einstellungen oder am RasPi einzustellen.
NAT/Proxy-Server Wenn RasPi hinter NAT/Proxy ist, sieht der Server eine andere IP.
Überprüfen Sie, welche IP der Server sieht: echo USER_IP im Log.
Fügen Sie diese IP zur Whitelist hinzu.
IP-Adressformat Überprüfen Sie korrektes Format: 192.168.1.100
Nicht: 192.168.1.100:80 oder http://192.168.1.100
Schnelldiagnose IP-Problem:
  1. Deaktivieren Sie vorübergehend die IP-Whitelist (Kontrollkästchen deaktivieren)
  2. Versuchen Sie, vom Lesegerät einzuchecken
  3. Wenn es funktioniert → Problem liegt bei der IP-Whitelist
  4. Überprüfen Sie Server-Logs, welche IP er sieht
  5. Fügen Sie die korrekte IP zur Whitelist hinzu
  6. Aktivieren Sie die Whitelist wieder