RobotWash – Automatisiertes Autowäsche-Kiosksystem
RobotWash benötigte ein vollständig integriertes Kiosksystem für automatisierte Autowäsche-Stationen: ein kundenseitiges Touchscreen-Terminal, das Zahlungen annimmt, die Waschhardware steuert und den Benutzer durch den Prozess führt, zusammen mit einer bedienseitigen Kassierer- und Admin-Mobil-App. Das System musste in einer industriellen Umgebung mit Zahlungshardware im Betrieb zuverlässig sein.
Das dreilagige System
- Backend: Rust für die Zahlungshardwaresteuerung – das Herzstück des Systems ist ein Rust-Service, der direkt mit der Zahlungsterminal-Hardware kommuniziert und die Zustände der Waschmaschine orchestriert. Wir wählten Rust wegen seiner Speichersicherheitsgarantien, deterministischer Performance und Eignung für langlebige eingebettete Prozesse, bei denen ein Absturz oder Speicherleck inakzeptabel wäre.
- Kiosk-Frontend: Angular – eine Vollbild-Angular-Anwendung auf dem kundenseitigen Touchscreen. Sie führt den Benutzer durch die Waschprogrammauswahl, Zahlung und Statusüberwachung. Für den Außen- und Industriebereich konzipiert: große Touch-Ziele, kontrastreiche Visuals, kein Zeigegerät erforderlich.
- Kassierer- und Admin-Mobil-App: Android – native Android-App für den Stationsbetreiber. Verwaltet Sitzungen, Transaktionshistorie, Hardware-Statusüberwachung und grundlegende Verwaltungsaufgaben. Funktioniert über das lokale Netzwerk der Autowäsche-Station, sodass Betreiber von überall auf dem Gelände verwalten können.
Warum Rust für die Hardwaresteuerung?
Die Integration von Zahlungshardware verzeiht keine Fehler: ein abgestürzter Prozess mitten in einer Transaktion bedeutet einen verwirrten Kunden und einen potenziell inkonsistenten Kassenstand. Rustss Eigentumsmodell eliminiert zur Kompilierzeit ganze Klassen von Nebenläufigkeitsfehlern und Speicherfehlern und gibt uns Vertrauen in die langfristige Stabilität eines Prozesses, der rund um die Uhr ohne geplante Neustarts läuft.
Die serielle und protokollbasierte Kommunikation mit physischen Zahlungsterminals profitiert ebenfalls von Rusts Low-Level-Kontrolle – wir können beim Timing und der byte-genauen Nachrichtenrahmung präzise sein, was in höhersprachigen Sprachen umständlich wäre.
Integrationsherausforderungen
- Hardware-Zustandsmaschine – die Waschmaschine durchläuft eine klar definierte Zustandsfolge (Leerlauf → Zahlung annehmen → Waschen → Spülen → Fertig → Fehler), aber Hardware-Ereignisse sind asynchron und können in falscher Reihenfolge eintreffen. Das Rust-Backend modelliert die Zustandsmaschine explizit und macht illegale Übergänge auf Typebene unmöglich.
- Zahlungszertifizierung – Kartenzahlungsterminals haben strenge Zertifizierungsanforderungen. Unsere Integrationsschicht wurde schlank und auditierbar gestaltet und berührt die Terminal-API nur auf die von der Zertifizierungsspezifikation geforderten Weisen.
- Offline-Resilienz – Autowäsche-Stationen befinden sich oft an Orten mit unzuverlässiger Konnektivität. Transaktionsdatensätze werden zunächst lokal gespeichert; die Synchronisierung mit einem zentralen Backend erfolgt opportunistisch, wenn eine Verbindung verfügbar ist.
Was wir gelernt haben
Dieses Projekt hat bestätigt, dass die Wahl des richtigen Werkzeugs für die richtige Schicht entscheidend ist. Rust für die sicherheitskritische Hardwareschicht, Angular für die interaktive Kiosk-UI, Android für den mobilen Workflow des Betreibers – jede Entscheidung war bewusst, nicht modisch.
Es zeigte auch unsere Fähigkeit, ein Full-Stack-Produkt zu liefern, das eingebettete Software, Web-Frontend und Mobile umfasst – die Art von Breite, die mit kleineren, KI-augmentierten Teams zunehmend möglich ist.