remote pc via sms menggunakan gammu dan java

14
1 | writen by :Umbara 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

Upload: rio-ardian

Post on 14-Jul-2016

75 views

Category:

Documents


23 download

DESCRIPTION

SMS

TRANSCRIPT

Page 1: Remote PC via SMS Menggunakan Gammu Dan Java

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

Page 2: Remote PC via SMS Menggunakan Gammu Dan Java

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).

Page 3: Remote PC via SMS Menggunakan Gammu Dan Java

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 :

Page 4: Remote PC via SMS Menggunakan Gammu Dan Java

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

Page 5: Remote PC via SMS Menggunakan Gammu Dan Java

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

Page 6: Remote PC via SMS Menggunakan Gammu Dan Java

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 :

Page 7: Remote PC via SMS Menggunakan Gammu Dan Java

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

Page 8: Remote PC via SMS Menggunakan Gammu Dan Java

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.

Page 9: Remote PC via SMS Menggunakan Gammu Dan Java

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.

Page 10: Remote PC via SMS Menggunakan Gammu Dan Java

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 :

Page 11: Remote PC via SMS Menggunakan Gammu Dan Java

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);

Page 12: Remote PC via SMS Menggunakan Gammu Dan Java

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

Page 13: Remote PC via SMS Menggunakan Gammu Dan Java

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"

Page 14: Remote PC via SMS Menggunakan Gammu Dan Java

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