Modul Arbeitszeiterfassung - Chip/Fingerabdruckleser
Inhalt
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
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)
DieUnauthorized() verweigert.
3. Benutzeroberfläche
3.1 Registerkartenübersicht
Die Benutzeroberfläche des Moduls ist in 5 Hauptregisterkarten unterteilt:
- Benutzerrechte - Einstellung von Chipcodes, Fingerabdrücken, Verhinderung manueller Änderungen
- Zugelassene IP-Adressen - Whitelist der Lesegeräte-IP-Adressen
- Zusätzlich zugelassene Schaltflächen - Konfiguration von Schaltflächen am Terminal
- Weitere Einstellungen - Allgemeine Moduleinstellungen
- Registrierte Lesegeräte - Übersicht der RasPi-Terminals
$_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 |
|
| 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 |
|
| 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 |
|
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)
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
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:
- Wählen Sie Anwesenheitstyp aus der Dropdown-Liste (es werden nur Typen mit
chip_buttons_available=1geladen) - Klicken Sie auf Speichern
- 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 |
|
| Automatischer Abschluss zur angegebenen Zeit | Feste Abschlusszeit |
|
| Fest vorgegebene Länge in Min. | Konkrete Minutenanzahl |
|
| Aktionen | Schaltfläche zum Entfernen |
|
Modi für automatischen Abschluss - detailliert
1. Zur Anzahl der Arbeitsstunden pro Tag
Wie es funktioniert:
- System lädt das Tagespensum des Mitarbeiters (z.B. 8 Stunden)
- Beim Einchecken der Ankunft wird die Zeit aufgezeichnet (z.B. 7:00)
- Automatisch berechnet das Ende: 7:00 + 8h = 15:00
- 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:
- Administrator legt eine feste Abschlusszeit fest (z.B. 15:30)
- Beim Einchecken der Ankunft wird die Zeit aufgezeichnet (z.B. 7:00)
- 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:
- Administrator legt die Minutenanzahl fest (z.B. 60)
- Beim Einchecken der Ankunft wird die Zeit aufgezeichnet (z.B. 9:00)
- 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.
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_14Anwesenheitstyp: 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_dashboardVerwendung: 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_WritePauseBeispiel: 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_TakePhotoAnforderungen: 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_AutoCloseInLastDayZweck: Prävention von "hängenden" Einträgen in der Anwesenheit |
Deaktiviert (0) |
- 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) |
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)
- Ü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.
- Öffnen Sie Einstellungen → Arbeitszeiterfassung - Chip/Fingerabdruckleser
- Wechseln Sie zur Registerkarte Benutzerrechte
- Finden Sie in der Mitarbeitertabelle den gewünschten Mitarbeiter (Sie können die Suchfunktion verwenden)
- Geben Sie in der Spalte Chipcode den Sicherheits-Hash-Code ein (empfohlen mindestens 16 Zeichen, zufällig)
- Das System speichert die Änderung automatisch beim Verlassen des Feldes (onChange-Event)
- Optional: Klicken Sie auf das Clipboard-Symbol (fa-clipboard), um die API-URL zum Testen zu kopieren
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.
- Finden Sie in der Registerkarte Benutzerrechte den Mitarbeiter
- Aktivieren Sie in der Mitarbeiterzeile das Kontrollkästchen Änderungen der Arbeitszeit in der Anwesenheit verhindern
- Das System setzt
rights_workattendance='1' - Eine grüne Schaltfläche Manuell kann nur Anwesenheitstyp erfassen... wird angezeigt
- Klicken Sie auf die Schaltfläche
- Aktivieren Sie im modalen Fenster die zugelassenen Typen (z.B. Urlaub, Krankheit, Homeoffice)
- Klicken Sie auf Speichern
Ergebnis: Der Mitarbeiter kann die Anwesenheit nicht mehr manuell ändern, kann aber ausgewählte Abwesenheitstypen manuell erfassen.
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).
- Finden Sie in der Registerkarte Benutzerrechte den Mitarbeiter
- Geben Sie in der Spalte Minimale Pausenlänge (Minuten) die Minutenanzahl ein (z.B. 30)
- 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
4.4 Zurücksetzen des Ankunft/Abfahrt-Status
Ziel: Den "hängenden" Status eines Mitarbeiters zurücksetzen, der vergessen hat, die Abfahrt zu erfassen.
- Finden Sie in der Registerkarte Benutzerrechte den Mitarbeiter
- Wenn der Mitarbeiter im Status "in" (anwesend) ist, wird die Schaltfläche Zurücksetzen (für Ankunft) angezeigt
- Klicken Sie auf die Schaltfläche
- Das System ändert den Status auf "out" (abwesend)
- 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
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.
- Wechseln Sie zur Registerkarte Zusätzlich zugelassene Schaltflächen am Chip-Lesegerät
- Klicken Sie auf die grüne Schaltfläche Schaltfläche hinzufügen
- Wählen Sie im modalen Fenster Anwesenheitstyp aus der Dropdown-Liste
- Klicken Sie auf Speichern
- Die Schaltfläche wird in der Tabelle angezeigt
- 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
- 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
- Finden Sie in der Schaltflächentabelle die Zeile mit der Schaltfläche, die Sie entfernen möchten
- Klicken Sie auf die rote Schaltfläche Schaltfläche entfernen
- 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.
- Wechseln Sie zur Registerkarte Zugelassene IP-Adressen, von denen sich das Lesegerät melden kann
- Aktivieren Sie Lesegerätezugriff nur von den unten aufgeführten IP-Adressen zulassen
- Geben Sie im ersten leeren Feld die IP-Adresse des Lesegeräts ein (z.B. 192.168.1.100)
- Nach der Eingabe wird automatisch ein weiteres leeres Feld angezeigt
- Wiederholen Sie dies für alle Lesegeräte
- Ä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();
}
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:
- Wechseln Sie zur Registerkarte Benutzerrechte
- Aktivieren Sie in der Tabellenüberschrift Nach Gesicht (unser Lesegerät erforderlich)
- Das System setzt
wa_RasPi_Face=1 - Am RasPi-Terminal wird die Kamera und Gesichtserkennung aktiviert
Wie es funktioniert:
- Mitarbeiter tritt vor die RasPi-Kamera
- System lädt alle gespeicherten Mitarbeiterfotografien
- Face-api.js erkennt das Gesicht im Live-Video
- Vergleicht das erkannte Gesicht mit gespeicherten Fotografien (Schwellenwert 0,4)
- Bei Übereinstimmung wird die Anwesenheit automatisch erfasst
- 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.
- Wechseln Sie zur Registerkarte Weitere Einstellungen
- Aktivieren Sie Status (Anwesenheit) anderer im Lesegerät anzeigen
- 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')
- 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.
- Wechseln Sie zur Registerkarte Weitere Einstellungen
- Aktivieren Sie Schaltflächen Ankunft/Abfahrt im Hauptpanel nach Anmeldung anzeigen
- 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
5.7 Fotografie beim Erfassen
Ziel: Sicherheitsfotografie bei jedem Einchecken zur Erkennung von Kartenmissbrauch aufnehmen.
- Wechseln Sie zur Registerkarte Weitere Einstellungen
- Aktivieren Sie Fotografie beim Erfassen der Anwesenheit vom Terminal
- Das System setzt
wa_RasPi_TakePhoto=1
Wie es funktioniert:
- Mitarbeiter legt den Chip an das Lesegerät
- RasPi-Kamera nimmt eine Fotografie auf
- Fotografie wird auf den Server hochgeladen
- Wird in der Tabelle
Filesmit Verknüpfung zum Anwesenheitseintrag gespeichert - 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
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_codeBeispiel: 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:
- Hash-Überprüfung:
if ($User->wa_chip_code != $_GET['hash']) { DieUnauthorized(); } - 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(); } - Kontrolle der Benutzerexistenz:
$User = new cUser(); $User->load($_GET['idUser']); if ($User->idUser == 0) { DieUnauthorized(); } - 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
- Verbinden Sie RasPi physisch mit dem Netzwerk (Ethernet oder WiFi)
- Führen Sie das Installationsskript auf RasPi aus
- RasPi registriert sich automatisch auf dem Server:
POST https://firma.de/RestAPI/RasPi.php
{
"action": "register",
"hash": "E5tlu8Jg44ZwwlBQgSbCE3lU7RSRvMXa"
}
- 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
- Melden Sie sich per SSH am RasPi an
- Führen Sie den Befehl aus:
sudo /home/pi/UpdateFromeIntranetServer - Skript lädt die neueste Version von:
https://firma.de/Apps/RasPiUpdate/ - Startet Dienste automatisch neu
- 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:
- Überprüfen Sie die Netzwerkverbindung des RasPi (ping server)
- Stellen Sie sicher, dass die IP-Adresse des RasPi in der Whitelist ist
- Überprüfen Sie die Logs auf RasPi:
/var/log/eintranet/ - Starten Sie RasPi neu:
sudo reboot
Problem: Lesegerät liest keine Chips
Symptome: Anlegen des Chips löst keine Reaktion aus
Lösung:
- Überprüfen Sie die physische Verbindung des Lesegeräts zum RasPi
- Stellen Sie sicher, dass der Lesegerätedienst läuft:
sudo systemctl status rfid - Starten Sie den Dienst neu:
sudo systemctl restart rfid - Ü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:
- Stellen Sie sicher, dass in den Einstellungen aktiviert ist:
wa_RasPi_Face=1 - Überprüfen Sie die Kameraverbindung zum RasPi
- Stellen Sie sicher, dass Mitarbeiter hochgeladene Fotografien im System haben
- Überprüfen Sie die JavaScript-Konsole im Browser auf Fehler
- 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:
- Kopieren Sie die API-URL des Mitarbeiters
- Öffnen Sie die URL im Browser
- Das System erfasst die Anwesenheit wie vom RasPi
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:
- Verwenden Sie in der Registerkarte "Benutzerrechte" den DataTables-Export
- Klicken Sie auf die Schaltfläche "Excel" oder "CSV"
- 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:
- Modul Anwesenheit
- Eintragsdetail
- 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:
- Finden Sie in der Registerkarte "Benutzerrechte" den Mitarbeiter
- Löschen Sie in der Spalte Minimale Pausenlänge (Minuten) den Wert oder senken Sie ihn (z.B. von 30 auf 15)
- 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 cameraNeu 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-checkNeu starten: sudo systemctl restart eintranet-check
|
| Fehler in Konfigurationsdatei |
Überprüfen Sie Konfiguration: /etc/eintranet/config.jsonStellen 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 -lSuchen Sie nach Zeile mit wa_chip_autoclose.php (oder ähnlich).
|
| Fehlerhafte Zeiteinstellung |
Überprüfen Sie beim Modus "Zur angegebenen Zeit" das Zeitformat: HH:MMMuss 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.100Nicht: 192.168.1.100:80 oder http://192.168.1.100
|
- Deaktivieren Sie vorübergehend die IP-Whitelist (Kontrollkästchen deaktivieren)
- Versuchen Sie, vom Lesegerät einzuchecken
- Wenn es funktioniert → Problem liegt bei der IP-Whitelist
- Überprüfen Sie Server-Logs, welche IP er sieht
- Fügen Sie die korrekte IP zur Whitelist hinzu
- Aktivieren Sie die Whitelist wieder