Effiziente Zeiterfassung
Anbindung eines NFC Kartenlesers (Zeiterfassungsterminals) an Odoo
23 November, 2023 durch
Effiziente Zeiterfassung
manaTec GmbH, Alexander Heyber
 


Einleitung & Problemstellung:

Spätestens seitdem die Erfassung der Arbeitszeiten aller Beschäftigten eines Unternehmens verbindlich im Gesetz verankert ist, muss sich jeder Arbeitgeber mit der Arbeitszeiterfassung auseinandersetzen. Odoo bietet hierfür eine sehr effiziente Möglichkeit zur Erfassung der Anwesenheitszeiten für jeden Mitarbeiter. Ein großer Vorteil hierbei ist, dass dies über das Personalmodul abgebildet wird, welches bereits in der Community-Version vorhanden ist. Durch diesen Kniff wird kein Benutzer-Account benötigt, was in der Enterprise-Version dazu führt, dass mehr Personal die Anwesenheitszeiten erfassen kann, als es Nutzer in Odoo gibt. Somit ist das Zeiterfassungsmodul von Odoo in der Community sowie Enterprise Version kostensparend, was die Nutzung der Zeiterfassung in Odoo attraktiv macht.
Ohne Benutzeraccount ist die An- und Abmeldung jedoch nur mit zusätzlichem technischen Aufwand möglich. Ein eingerichtetes Tablet mit zusätzlicher Absicherung ist zum Beispiel notwendig, um die Portal-Ansicht der Erfassung manipulationssicher jedem Mitarbeiter zur Verfügung zu stellen. Die Erfassung der Zeit erfolgt, indem man auf dem Tablet in der Portalansicht seinen Personal-Avatar sucht und mittels der Eingabe eines Pin sich an- oder abmeldet. Alternativ kann auch ein Barcode gescannt werden, hierfür wird aber auch meist eine Tablet-Lösung mit zusätzlichem Scanner notwendig.

Zielsetzung:
 


Ziel der manaTec war es daher eine sehr effiziente und ohne großen Einrichtungsaufwand nutzbare Lösung zu schaffen, welche im täglichen Betrieb stabil läuft und auch in Stoßzeiten eine schnelle Erfassung ermöglicht. Die schnellste Möglichkeit der Erfassung, neben dem Barcodescanner, bietet die NFC (Near Field Communication) Technologie. Diese wird zum Beispiel bei der kontaktlosen Zahlung mittels EC Karte eingesetzt. Schnell war klar, dass diese Technologie neben der Geschwindigkeit auch Vorteile bei der Sicherheit und späteren Verwaltung der Karten in Odoo bietet. Es musste also ein NFC-Kartenleser gefunden werden, welcher sich an Odoo anbinden lässt. Nach einer Recherche kam aber schnell die Ernüchterung, da keine Lösung am Markt hierfür existiert (Stand: 2019). Daher entschied sich die manaTec zur Eigenentwicklung einer Lösung, welche unser Zeiterfassungsterminal manaTec Timetracking zum Ergebnis hatte.

Der konzeptionelle Aufbau sieht vor, dass die gesamte Intelligenz sowie die Verwaltung in Odoo liegt. Das Terminal ist zwar an sich komplex, fungiert in der Erfassungskette aber lediglich als Kartenleser mit Übertragungsfunktion an Odoo. Somit können beliebig viele Terminals zur Erfassung der NFC Karte eingesetzt und beschädigte Terminals jederzeit unkompliziert ausgetauscht werden, ohne Daten zu verlieren oder transferieren zu müssen. Auch ein Diebstahl des Terminals würde zu keinem Datenverlust führen.

Die eingesetzte Hardware:


Die Anforderung an die Hardware wurde von uns wie folgt aufgestellt:

  • Kompakte Bauweise
  • Effiziente und dennoch gut lesbare Anzeigemöglichkeit
  • Einfache Bedienbarkeit
  • Robustheit in einer raueren Umgebung (Einsatz in zum Beispiel einer Lagerhalle möglich)
  • Ortsunabhängigkeit von einem Netzwerkanschluss

Da bei der manaTec Erfahrungen im Bereich Embedded Systems vorhanden sind, lag es auf der Hand, selbst eine Lösung für die Anwesenheitserfassung in Odoo mittels NFC zu schaffen. Die Wahl der Kernkomponente, dem Controller, fiel hierbei auf den ESP32, da dieser neben der unkomplizierten Programmierung auch ein integriertes WiFi Modul mitbringt. Zudem ist durch die weite Verbreitung sehr viel Know-how in der Community vorhanden, welches frei über diverse Foren und Websites verfügbar ist. Die hohe Verfügbarkeit an Lösungen zur Anbindung von zum Beispiel Displays und auch NFC Adaptern führt zu einer kurzen Time-to-Market, ein weiterer Vorteil des ESP32. Für die einfache Bedienbarkeit und dennoch gute Darstellung ist ein Touch-Display sehr gut geeignet, unsere Wahl fiel auf das modulare Touch-Display ILI9341. Dies ist zwar eigentlich die Bezeichnung des SPI TFT Treibers, jedoch findet man unter der Bezeichnung in fast allen Suchergebnissen das fertige modulare Touch-Display. Auch eine Basisplatine sowie ein passendes Gehäuse sind bereits vorhanden: Für unsere Lösung kommt das Arduino Touch Wandgehäuse zum Einsatz, in dessen Lieferumfang bereits das Touch-Display enthalten ist. Nun fehlt neben einem Netzteil nur noch ein NFC Adapter. Wir haben uns für den RC522 entschieden, da dieser in das Gehäuse eingebettet werden kann und somit ein kompaktes Gerät entsteht. Alle genannten Komponenten lassen sich mit Hilfe von einem zusätzlichen 7-adrigen Kabel kompromisslos verbinden. Der Zusammenbau erfordert allerdings etwas Erfahrung im Umgang mit Lötkolben und Lötzinn sowie der Kabelkonfektionierung. Aufgrund der gewählten modular aufgebauten Komponenten ist jedoch ein Arbeiten ohne Mikroskop möglich, da keine SMD Komponenten selbst verbaut werden müssen.

Der Zusammenbau des fertigen Gerätes erfolgt in folgenden groben Schritten:

  1. Beschaffung aller notwendiger Komponenten
  2. Konfektionierung des 7-adrigen Verbindungskabels
  3. Anlöten des Kabels an dem NFC Reader sowie der Basisplatine
  4. Anbringen des Displays
  5. Einsetzen des ESP32
  6. Anbringen des NFC Readers auf der Innenseite der Frontblende
  7. Zusammensetzen des Gehäuses
Einsicht in die Terminal-Hardware

Softwarekomponente I - Firmware:

Der wesentlich komplexere Teil der Zeiterfassungsterminals ist die Firmware, welche zum Betrieb notwendig ist. Die folgenden Hauptanforderungen müssen erfüllt werden:

  • Updatefähigkeit
  • Ansteuerung des Farbdisplays
  • Einlesen und Auswerten der Touch-Rückmeldung
  • Einlesen und Auswerten von NFC Karten
  • Einfache Ersteinrichtung (Einbindung in eine WLAN Struktur)
  • Webinterface zur Verwaltung (Host)
  • REST-API (Client) via https/JSON (Einbindung über IoT Funktionalität in Odoo)

Die Firmware wurde von uns in C geschrieben, es kommen für die Web-Nutzeroberfläche aber auch Komponenten in HTML, CSS und JS zum Einsatz. Für den Betrieb auf dem ESP32 muss der Quellcode kompiliert und anschließend auf diesem eingespielt werden. Hierfür stehen mehrere IDEs zur Auswahl, die nicht nur eine übersichtliche Anzeige und Code-Highlighting bieten, sondern auch Funktionen zum direkten Beschreiben des ESP32 bereitstellen. Wir haben uns für Visual Studio Code mit der Erweiterung PlatformIO entschieden.

Terminal Anzeige und Menü
Weboberfläche des Terminals

Softwarekomponente II - Odoo Modul:

Um eine nutzerfreundliche und nahtlose Einbindung des Zeiterfassungsterminals in Odoo zu ermöglichen, wurden folgende Anforderungen an das Odoo-Modul gestellt:

  • Nutzung der Odoo-Standards soweit möglich
  • Verwaltung der NFC Karten in Odoo (Sperren, Freigeben, Zuordnen zu Mitarbeitern)
  • Erfassung der Anmeldung/Abmeldung unter Nutzung der Odoo API
  • Einfache Anbindung/Konfiguration um das Zeiterfassungsterminal einzubinden
  • Einbindung mehrerer Terminals ermöglichen

Das Odoo Modul wurde von uns mit dem Ziel der vollständigen Integration des NFC Terminals in Odoo entwickelt. Eine umfangreiche Verwaltung der NFC Karten mit Zuordnung zu Mitarbeitern ist ebenso möglich wie die Konfiguration des NFC Terminals über eine optionale Erweiterung der IoT App (Zusatzmodul der manaTec). Unsere NFC Erweiterung baut auf dem Odoo Standard auf und erzeugt im Ergebnis Standard Anwesenheitseinträge. Somit können weitere Erweiterungen, welche zum Beispiel eine Auswertung der Zeiteinträge ermöglichen, ohne Anpassung verwendet werden.

Kartenverwaltung in Odoo

Workflow / Zusammenspiel von Soft- und Hardware:

Die Inbetriebnahme des Terminals

  1. Das Terminal öffnet einen WLAN-Host und stellt ein Netzwerk zur Verfügung
  2. Anmeldung an dem WLAN Netzwerk per Smartphone, Tablet o.ä.
  3. Öffnen der angezeigten IP im Browser → Konfiguration vornehmen
  4. Nach dem Neustart wählt sich das Terminal als Client in das konfigurierte WLAN ein und ist betriebsbereit

Die Konfiguration der NFC Karten in Odoo

  1. Einstellen des API Zugangs für das Terminal unter Anwesenheitszeiten → Konfiguration → Einstellungen → NFC Station API
  2. Anlegen einer NFC Karte unter Anwesenheitszeiten (oder Personal) → NFC → NFC Karten
  3. Um die UID der Karte einzulesen einfach die Einstellungen auf dem Terminal öffnen (Zahnradsymbol) und die NFC Karte vorhalten → Es wird die UID der Karte angezeigt
  4. Zuordnen der Karte zu einem Mitarbeiter

Die Zeiterfassung

  1. NFC Karte vorhalten
  2. Das Terminal erkennt die Karte und sendet die Informationen der Karte an Odoo
  3. In Odoo wird geprüft, ob ein Zeiteintrag für den mit der Karte verknüpften Mitarbeiter vorhanden ist, welcher nur Kommen aber kein Gehen hat
  4. Ist ein Eintrag vorhanden wird die Gehen-Zeit eingetragen und “Gehen” an das Terminal zurückgemeldet
  5. Existiert kein offener Zeiteintrag in Odoo für den Mitarbeiter, wird “Kommen” an das Terminal zurückgemeldet
  6. Sollte die Karte ungültig oder unbekannt sein, wird auch dies an das Terminal zurückgemeldet

Zusammenfassung:

Unser Fokus bei der Konzeption und Umsetzung des Zeiterfassungsterminals inklusive aller Firm- und Softwarekomponenten lag auf der Effizienz und Benutzerfreundlichkeit. Dies zeigt sich anhand verschiedenster Vorteile:

Schnelle Einrichtung: Durch die schnelle Konfiguration aller Komponenten wird die Time-to-Market-Zeitspanne minimiert, sodass Sie direkt von den Vorteilen unserer Lösung profitieren können.

Benutzerfreundliche Bedienung: Die Bedienung im Alltag ist sehr angenehm und selbsterklärend. Die Bedien-Buttons auf dem Touch-Display sind bspw. so gestaltet, dass sie gut lesbar und treffsicher sind, selbst für Benutzer mit großen Händen.

Voreingestellte Standardfunktion: Es wird eine Standardfunktion beim Start des Terminals frei konfigurierbar vorausgewählt, um die meistgenutzte Funktion ohne vorherige Auswahl direkt nutzen zu können. Im Auslieferungszustand ist dies die An- und Abmeldung in der Anwesenheitserfassung von Odoo. So genügt es, nach der kurzen Ersteinrichtung des Terminals, einfach die zugewiesene NFC Karte vor das Terminal zu halten, um sich an- oder abzumelden.

Nutzung in der Community-Version: Unser Zeiterfassungsterminal kann auch in der Community-Version von Odoo genutzt werden. Das bedeutet, dass selbst Unternehmen, die die kostenfreie Version von Odoo nutzen, von unserem Produkt profitieren können.

Kein Benutzer in Odoo erforderlich: Sie benötigen keinen separaten Benutzer in Odoo, um das Zeiterfassungsterminal zu verwenden. Dadurch können uneingeschränkt viele Mitarbeiter über das Personal-Modul angelegt werden, selbst wenn das Unternehmen weniger Lizenzen als Mitarbeiter hat. Dies bietet eine flexible und kosteneffiziente Lösung für Unternehmen jeder Größe.

Remote-Kartensperrung: Ein weiterer herausragender Vorteil ist die Möglichkeit, die NFC-Karten direkt in Odoo zu sperren. Dies erhöht die Sicherheit erheblich und ermöglicht es Unternehmen, verlorene oder gestohlene Karten sofort zu deaktivieren, ohne physisch am Terminal präsent sein zu müssen.

Wenn auch Sie die Vorteile der effizienten Zeiterfassung in Ihrem Odoo nutzen möchten, besuchen Sie unseren Online-Shop und entdecken Sie unser Zeiterfassungsterminal manaTec Timetracking. Kontaktieren Sie uns jetzt, wir beraten Sie gerne!


 
Zugriffsrechte in Odoo
Nutzer und deren Rollen