remote pc via sms menggunakan gammu dan java
DESCRIPTION
SMSTRANSCRIPT
1 | w r i t e n b y : U m b a r a
Sesuai judul modul ini, disini saya akan memberi contoh membuat aplikasi sederhana untuk remote
PC/Laptop via SMS menggunakan Gammu, dan untuk implementasinya saya menggunakan bahasa
pemrograman Java. Sebenarnya ide ini muncul setelah saya bermain-main sedikit dengan Gammu untuk
membuat program SMS gateway, bagi yang belum tau SMS gateway itu apa, disini akan saya beri sedikit
penjelasaan mengenai apa itu SMS gateway.
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
2 | w r i t e n b y : U m b a r a
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 programer 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.
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.
Tapi pada tutorial kali ini saya tidak menjelaskan cara membuat SMS gateway untuk informasi seperti
contoh diatas.
Sedangkan Gammu sendiri adalah sebuah project yang membuat sebuah aplikasi, script dan driver yang
dapat mengatur beberapa fungsi yang ada pada telepon selular atau alat sejenis. Gammu sendiri bekerja
didalam command line atau sebagai daemon (service).
3 | w r i t e n b y : U m b a r a
Dengan menggunakan Gammu kita bisa membuat sebuah simulasi mengirim dan menerima SMS melalui
modem GSM dan sebuah komputer/laptop. Pada tutorial kali ini saya akan membahas mengenai
mensetting Gammu, hingga mengirim SMS. Jadi baca sampai HABIS….!!!
Ruang Lingkup
Dalam pengimplementasian, saya menggunakan :
OS : Windows 8 pro
Database : MySQL versi 5.0 (bundle XAMPP versi 1.8.1)
Modem : Huawei E1750
IDE : Netbeans 7.0 (Java 6)
Gammu : Gammu-1.32.0-Windows (zip)
Instalasi dan Konfigurasi di Windows 8
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/ , download yg versi zip, extract file tsb di drive C, agar
lebih mudah, rubah nama folder menjadi Gammu.
Setelah extract selesai, lalu colokan modem anda dan lihat, kedetect diport berapa modem anda, untuk
mengetahui modem anda kedetect diport berapa, caranya
klik kanan di My Computer -> Manage -> Device Manager.
Untuk lebih jelas bias dilihat di gambar berikut :
4 | w r i t e n b y : U m b a r a
Kalau anda menggunakan modem modem, biasanya untuk informasi port yang terbuka, bisa dilihat di
bagian Ports (COM & LPT) dan ada di PC UI interface, tapi kalau anda menggunakan HP untuk informasi
port nya bisa di lihat dibagian Modems.
Disitu modem saya kedetect di port 26. Setelah selesai melakukan check port, sekarang saatnya kita
konfigurasi Gammu nya.
Perlu diingat, untuk konfigurasi Gammu, itu sudah dipersiapkan filenya, tinggal kita setting untuk
masalah port dan device nya, untuk mencari file konfigurasi gammu, bisa dilihat di file gammurc dan
smsdrc yang ada di PATH_GAMMU\share\doc\gammu\examples\config, lalu copas dan taruh di folder
bin.
Buka gammurc dan ubah arah portnya.
Pake notepad atau Notepad++
tidak perlu diperhatikan semuanya, cek saja pada bagian yang ditebalkan berikut :
[gammu]
port = com26:
connection = at921600
Untuk port nya bisa disesuaikan dengan PC kalian masing-masing
Setelah selesai konfigurasi port, sekarang kita coba untuk identifikasi modem, apakah sudah kedetect
oleh gammu, caranya buka CMD, lalu masuk kefolder Gammu\bin\, dan ketikan gammu –identify
5 | w r i t e n b y : U m b a r a
Kalau konfigurasi gammu tidak ada yang salah, maka saat identifikasi modem akan muncul seperti
gambar diatas. Jika sudah muncul seperti di atas, maka modem anda sudah terintegrasi dengan gammu.
Langkah selanjutnya kita buat database dengan nama “sms”, untuk tabel pada MySQL kita bisa import
dari database bawaan Gammu yang ada dalam direktori hasil ekstrak file .zip gammu yang bernama
“mysql.sql“. file database gammu berada dalam direktori:
C:\Gammu \share\doc\gammu\examples\sql
Setelah database jadi, akan ada table-tabel seperti berikut :
Setelah database selesai dibuat, sekarang kita setting konfigurasi file smsdrc yang ada di folder
gammu\bin\, kita buka file tsb menggunakan notepad/sejenisnya. Di situ nanti akan ada banyak
konfigurasi, tapi tidak semua harus dirubah, kalau hanya untuk mengirim dan menerima SMS lewat
database cukup beberapa saja, untuk contoh nya bisa dilihat seperti berikut :
[gammu]
device = com26
connection = at921600
synchronizetime = yes
startinfo = yes
6 | w r i t e n b y : U m b a r a
[smsd]
# SMSD service to use, one of FILES, MYSQL, PGSQL, DBI
service = SQL #sesuaikan dengan service anda
PIN = 1234
logfile = C:/gammu/bin/loggg.txt
debuglevel = 1
runonreceive = C:/Gammu/bin/bie.bat #event ketika ada SMS masuk
commtimeout = 30
sendtimeout = 30
# Database backends congfiguration
user = root #sesuaikan dengan user database anda
password =
pc = localhost
database = sms
# DBI configuration
driver = native_mysql
untuk Service perlu diperhatikan disini, disitu pilihannya kita disuruh memilih satu, antara FILES, MYSQL, PGSQL dan DBI, berhubung saya menggunakan MYSQL sebagai service, pertama saya tulis MYSQL sebagai servicenya, setelah saya coba, ternyata gagal, lalu coba saya ganti dengan SQL, dan ternyata berhasil, jika kalian mengalami hal yang sama, bisa dicoba seperti cara saya. setelah kita selesai edit file konfigurasi untuk SMS, saatnya kita install service nya. Untuk install service caranya buka CMD, lalu masuk kefolder Gammu\bin\, dan ketikan gammu-smsd –c smsdrc –i
Jika terjadi service error 5 access is denied bla..blaa.. bla..
Bisa dicoba cara berikut :
7 | w r i t e n b y : U m b a r a
1. Klik kanan file yang akan di jalankan di service yaitu gammu-smsd (file tersebut saya simpan di
c:\gammu\bin).
2. Pilih properties, kemudian klik tab Compatibility
3. Klik Change setting for all users
4. Cek di depan Run this program is an administrator
5. Klik Apply dan klik OK
Berikut gambar dan tahapannya…
Setelah selesai sekarang coba ketik lagi gammu-smsd –c smsdrc –i , jika tidak terjadi error maka service
berhasil di install, langkah selanjutnya kita jalankan service tsb dengan perintah
gammu-smsd –c smsdrc –s
8 | w r i t e n b y : U m b a r a
Sekarang bisa dilihat di Task Manager kalau service sedang berjalan
Untuk mematikan service bisa ketik : gammu-smsd –c smsdrc –k
Dan jika anda ingin merubah file konfigurasi gammu baik itu file smsdrc/gammurc anda harus
uninstall service tsb dahulu lalu install baru menjalankannya lagi, untuk uninstall bisa ketik :
gammu-smsd –c smsdrc –u
Sampai tahap ini sebenarnya kita sudah bisa mengirim SMS, sekarang bisa kita coba.
Pada dasarnya ada 2 cara mengirim SMS menggunakan Gammu. Cara pertama menggunakan gammu itu
sendiri dengan menggunakan parameter “–sendsms”. Cara kedua adalah menggunakan “gammu-smsd-
inject”. Lantas dimana perbedaannya?. Cara pertama hanya mengirim pesan ke nomor tujuan tanpa
disimpan pesannya di database. Untuk contoh sederhana sekarang kita gunakan cara pertama dulu,
untuk cara kedua saat implementasi menggunakan java nanti.
9 | w r i t e n b y : U m b a r a
Cara Pertama
Ketik di CMD sebagai berikut :
gammu --sendsms TEXT NO_HP_TUJUAN -text "PESAN"
contoh :
*jangan lupa.!! Jika ingin menggunakan gammu cara pertama, service harus dimatikan dulu, karena
service itu hanya digunakan dalam mode pengiriman SMS menggunakan mode SMSD.
Bisa dilihat SMS sudah terkirim kenomor tujuan.
10 | w r i t e n b y : U m b a r a
Sekarang kita implementasi imaganisi kita kedalam kode java, waktunya coding
Seperti biasa, buka Netbeans lalu buat project baru, beri nama terserah kalian.
Setelah selesai, buat 1 class bernama main Jangan lupa tambahkan juga library mysql, karena kita nanti
akan akses database menggunakan java, cukup 1 library saja, karena kita murni menggunakan JDBC
tanpa menggunakan Framework.
Setelah selesai, sekarang kita rubah file main yang tadi kita buat seperti ini :
11 | w r i t e n b y : U m b a r a
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package umbara.dhit.gammu; import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; import java.io.IOException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.swing.JOptionPane; /** * * @author Radhitee */ public class main { static Connection kon; public static Connection getKon() { if (kon == null) { MysqlDataSource data = new MysqlDataSource(); data.setURL("jdbc:mysql://localhost:3306/sms"); data.setPort(3306); data.setDatabaseName("sms"); data.setUser("root");//sesuaikan user database data.setPassword("");//sesuaikan password database try { kon = data.getConnection(); } catch (SQLException ex) { ex.printStackTrace(); } } return kon; } public static void main(String[] args) throws SQLException, IOException { JOptionPane.showMessageDialog(null, "Aplikasi dijalankan..."); Connection con = getKon(); String nomer, pesan; int id; String sql = "SELECT * FROM inbox WHERE processed = 'false'"; Statement statement = con.createStatement(); ResultSet resultSet = statement.executeQuery(sql);
12 | w r i t e n b y : U m b a r a
while (resultSet.next()) { id = resultSet.getInt("ID"); nomer = resultSet.getString("SenderNumber"); pesan = resultSet.getString("TextDecoded"); if (pesan.equals("shutdown")) { String sqll = "UPDATE inbox SET Processed = ? WHERE ID = ?"; PreparedStatement p = con.prepareStatement(sqll); p.setString(1, "true"); p.setInt(2, id); p.executeUpdate(); /*jangan lupa mengubah field processed menjadi true * agar membedakan mana sms yang sudah diproses dengan yg belum */ JOptionPane.showMessageDialog(null, "Komputer akan segera shutdown"); Process proc = Runtime.getRuntime().exec("Shutdown -s -t \"03\""); } else if (pesan.equals("restart")) { String sqll = "UPDATE inbox SET Processed = ? WHERE ID = ?"; PreparedStatement p = con.prepareStatement(sqll); p.setString(1, "true"); p.setInt(2, id); p.executeUpdate(); JOptionPane.showMessageDialog(null, "Komputer akan segera shutdown"); Process proc = Runtime.getRuntime().exec("Shutdown -r -t \"03\""); }else{ /*Jika SMS yg dikirim tidak berupa format yang ditentukan * maka gammu akan membalas kenomor tsb bahwa format salah */ String sqll = "UPDATE inbox SET Processed = ? WHERE ID = ?"; PreparedStatement p = con.prepareStatement(sqll); p.setString(1, "true"); p.setInt(2, id); p.executeUpdate();
String sql1 = "INSERT INTO outbox(DestinationNumber, TextDecoded, creatorID)VALUES(?,?,?)"; p = con.prepareStatement(sql1); p.setString(1, nomer); p.setString(2, "Format SMS salah"); p.setString(3, "Gammu"); p.executeUpdate(); } } } }
Setelah kita rubah source code diatas, saatnya kita clean and build agar bisa membentuk file .jar
13 | w r i t e n b y : U m b a r a
Klik kanan diproject kita, lalu pilih clean and build
Jika tidak ada yang error, file jar akan terbentuk di folder dist yang ada di netbeans project kalian.
Copy file jar tersebut kedalam folder C:\Gammu\bin\ ,
Jika sudah selesai sekarang kita buat file batch , file batch ini nantinya yang akan di jalankan gammu
ketika ada SMS masuk, batch file sendiri sebenarnya hanya sekumpulan perintah sederhana untuk
menjalankan sebuah program, kalau dilinux ini seperti sh, dalam batch file ini kita jalankan aplikasi yang
kita buat menggunakan netbeans tadi.
Untuk membuat batch file, caranya buka Notepad, lalu ketikan Script berikut :
@echo off
java -jar "C:\Gammu\bin\RemotePC.jar"
14 | w r i t e n b y : U m b a r a
Setelah selesai, kita save file tsb dengan nama bie.bat , jangan lupa saat menyimpan file tsb pilih all files
Lalu simpan file tsb di folder C:\Gammu\bin\
Masih ingat dengan file smsdrc yang kita edit tadi diawal, didalam file tsb terdapat parameter
runonreceive, di file tsb kita mengisi dengan runonreceive=C:\Gammu\bin\bie.bat
Runonreceive adalah bawaan Gammu, di runonreceive kita bisa setting agar terjadi suatu
event/menjalankan program jika ada SMS masuk, dikonfigurasi yang kita buat jika ada SMS masuk maka
Gammu akan menjalankan program bie.bat yang sudah kita buat.
Sampai disini aplikasi kita sudah selesai, jika ingin menjalankan aplikasi ini kita jalankan dulu service nya,
karena di aplikasi ini kita menjalankan lewat mode SMSD milik Gammu.
Setelah Aplikasi berjalan, sekarang coba anda kirim SMS ke nomor modem yang anda digunakan
sebagai terminal, dengan format shutdown dan restart, lihat apa yang akan terjadi.
Di aplikasi ini saya hanya menjalankan perintah sederhana untuk shutdown dan restart PC anda, jika
anda ingin lebih silahkan kreasikan sendiri, tehniknya sama saja.
SILAHKAN KREASIKAN IMAGINASI ANDA… HAPPY CODING…
Sekian dari saya, semoga tutorial kali ini bermanfaat..
Profile penulis : www.facebook.com/radhitee