ShipIt Day 2016: iBeacon Tracking Server

von Florian Mutter

Für unser Ship-It Day Projekt "Mit iBeacons Arbeitszeit erfassen" haben wir eine App für Smartphones und eine Server-Applikation entwickelt. Nachdem wir im ersten Artikel das Projekt und die mobile App vorgestellt haben, geht es in diesem Artikel um die Server-Applikation.

In der Server-Applikation werden alle Daten gespeichert, aggregiert und verwaltet. Die App wurde mit Grails 3.1.1 und Bootstrap 4 (Alpha) umgesetzt.

Die Funktionalitäten

Auf der Startseite wird angezeigt, welche Mitarbeiter gerade im Büro sind und wann sie angekommen sind. Im unteren Teil werden die Mitarbeiter angezeigt, die nicht im Büro sind, und wann sie das Büro verlassen haben.

Für jeden Mitarbeiter gibt es eine Detail-Ansicht, wo die Arbeitszeit für die letzten Tage, Wochen usw. angezeigt werden. Es wird auch eine Liste mit den einzelnen Events angezeigt, wie sie von den Smartphones geschickt wurden.

Außerdem können neue Mitarbeiter angelegt, die wichtigsten Mitarbeiter-Daten bearbeitet und Geräte einem Mitarbeiter zugeordnet werden. Sendet ein neues Gerät Daten an die Applikation, taucht es automatisch in der Übersicht auf und kann einem Mitarbeiter zugeordnet werden.

REST-API

Die Daten werden über eine REST-Schnittstelle von der App entgegen genommen. Über diese Schnittstelle kann die App ebenfalls die aggregierten Daten für einen Mitarbeiter abrufen. Außerdem ist eine Schnittstelle für unser zweites ShipIt-Day Projekt, das Dashboard, vorhanden. So könnte auch das Dashboard die anwesenden Mitarbeiter anzeigen.

Durch Grails 3 kamen diese Schnittstellen praktisch umsonst bei der Entwicklung mit. Grails erkennt automatisch, ob der Client HTML oder JSON empfangen will, und sendet selbständig die richtige Antwort. Eine Funktion, die alle anwesenden und abwesenden Mitarbeiter in zwei Listen zurück gibt sieht z.B. so aus:

def index() {
        List<User> usersInOffice = User.findAllByStatus(UserStatus.IN_OFFICE)
        List<User> usersOutOfOffice = User.findAllByStatus(UserStatus.OUT_OF_OFFICE)

        def result = [usersInOffice: usersInOffice, usersOutOfOffice: usersOutOfOffice]

        respond result
    }

Auch die Integration von Bootstrap gelingt auf Anhieb und macht eine solche Anwendung ohne großen Aufwand gleich um einiges hübscher

Weiter-Entwicklung

Für einen produktiven Einsatz fehlen noch einige Komponenten, wie z.B. eine Authentifizierung und die sichere Übertragung der Daten. Diese müssten noch nachgerüstet werden.
Als Erweiterungen könnten wir uns noch eine Verwaltung für die iBeacons vorstellen. Die Applikation könnte mit mehr Informationen über die iBeacons auch feststellen, in welchem Raum sich welcher Mitarbeiter aufhält. So könnte dann auf dem Dashboard immer angezeigt werden, wenn die heiß begehrte "Telefonzelle" besetzt ist.

Fazit

Der ShipIt Day hat viel Spaß gemacht und für das eine oder andere Gelächter gesorgt. Die Projekte sind für zwei Tage Entwicklung ganz gut gelungen und wir freuen uns schon auf den nächsten ShipIt Day.

Zurück

© 2006-2024 exensio GmbH
Einstellungen gespeichert
Datenschutzeinstellungen

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell, während andere uns helfen, diese Website und Ihre Erfahrung zu verbessern.

Sie können Ihre Einwilligung jederzeit ändern oder widerrufen, indem Sie auf den Link in der Datenschutzerklärung klicken.

Zu den gesetzlichen Rechenschaftspflichten gehört die Einwilligung (Opt-In) zu protokollieren und archivieren. Aus diesem Grund wird Ihre Opt-In Entscheidung in eine LOG-Datei geschrieben. In dieser Datei werden folgende Daten gespeichert:

 

  • IP-Adresse des Besuchers
  • Vom Besucher gewählte Datenschutzeinstellung (Privacy Level)
  • Datum und Zeit des Speicherns
  • Domain
×
Irving Tschepke
Irving Tschepke
Dipl.-Wirtsch.-Ing.
Peter Soth
Peter Soth
Dipl.-Inform. (FH)
Wir antworten in wenigen Stunden.
Oder rufen Sie einfach an:
×
Irving Tschepke
Irving Tschepke
Dipl.-Wirtsch.-Ing.
Peter Soth
Peter Soth
Dipl.-Inform. (FH)
Wir antworten in wenigen Stunden.
Oder rufen Sie einfach an:
You are using an outdated browser. The website may not be displayed correctly. Close