Lua + SunSPOT = LuaSPOT

If you are looking for English version of this post, check the project page directly. I put a lot of documentations there and all are in English 🙂

Setelah hampir dua bulan tertunda (sambil nunggu restu dr pembimbing juga sih), akhirnya saya merilis seluruh kode dan dokumentasi proyek yang saya dan rekan saya kerjakan. Kerjaan ini merupakan tugas kuliah Network Programming di Universiteit van Amsterdam yang dikerjakan di bawah bimbingan Rudolf Strijkers.

Jadi, apakah LuaSPOT ini?

Ada sebuah alat kecil namun cukup canggih yang dikenal sebagai sensor network, atau lebih tepatnya wireless sensor network (WSN) karena menggunakan media komunikasi nirkabel. Salah satu produk WSN adalah Sun SPOT yang tentu saja dibuat oleh Sun Microsystems.

Sun SPOT ini bisa dibilang sebuah komputer kecil yang dapat menjalankan aplikasi Java (Java ME). Aplikasi ini lalu akan dapat menggunakan fasilitas yang disediakan oleh Sun SPOT seperti fasilitas komunikasi nirkabel, mengakses data dari sensor yang ada, dan membaca data masukan yang dikirimkan ke alat ini. Cek halaman Flickr saya dan artikel di Wikipedia tuk pendahuluan lebih lanjut.

Proyek yang saya kerjakan untuk tugas kuliah ini adalah menjadikan Sun SPOT ini bisa menjalankan skrip! Setelah melihat beberapa pilihan yang ada, akhirnya saya memilih Lua sebagai bahasa skrip yang didukung. Salah satu alasannya adalah karena ada Lua Virtual Machine, yang bernama Kahlua, yang dapat berjalan di atas Java ME (dan tentunya Sun SPOT) hehe..

Tidak hanya sekedar menjalankan skrip, Sun SPOT yang sudah dipasangi aplikasi yang saya dan rekan buat ini juga dapat menjalankan lebih dari satu skrip secara bersamaan. Selain itu, skrip dapat dipasang ke dalam Sun SPOT on-the-fly! Tidak perlu mendatangi setiap Sun SPOT yang ada untuk menginstal skrip tambahan, cukup kirim perintah (yang menyertakan skrip di dalamnya) ke setiap Sun SPOT yang ada (broadcast atau point to point, baik langsung maupun tak langsung alias dg perantara), wirelessly.

Setiap skrip akan menyediakan satu atau lebih fungsi yang dapat dipanggil dengan teknik Remote Procedural Call (RPC). Sebuah base station atau Sun SPOT lainnya, dapat mengirim sebuah paket data yang berisi perintah untuk menjalankan fungsi yang terkandung dalam skrip yang sudah terpasang dalam Sun SPOT tujuan.

Gambar di atas menunjukkan arsitektur aplikasi yang dibuat. Di paling bawah, tentu saja, ada Sun SPOT itu sendiri. Aplikasi inti yang kami buat ada di bagian tengah, yaitu Lua SPOT. Kahlua yang kami pakai bisa dibilang juga ada di lapisan tengah. Pada lapisan atas, terdapat aplikasi-aplikasi yang fungsi2nya dapat dipanggil melalui mekanisme RPC.

Bagian dari Lua SPOT yang bertugas menangani instalasi skrip secara fungsional juga berada pada lapisan atas. Dengan kata lain, instalasi skrip dilakukan dengan perintah RPC yang sama!

Sun SPOT tidak memiliki fasilitas komunikasi yang canggih. Tidak ada mekanisme routing yang dapat digunakan untuk mengirim data ke Sun SPOT lain melalui beberapa Sun SPOT perantara. Oleh karena itu, perlu dibuat sebuah fungsi routing agar jaringan Sun SPOT yang dibuat dapat menjadi lebih canggih. Kami juga mengimplementasikan fungsi routing yang dapat melakukan penerusan pesan dari satu Sun SPOT ke Sun SPOT lain. Kami mengimplementasikannya dalam bentuk aplikasi lain =D Jadi, pengiriman pesan juga dilakukan dengan RPC!

Aplikasi Manager yang bertugas untuk mengatur instalasi aplikasi ditulis dalam bahasa Java. Sedangkan, aplikasi router yang menjadi aplikasi standar pada Lua SPOT ditulis dalam bahasa Lua! Konsekuensinya, andai fungsi routing yang ada tidak dapat memenuhi kebutuhan, silakan buat fungsi routing yang baru yang ditempatkan menjadi aplikasi baru atau bahkan mengantikan yang ada.

Konsep sederhana namun sangat canggih ini saya adaptasi dari cara komunikasi yang digunakan oleh Smartcard. Kebetulan dulu saya juga pernah mengerjakan proyek Smartcard di UI 🙂

Ada satu konsep baru dalam dunia jaringan komputer, yaitu active network. Hal ini didefinisikan sebagai sebuah jaringan yang dapat diubah perilakunya dengan memasang sebuah aplikasi ke jaringan tersebut. Sebagai contoh, kita bisa mengirim sebuah paket data yang berisi program kecil. Router yang menerima paket data ini akan membaca program tersebut dan mengeksekusinya. Lua SPOT yang dibuat ini dapat dijadikan sebagai dasar untuk membangun active network tersebut 🙂

Jadi, bisa dibilang pada dasarnya Lua SPOT adalah sebuah RPC server yang menerima pesan dan meneruskannya ke aplikasi/fungsi yang ada. Aplikasi yang ada ditulis dalam bahasa skrip Lua dan dapat dipasang secara dinamis melalu jaringan nirkabel yang ada.

Yap, sekian saja penjelasan (yang tidak bisa dibilang) singkat atas proyek tugas kuliah yang saya kerjakan dua bulan lalu. Tuk informasi lebih lanjut, silakan cek dokumentasi yang sudah saya letakkan di halaman proyek: http://github.com/fajran/luaspot/tree/master 🙂