DPMS – Zahlungssystem für Getränke - Ein Azubiprojekt

Motivation / Problem / Herausforderung

Jedes mal, wenn ein Mitarbeiter ein Getränk aus dem Kühlschrank nimmt, sucht er in seinem Portemonnaie nach einem möglichst passenden Betrag Kleingeld. Oder aber er versucht sich zu merken, wann und wie viele Flaschen er schon getrunken hat und verstaut einen etwas größeren Betrag in der Kaffeekasse. Wie auch immer: Wirklich praktisch oder zuverlässig ist keine dieser Methoden.

 

Ansatz

Um diesen Umstand zu verbessern, kam die Idee eines kleinen Systems auf, das auf der einen Seite das Bezahlen von Getränken vereinfacht, aber auf der anderen nichts an der Flexibilität des Prinzips „Kaffeekasse“ ändert.

Ein kleiner Computer könnte die Aufgabe des Terminals zur Kauf- und Zahlungsverwaltung übernehmen – nahe liegt da die Verwendung eines Raspberry Pi mit einem einfach zu bedienenden Touchscreen, über den die Benutzer eintragen, dass sie eine Flasche aus dem Kühlschrank nehmen, dass sie einen gewissen Betrag in die Kaffeekasse gelegt haben oder über den sie sich über den derzeitigen „Kontostand“ informieren können.

Wie sollte man sich auf diesem System „anmelden“ können? Per Auswahl seines Namens auf einer scrollbaren Liste auf dem Bildschirm? Per Anbindung an bestehende Daten?

Um die nötige Interaktion gering zu halten, wurde die Idee eines Systems mit RFID-Chips implementiert: Jeder Benutzer bekommt einen solchen (recht kostengünstigen) Chip, den er an den Sensor des Systems hält und so Aktionen mit seinem rudimentären Konto tätigen kann. Optimale Bedienung: Getränk auswählen, Chip vor Sensor halten – Getränk nehmen – fertig.

Wie sollte sich der Mitarbeiter registrieren können? Es wird eine Anbindung an einen betrieblichen LDAP-Server genutzt, um Benutzer-Namen etc. zu bekommen.

Gespeichert werden die Nutzerdaten allerdings nicht auf dem teilweise öffentlich zugänglichem Raspberry, sondern auf einem Server-Backend. Dieses Backend sollte sowohl die Anlaufstelle für den Raspberry Pi darstellen, als auch ein Webinterface zur Administration (Registrieren neuer Benutzer etc.) bereitstellen. Zur Administration berechtigt ist nur, wer valide LDAP-Login-Daten übergibt und Teil einer bestimmten Gruppe ist. 

 

Implementationsdetails

Genutzte Programmiersprache ist zunächst einmal Python.

Auf Seiten des Raspberry Pi gibt es gute Python-Libraries für GUIs. Genutzt wurde hier PyQt4, das Bindings für das C++-Framework Qt darstellt. Bibliotheken für das Ansprechen von seriellen Geräten – hier der RFID-Reader – gibt es ebenso. Zur Kommunikation zum Backend bedarf es Möglichkeiten, um auf dessen REST-like API (Transportformat JSON) zugreifen zu können. Auch hier gibt es einfache und effiziente Python-Module.

Der HTTP-Server (das Backend) setzt auf das HTTP-Microframework Flask und die Datenbank SQLite. Das Webinterface, welches über die selben HTTP-Routen per „AJAX“ mit dem Server kommuniziert, wurde mithilfe von qooxdoo in JavaScript erstellt.

 GOgetraenk