Az ERP rendszer amit fejlesztek webes, mindenki általában a saját mobileszközéről használja vagy valamely céges desktopról, tabletről vagy adatgyűjtőről. Megjelent az igény raktári címke nyomtatására. Mi lenne a kézenfekvő megoldás? Minden eszközre feltelepíteni a Zebra nyomtató driverét és a felhasználók képzése. Na ezt biztosan nem! Sok szervezetfejlesztő az emberek képzésében látja a vállalat lehetőségét, én nagyon nem. Szerintem a legjobb amit egy vállalat tehet, ha a folyamatait és a szervezeti működést fejleszti és nem az egyént. Emiatt az ismertetett problémára is más megoldást kerestem. A gondolat az volt, mi lenne, ha API-kon vagy MQTT-n keresztül megkapná a feladatot a nyomtató és senkinek nem kell tudnia semmit a magic-ről?
Nem rabolom a kedves olvasó idejét, inkább leírom mi lett a megoldás.

Megoldás
ERP frontend -> RestAPI ERP backend -> RestAPI (curl) -> Nginx Proxy (telephelyi gateway) -> Apache Raspberry Pi5 -> CUPS -> Zebra nyomtató
Akkor vegyük át a nyomtatótól kezdve:
1. Cups https://localhost:631 Zebra nyomtató telepítése (OOTB)
2. Apache Rpi5-ön lévő PHP alkalmazás elkészítése, ami 5 db mezőt vár POST: user, password, ean13, productName, palletPlaceCode majd ebből készít string összefűzéssel egy zpl fájl, amit kiír a háttértárra és futtatja a nyomtatási processzt, A Zebra nyomtató ilyen zpl fájllal vezérelhető, ami kb olyan, mint amikor telneten keresztül kommunikálsz egy eszközzel. Magát a renderelést a Zebra nyomtató végzi piszkosul gyorsan. Amint megnyomom a webes felületen a nyomtatás gombot, maximum 300ms és már megkezdi a nyomtatást, amit kb 500ms alatt el is végez. Ez a nyomtató kb az egyik legolcsóbb nyomtatója a Zebrának. A nyomtató nem pazarol üres címkéket, csak annyit címkét használ amennyit kértél. Maga a backend 40 sor kód volt.
3. Nginx Proxy: A telephelyen ő rendelkezik publikus eléréssel az interneten keresztül, mert az Apache Rpi5 egy belső privát hálózaton lóg, egy raktárban.
4. RestApi ERP backend, ezt azért is kell így csinálni, mert az Rpi5 auth-ot nem akarom odaadni a felhasználónak, így azt a felhasználó nem is ismeri.
5. ERP frontend, a felhasználó authentikáció kivételével minden adat tőle származik vagyis: ean13, termék neve, termék helye a raktárban.
UI/UX
A felületen az adott terméknél van egy „Polccímke nyomtatása a raktári nyomtatóra” (konfigurálható) gomb, amire kattintva megtörténik a magic.
Miért gondolom, hogy jó a megoldásom?
Nem számít mennyi kliensed van, azok mit sem tudnak a hogyan-ról, de tudnak a mit-ről. A felhasználókat nem érdekli a hogyan, ők csak a feladatukat akarják megcsinálni. Bár látszólag amit csináltam sok munka, de elmondom nem az. Összesen 2 óra alatt készítettem el az egészet, ebben benne volt még a nyomtatási kép megtervezése is, ami kb 30 db címke próbanyomtatása volt. A 2 óra annak is köszönhető volt, hogy nagyon tudtam mit akarok és azt is, hogyan fogom megcsinálni.
A legnagyobb előnye az egész rendszernek, hogy egyedül az Rpi tudja a hogyan-t. Vagyis a függőség kezelése interface alapú lett, külső komponens nélkül (ha nem számítjuk a programozási nyelvet vagy a curl-t). Emiatt egy nyomtatóváltás, vagy egy új címkeméret, vagy design váltás semelyik klienst sem fogja érinteni, semmilyen extra adminisztrációt nem fog megkívánni az üzemeltetéstől, kivéve az Rpi-n.
Összefoglalva az üzemeltetésnek semmi dolga nem lesz a kliensekkel.