RobotWash – automatizált autómosó kioszk rendszer

Rust alapú fizető hardver vezérlés, Angular kioszk frontend és Android kassza alkalmazás egy rendszerben

Írta Haszpra Olivér

RobotWash – Automatizált autómosó kioszk rendszer

A RobotWash-nak teljesen integrált kiosztásos rendszerre volt szüksége az automatizált autómosó állomásokhoz: egy ügyfél-oldali érintőképernyős terminál, amely fizet, vezérli a mosóhardvert és végigvezeti a felhasználót a folyamaton, valamint egy operátor-oldali kassza és admin mobilalkalmazás. A rendszernek megbízhatóan kell működnie ipari környezetben, fizetési hardverrel a körben.

A háromrétegű rendszer

  • Backend: Rust a fizetési hardver vezérlésére – a rendszer magja egy Rust service, amely közvetlenül kommunikál a fizetési terminál hardverrel és vezérli a mosógép állapotait. A Rust-ot a memóriabiztonság-garanciái, determinisztikus teljesítménye és beágyazott, hosszan futó folyamatokra való alkalmassága miatt választottuk, ahol egy összeomlás vagy memóriaszivárgás elfogadhatatlan lenne.
  • Kioszk frontend: Angular – teljes képernyős Angular alkalmazás az ügyfél-oldali érintőképernyőn. Végigvezeti a felhasználót a mosóprogram kiválasztásán, fizetésen és állapotfigyelésen. Kültéri/ipari használatra tervezve: nagy érintési célterületek, magas kontrasztú vizuális elemek, mutatóeszköztől független működés.
  • Kassza és admin mobilalkalmazás: Android – natív Android app az állomás kezelője számára. Munkamenet-kezelést, tranzakciótörténetet, hardver állapotfigyelést és alapvető adminisztrációs feladatokat kezel. Az autómosó állomás helyi hálózatán működik, így az operátorok bárhonnan kezelhetik a helyszínen.

Miért Rust a hardver vezérléshez?

A fizetési hardver integráció nem enged meg hibát: egy összeomlott folyamat tranzakció közben zavart ügyfelet és potenciálisan inkonzisztens kasszaállapotot jelent. A Rust tulajdonlási modellje fordítási időben eliminálja a párhuzamossági hibák és memóriahibák teljes osztályait, bizalmat adva a 24/7-ben futó, tervezett újraindítás nélküli folyamat hosszú távú stabilitásában.

A fizikai fizetési terminálokkal való soros és protokoll-szintű kommunikáció is profitál a Rust alacsony szintű kontrolljából – pontosak lehetünk az időzítés és a byte-szintű üzenet-keretezés terén, ami magasabb szintű nyelvekben kényelmetlen lenne.

Integrációs kihívások

  • Hardver állapotgép – a mosógép jól meghatározott állapotok sorozatán megy keresztül (üresjárat → fizetés fogadása → mosás → öblítés → kész → hiba), de a hardver eseményei aszinkronok és helytelen sorrendben is érkezhetnek. A Rust backend explicit állapotgépet modellez, típusszinten lehetetlenné téve az illegális átmeneteket.
  • Fizetési tanúsítás – a bankkártya fizetési termináloknak szigorú tanúsítási követelményei vannak. Az integrációs rétegünket vékonyra és auditálhatóra terveztük, csak a tanúsítási specifikáció által előírt módokon érintve a terminál API-t.
  • Offline rugalmasság – az autómosó állomások gyakran megbízhatatlan kapcsolattal rendelkező helyeken találhatók. A tranzakciós rekordokat először helyben mentik; a központi backendre való szinkronizálás opportunistán, kapcsolat esetén történik.

Mit tanultunk

Ez a projekt megerősítette, hogy a megfelelő eszköz megválasztása a megfelelő réteghez számít. Rust a biztonságkritikus hardver réteghez, Angular az interaktív kioszk UI-hoz, Android az operátor mobil munkafolyamatához – minden döntés tudatos volt, nem divatos.

Megmutatta azt is, hogy képesek vagyunk teljes-stack terméket szállítani, amely beágyazott szoftvert, web frontendet és mobilalkalmazást fog össze – az a fajta szélességi mélység, amely egyre inkább lehetséges kisebb, AI-augmentált csapatokkal.

Vissza a bejegyzésekhez