Verkaufsautomaten sind keine reinen Verkaufsmaschinen mehr. Sie sollen dem Kunden ein Einkaufserlebnis bieten. Mit erklärenden Videos führen sie durch den Einkauf und stellen ergänzende Informationen zu den Produkten bereit. Werbung und Nachrichten generieren gleichzeitig zusätzliche Einnahmen für die Betreiber. Umgesetzt wird das vor allem mit Hilfe von großen Bildschirmen mit Toucheingabe. Sie sorgen für eine vertraute Bedienung. „Wir wollen den Benutzer, der sein Smartphone gewohnt ist, in seinem Alltag abholen“, erklärt Christoph Kutzera. Er entwirft Embedded-Systeme für Verkaufsautomaten bei dem Hamburger Unternehmen Garz & Fricke. Damit die Automaten richtig funktionieren, kommt es ihm zufolge sehr stark auf die Software an. Entscheidend für deren Programmierung sind vor allem das verwendete Betriebssystem und das Grafikframework.
Individuelle Linux-Systeme bauen
Bei Garz & Fricke haben sich die Ingenieure für den GNU/Linux-Baukasten Yocto in Kombination mit dem Grafik-Framework QT entschieden. Auf Linux fiel die Wahl unter anderem, weil dafür keine Lizenzkosten anfallen. Viel wichtiger ist den Entwicklern allerdings die sehr gute Hardware-Unterstützung des Betriebssystems.
Yocto ist kein eigenständiges Linux-System, meist als Linux-Distribution bezeichnet, sondern eher ein Ökosystem, aus dem sich Programmierer bedienen können. Es eignet sich daher sehr gut für die Erstellung von Software für IoT-Geräte und individualisierte Embedded-Systeme. Bisher mussten Entwickler dafür oft auf bestehende Distributionen zurückgreifen, die meistens nicht flexibel genug an ihre Anforderungen angepasst werden konnten oder sie mussten ein komplettes System selbst schreiben. Mit Yocto geht die Programmierung hingegen deutlich schneller vonstatten. Aus Sicht von Kutzera und seinen Kollegen zeichnet sich Yocto vor allem durch seine standardisierte Architektur aus. Außerdem lässt es sich sehr gut und einfach anpassen. Sinnvolle Vorlagen für die Unterstützung der Hardware und zur Integration von komplexen Bibliotheken für die Applikationsunterstützung werden in Rezepten verwaltet. Die damit erstellte Konfiguration enthält alle Informationen um das Linux-Image jederzeit versionsgetreu reproduzieren zu können.
Auf dieser Basis setzen die Entwickler dann mit dem Grafikframework QT auf und kreieren mit diesem die eigentliche Applikationssoftware für den Automaten. Seit QT5 wird ihnen die Arbeit dabei dadurch erleichtert, dass QML- und teils sogar HTML-basiert programmiert werden kann. Mit der deklarativen Programmierung QML lassen sich die Oberflächen intuitiv beschreiben. Dabei wird Skalierung unterstützt, was die Entwicklung flexibler macht, weil nicht mehr jedes Element bereits von Anfang an auf das Pixel genau festgelegt werden muss. Das Programm unterstützt außerdem Grafiken und Videos sehr gut, was die Einbettung in die grafische Benutzeroberfläche (GUI) stark vereinfacht.
Schnelle Einarbeitung in die Programmierung
Die Programmierung mit QT und QML beschleunigt die Entwicklung deutlich. Das bestätigt auch Kutzera. „Selbst wenn man keine QML-Erfahrung hat, dauert die Einarbeitung nicht lange. Man kann ziemlich schnell erste gute Projekte realisieren“, meint er. Die Lernkurve sei zwar steil, aber zu bewältigen. Unter anderem deshalb, weil man als Entwickler schnell Ergebnisse sehe. Für den GUI-Entwickler sei außerdem positiv, dass er so gut wie nicht in Kontakt mit dem eigentlichen Betriebssystem komme. Probleme bei vergangenen Automatenprojekten machte Kutzera und seinen Kollegen teilweise die Performance von Videos. Die Herausforderung war hier, die Software perfekt auf die eingesetzte Single-Core-CPU und den Arbeitsspeicher abzustimmen. Dafür analysierten sie die Effektivität der verwendeten Video-Codecs und passten anschließend die Timings des Arbeitsspeichers entsprechend an, damit der Code danach optimiert ablief.
Wie einfach sich die mit den beiden Programmen erstellte Software anpassen lässt, zeigt hingegen ein anderes Beispiel von Kutzera. Ursprünglich sollten bei einem Automaten zwei Displays verwendet werden. Obwohl es schon einen funktionierenden Prototypen gab, entschieden sich die Projektbeteiligten dafür, doch nur ein Display zu verwenden. Die Softwareentwicklung musste dennoch nicht von vorne beginnen. „Die Konzeptänderung zu nur einem Screen war in kurzer Zeit möglich. Die meiste Arbeit haben die Änderungen an den spezifischen Ausgangsgrafiken gemacht“, erinnert sich Kutzera. Die erforderlichen Anpassungen am Layout, der Bildschirmführung und Bedienlogik waren ihm zufolge mit wenigen Handgriffen erledigt, da QT mit QML ein so gutes Programmiermodell mitbringe. „Das unterstützt Programmierer und Designer aktiv in ihrer Arbeit“, schwärmt der Entwickler.
HMI für neue Automaten und zum Nachrüsten von alten
Das Ergebnis der Arbeit von Kutzera und seinen Kollegen ist ein fertiges Human-Machine-Interface (HMI) für Automaten. Es kann nicht nur in Automaten neueren Typs verbaut werden, sondern auch ältere Maschinen auf den neuesten Stand bringen, ohne gleich die gesamte Mechanik austauschen zu müssen. Das System kommuniziert über die serielle RS232-Schnittstelle. Darüber kann die Steuerung von älteren Geräten angeschlossen werden. Im ersten Schritt fallen nur die herkömmlichen Tasten und Knöpfe weg. Die alte Steuerung wird beibehalten und kommuniziert nun mit dem modernen HMI. Später können dann weitere Bestandteile Schritt für Schritt an das HMI angeschlossen werden.
Das neue HMI lässt sich nicht nur über RS232 und MDB anschliessen, sondern unterstützt auch moderne Schnittstellen wie Ethernet, USB, WiFi, Bluetooth oder Mobilfunk 4G. Das schafft zusätzliche Möglichkeiten der Kommunikation, aber auch neue Angriffspunkte. Angreifer könnten versuchen Sicherheitslücken auszunutzen, um den Automaten, oder schlimmstenfalls das gesamte Netzwerk aus Automaten, zu kompromittieren. Die Aktualisierung der Software-Bestandteile ist eine große Herausforderung, denn Koordination und Taktung der Updates im laufenden Betrieb gestalten sich oftmals schwierig. Garz & Fricke sichert deshalb die Netze der Automaten gesondert ab. Als Übertragungsweg wird ein VPN-Tunnel (Virtual Private Networks) verwendet. Dadurch ist eine Kommunikation ausschließlich zwischen den Automaten und dem Rechenzentrum möglich.