Tunas Akara
Kembali ke Blog

Bicara Serial dengan Kontroler Vending Machine

oleh RayhanDiperbarui 5 menit baca
vendingserialandroidintegrationsdk
Bicara Serial dengan Kontroler Vending Machine

Bicara Serial dengan Kontroler Vending Machine

Mesin vending spring-coil modern — hardware kelas TCN yang mendominasi pasar — sebenarnya dua komputer dalam satu kabinet. Board Android menjalankan layar, pembayaran, dan software aplikasinya. Driver board terpisah menjalankan motor, drop sensor, dan kompresor — dan komunikasinya lewat serial.

Aplikasi Anda tidak pernah menyentuh motor langsung. Semua perintah lewat command board di port semacam /dev/ttyS3, dan semua yang Anda jual bergantung pada lancarnya percakapan itu.

Yang benar-benar dikirim vendor

Bukan dokumen protokol. Yang datang adalah AAR tertutup — format paket library Android — semacam tcn_springboard-release.aar, plus aplikasi demo dan dokumentasi yang tipis, hasil machine-translation, atau dua-duanya.

SDK-nya — paket kode siap pakai dari pabrikan untuk mengendalikan mesinnya — minta Application class aplikasi meng-extend base class miliknya dan serial port dikonfigurasi saat startup, lalu menjalankan VendService di background dan mengembalikan hasil lewat listener terdaftar berupa event ID bernomor. Biasanya ada langkah otorisasi satu kali yang terikat ke board.

Tidak ada yang aneh di sini. Ini bentuk standar SDK vendor hardware, dan melawannya buang-buang tenaga. Yang menentukan justru cara Anda mengurungnya.

Bungkus tipis, dan tulis panduan yang tidak ditulis vendor

Bayangkan penerjemah di pengadilan: pihak asing bicara bahasanya sendiri, tapi semua orang di ruangan cuma mendengar satu bahasa yang konsisten lewat dia. Wrapper tipis kerja seperti itu untuk SDK vendor.

Langkah praktisnya: satu modul di codebase yang memegang seluruh siklus hidup SDK — inisialisasi, konfigurasi serial port, registrasi listener — dan mengekspos interface kecil dalam kosakata sendiri: vend(slot, orderNo), querySlot(slot), setTemperature(mode), plus event stream yang bersih. Tipe-tipe SDK tidak pernah bocor keluar dari modul itu. Saat vendor merilis update yang breaking, atau proyek pindah ke keluarga kontroler lain, yang perlu dirombak cuma satu file itu.

Separuh sisanya dokumentasi: panduan SDK internal yang ditulis sendiri, mencatat apa yang sesungguhnya dibutuhkan integrasi — permission yang diminta SDK, setup AAR, konfigurasi serial port, event ID yang penting dan artinya dalam praktik. Biayanya satu sore, dan menghemat satu minggu bagi setiap developer berikutnya yang tak perlu lagi menggali fakta dari PDF hasil machine-translation. Di proyek integrasi, panduan itu saya perlakukan sebagai deliverable, bukan pelengkap.

Command, acknowledge, dan drop sensor

Semua komunikasi dengan board bersifat asinkron. Anda meminta vend; hasilnya datang belakangan sebagai event — sukses, gagal, atau tidak datang sama sekali. Diam pun sebuah jawaban, dan wajib Anda tangani:

Loading diagram…

Yang membedakan mesin yang beres dari mesin yang panen komplain adalah drop sensor. Motor berputar bukan jaminan barang keluar — bisa jadi spring macet, produk terjepit, atau coil-nya habis satu baris lebih awal. Sensor inilah yang memastikan ada barang yang benar-benar jatuh.

Aturan turunannya: jangan pernah menandai order terkirim sebelum drop terkonfirmasi, dan sambungkan jalur gagal dan timeout langsung ke refund. Pelanggan yang bayar dan tidak dapat apa-apa memaafkan mesin yang refund seketika. Mereka tidak memaafkan mesin yang cuek.

Fault slot perlu diperlakukan sama seriusnya. Board melaporkan event sold-out dan fault per slot — perlakukan slot yang gagal dua kali berturut-turut sebagai macet, keluarkan otomatis dari pool yang bisa dijual, dan biarkan manusia mengaktifkannya lagi setelah inspeksi.

Telemetri yang layak ditangkap

Jalur serial membawa lebih dari sekadar perintah vend, dan kebanyakan integrasi menyia-nyiakannya. Layak disimpan sejak hari pertama: stok per slot, suhu kabinet (kompresor yang mulai rusak ketahuan dari suhunya beberapa hari lebih awal), hitungan vend gagal per slot (pola khas slot macet), event pintu terbuka, dan event pembayaran dari hardware uang kertas dan koin.

Stream itulah yang membuat mesin-mesin yang tersebar bisa dikelola sebagai satu sistem — rute restock direncanakan dari data, mesin ditandai sebelum pelanggan komplain. Menyalurkannya ke dashboard adalah masalah normalisasi yang sama seperti pada perangkat IoT campuran lainnya; pendekatannya ada di normalisasi perangkat IoT multi-protokol.

Catatan kaki lisensi yang bukan catatan kaki

AAR itu datang tanpa teks lisensi. Status hukumnya — apa yang boleh Anda redistribusikan, kepada siapa, di dalam produk apa — sering kali memang tidak jelas, dan "semua orang juga pakai" bukan berarti boleh.

Sebelum SDK itu ikut terkirim di dalam produk, pertanyaan redistribusi harus masuk kontrak pengadaan dengan vendor mesin. Panduan lengkap soal apa yang boleh dan tidak boleh Anda ship ada di lisensi open-source di software komersial.

Intinya

Terima SDK vendor sebagai kondisi lapangan yang tidak bisa ditawar: kurung di balik wrapper tipis, dokumentasikan sendiri, hormati model command/ack yang asinkron, percayai drop sensor dan bukan putaran motor, dan tangkap telemetri yang memang sudah ditawarkan jalur serial.

Setelah itu, mesin-mesin tadi jadi sebagaimana mestinya — endpoint lapangan yang membosankan dan terpantau.

Artikel Terkait

Mau bangun hal serupa?

Jasa Pengembangan Backend IoT & Integrasi Multi-Protokol

Backend yang menyerap telemetri perangkat lintas MQTT, WebSocket, Modbus, dan BLE, lalu menyatukannya jadi dashboard real-time yang andal.

Lihat cara saya bisa bantu