29 Apr 2013

SMS Gateway

            SMS Gateway menggunakan Gammu dan MySQL



Universitas Surabaya (UBAYA): Ilustrasi SMS Gateway dengan database Mysql

"Ilustrasi SMS Gateway dengan database Mysql"

Pendahuluan

SMS Gateway adalah sebuah gerbang yang menghubungkan antara komputer dengan client melalui SMS, jadi secara garis besar, SMS Gateway dapat digambarkan seperti gambar di atas.
Client secara tidak langsung berinteraksi dengan aplikasi / sistem melalui SMS Gateway. Saat melakukan SMS, maka informasi terpenting yang diperlukan adalah nomor tujuan dan pesan, maka itulah yang sebenarnya diolah oleh SMS Gateway.
Contoh aplikasi SMS Gateway dalam penerapannya di dunia akademik saat ini adalah pengumuman beasiswa, pengumuman ruang tes, dan lain sebagainya. Pengumuman-pengumuman tersebut dilakukan secara otomatis satu arah oleh sistem. Saat informasi internal sudah terkumpul, maka sistem akan melakukan penulisan ke dalam database yang selanjutnya diolah oleh gammu agar dapat dikirimkan kepada nomor yang bersangkutan.
Berkas-berkas pengumuman berupa file spreadsheet ataupun file-file terformat lainnya, jika berkas belum berupa file terformat maupun berkas yang masih berupa kertas berisi tulisan, maka masih menjadi tugas kami untuk men-digitalkan-nya, agar dapat dibaca oleh aplikasi pemgirim SMS. Aplikasi tidak hanya membaca dari berkas-berkas digital, tetapi juga dapat membaca informasi dari database BAAK.
 

Entitas

Aplikasi Pengirim SMS

dapat berupa apa saja asalkan memiliki kemampuan untuk membaca-tulis database, dan membaca berkas digital yang sudah disebutkan di atas. Dalam kasus ini, penulis menggunakan PHP untuk membangun aplikasi pengirim SMS. Kenapa PHP, karena menurut penulis, bahasa PHP lebih mudah dicerna dan memiliki banyak fungsi bahkan untuk background process (daemon) sekalipun (tanpa webserver), PHP mampu. Jadi menurut penulis PHP adalah bahasa yang paling fleksibel baik untuk web-based maupun program lepas.

 

Database

dapat berupa apa saja, dalam penjelasannya, gammu dapat menggunakan database MySQL, PostgreSQL, bahkan gammu juga menyertakan libdbi untuk mengakses database seperti SQLite, Ms.SQL Server, Sybase, Firebird, dll. Penulis menggunakan database MySQL karena memang belum familiar dengan yang lain.
Dalam database SMS Gateway yang digenerate otomatis oleh Gammu, berisi layaknya aplikasi SMS di handphone anda, terdapat inbox, outbox, serta sentitem.
 

GAMMU

adalah sebuah aplikasi cross-platform yang digunakan untuk menjembatani / mengomunikasikan antara database SMS Gateway dengan sms devices. Aplikasi Gammu berupa daemon yang berjalan secara background. Setiap saat, gammu memonitor sms devices dan database sms gateway. Saat ada sms masuk ke sms devices, maka gammu langsung memindahkannya ke dalam inbox dalam database sms gateway. Sebaliknya saat Aplikasi Pengirim SMS memasukkan sms ke dalam outbox dalam database sms gateway, maka gammu mengirimkannya melalui sms devices, dan memindahkan sms ke sentitem dalam database.
 

SMS Devices

merupakan alat pengirim SMS yang berupa modem ataupun handphone. Agar dapat digunakan dengan semestinya, maka devices ini harus memenuhi syarat-syarat tertentu agar dapat terintegrasi dengan gammu.
 

Client

adalah anda yang sudah menerima informasi pengumuman beasiswa, pengumuman ruang, dan sebagainya. Semua informasi yang sampai ke tangan anda dilakukan oleh sistem karena tidak mungkin mengirimkan SMS ke ribuan mahasiswa secara manual.
 
Ruang Lingkup
Dalam pengimplementasian, penulis menggunakan
OS : Ubuntu Lucid 10.04,
MySQL : Ver 14.14 Distrib 5.1.41, for debian-linux-gnu (x86_64) using readline 6.1,
Modem : Wavecom GSM Modem M1306B
 
Instalasi dan Konfigurasi
Gammu adalah aplikasi open source multi-platform, artinya gammu dapat dijalankan di sistem operasi yang bermacam-macam. Hal pertama yang harus dilakukan adalah mendapatkan paket gammu dari website http://wammu.eu/download/gammu/ dan lakukan instalasi seperti pada umumnya. Setelah proses instalasi selesai, pasangkan modem di port USB.
Hal terpenting dari gammu adalah file konfigurasi, contoh lengkap file konfigurasi disertakan dalam manual dan website gammu. Ada 2 file konfigurasi untuk 2 sub-aplikasi gammu. Aplikasi tersebut adalah :
    1. $ gammu
    2. $ gammu-smsd
Perintah no.1 digunakan untuk melakukan baca tulis modem secara manual, sedangkan perintah no.2 adalah aplikasi background untuk memonitor database. Perintah no.1 tidak banyak digunakan, dalam ruang lingkup penulis menggunakannya sekedar untuk mendeteksi modem.
File konfigurasi untuk aplikasi no.1 bisa bernama apa saja, untuk memudahkan, diberi nama ./gammurc
Isi dari file ./gammurc adalah :
[gammu]
port = /dev/ttyUSB0
connection = at115200
port : letak modem, connection : menentukan jenis koneksi yang diinginkan. Untuk penjelasan rinci dapat dilihat di manual maupun website gammu.
Deteksi modem dan integrasinya dengan gammu menggunakan perintah : $ sudo gammu -c ./gammurc identify dan akan dihasilkan :
Manufacturer : Wavecom
Model : unknown (MULTIBAND 900E 1800)
Firmware : 641b09gg.Q2403A 1320676 061804 14:38
IMEI : 012345678901234
SIM IMSI : 510015300171610
Jika sudah muncul seperti di atas, maka modem anda sudah terintegrasi dengan gammu.
Untuk menjalankan gammu-smsd yang merupakan aplikasi monitor database, maka kita siapkan dulu database untuk gammu. Persiapkan user dan database dengan nama tertentu, sesuaikan struktur tabel yang ada menurut http://wammu.eu/docs/manual/smsd/mysql.html
Setelah MySQL tersesuaikan dengan struktur gammu, atur file konfigurasi untuk aplikasi background (aplikasi no.2). File konfigurasi kita namakan ./smsdrc dan berisi :
[gammu]
port = /dev/ttyUSB0
connection = at115200
[smsd]
service = MYSQL #database
logfile = /var/log/smsdlog #letak log file
debuglevel = 1 #level debugging, semakin tinggi semakin dalam
commtimeout = 15
sendtimeout = 15
checksecurity = 0
user = user #user database
password = password #password database
pc = localhost #alamat database
database = sms #nama database
Untuk section [gammu] kita sesuaikan seperti yang ada di dalam file ./smsdrc
Section [smsd] adalah pengaturan bagaimana aplikasi background berjalan. Penjelasan lebih lanjut dapat dilihat di manual.
Setelah database dan file konfigurasi tersesuaikan, maka jalankan aplikasi dengan menggunakan perintah : $ gammu-smsd -c ./smsdrc
Untuk mengirim atau membaca SMS yang masuk, maka operasi database yang berperan. Sebagai contoh untuk mengirim SMS, maka dilakukan query :
INSERT INTO `sms`.`outbox` (`UpdatedInDB`, `InsertIntoDB`, `SendingDateTime`, `Text`, `DestinationNumber`, `Coding`, `UDH`, `Class`, `TextDecoded`, `ID`, `MultiPart`, `RelativeValidity`, `SenderID`, `SendingTimeOut`, `DeliveryReport`, `CreatorID`) VALUES (CURRENT_TIMESTAMP, '0000-00-00 00:00:00', '0000-00-00 00:00:00', NULL, '08199999999999', 'Default_No_Compression', NULL, '-1', 'coba', NULL, 'false', '-1', NULL, '0000-00-00 00:00:00', 'default', '');
dimana `DestinationNumber` adalah nomor yang dituju dan `TextDecoded` adalah isi SMS
Untuk membaca SMS yang masuk, maka dilakukan query :
SELECT * FROM `inbox`
Untuk integrasi lebih lanjut, semisal pengiriman SMS secara masal, ataupun menyeleksi SMS masuk, membuat SMS autoreply, bahkan mengintegrasikan dengan aplikasi yang sudah ada. Semua tertuju pada database gammu, sekarang silahkan anda berkreasi dengan aplikasi berbahasa apa saja untuk mengutak atik database sehingga terbentuk aplikasi SMS terintegrasi.
Demikian penjelasan singkat mengenai SMS Gateway menggunakan Gammu dan MySQL.
Terima Kasih dan selamat berkreasi.

26 Apr 2013

Candi Borobudur


Sejarah Candi Borobudur

 


Candi Borobudur merupakan candi BUddha terbesar di dunia. Walaupun sudah bukan merupakan salah satu dari tujuh keajaiban dunia, Candi Borobudur tetap menarik minat wisatawan, baik wisatawan domestik.  maupun wisatawa dari luar negeri untuk mengunjungi Candi Borobudur ini.
Berikut ini adalah sejarah Candi Borobudur:
Borobudur dibangun oleh Samaratungga, seorang raja kerajaan Mataram Kuno yang juga keturunan dari Wangsa Syailendra pada abad ke-8. Keberadaan Candi Borobudur ini pertama kali terungkap oleh Sir Thomas Stanford Rafles pada tahun 1814. Pada saat itu, Candi Borobudur ditemukan dalam kondisi hancur dan terpendam di dalam tanah. Candi yang terdiri dari 10 tingkat ini sebenarnya memiliki tinggi keseluruhan 42 meter. Namun setelah dilakukan restorasi, tinggi keseluruhan candi ini hanya mencapai 34,5 meter dengan luas bangunan candi secara keseluruhan 123 x 123 meter (15.129 m2). Setiap tingkat pada Candi Borobudur ini dari lantai pertama sampai lanyai enam memiliki bentuk persegi, sedangkan mulai dari lantai ke tujuh sampai lantai ke  sepuluh berbentuk bulat.
Candi Borobudur adalah  candi Buddha terbesar pada abad ke-9. Menurut Prasasti Kayumwungan, terungkap bahwa Candi Borobudur selesai dibangun pada 26 Mei 824, atau hampir 100 tahun sejak mulai awal dibangun. Konon nama Borobudur berarti sebuah gunung yang berteras - teras atau biasa juga disebut dengan budhara. Namun ada juga yang mengatakan bahwa Borobudur berarti biara yang terletak di tempat yang tinggi.  
Beberapa ahli mengungkapkan bahwa posisi Candi Borobudur berada pada ketinggian 235 meter diatas permukaan laut. Ini berdasarkan studi dari para ahli Geologi yang mampu membuktikan bahwa Candi Borobudur pada saat itu adalah sebuah kawasan danau yang besar sehingga sebagian besar desa-desa yang berada di sekitar Candi Borobudur berada pada ketinggian yang sama, termasuk Candi Pawon dan Candi Mendut.
Berdasarkan Prasasti tanggal 842 AD, seorang sejarawan Casparis menyatakan bahwa Borobudur merupakan salah satu tempat untuk berdoa. Dimana dalam prasasi tersebut mengandung kata "Kawulan i Bhumi Sambhara" yang berarti asal kesucian dan Bhumi Sambara merupakan nama sebuah sudut di Candi Borobudur tersebut. Setiap lantai pada Candi Borobudur ini mengandung tema yang berbeda - beda karena pada setiap tingkat tersebut melambangkan tahapan kehidupan manusia. Hal ini sesuai dengan ajaran Buddha Mahayana bahwa setiap orang yang ingin mencapai tingkat kesempurnaan sebagai Buddha harus melalui setiap tingkatan kehidupan. Pada setiap lantai di Candi Borobudur terdapat relief - relief yang bila dibaca dengan runtut akan membawa kita memutari Candi Borobudur searah dengan jarum jam.