Short Message Service (SMS) merupakan salah satu fitur GSM yang dikembangkan dan distandarisasi oleh ETSI. Pada proses pengiriman SMS dari handphone, SMS tersebut tidak langsung dikirim ke handphone tujuan, tetapi terlebih dahulu dikirim ke SMS center (SMSC), kemudian dengan sistem store and forward SMS tersebut dikirimkan ke hadphone tujuan.
Pengirim
SMSC
Penerima
Dengan keberadaan SMSC kita dapat mengetahui status SMS, apakah sudah terkirim atau gagal terkirim. Jika handphone tujuan dalam keadaan aktif dan berada dalam jangkauan, maka handphone tersebut mengirim konfirmasi ke SMSC bahwa SMS telah diterima, sebaliknya jika handphone tujuan mati atau di luar jangkauan, maka SMS akan disimpan di SMSC sampai periode validitas terpenuhi. Jika sampai periode validitas terpenuhi, SMSC akan mengirimkan pesan ke handphone pengirim bahwa SMS gagal dikirimkan
Dalam pengiriman/penerimaan SMS ada dua mode yakni mode PDU (Protocol Data Unit) dan mode teks. Mode PDU merupakan format pesan dalam bentuk oktet heksadesimal dan oktet semidesimal dengan panjang mencapai 160 karakter (7 bit) atau 140 karakter (8 bit). Mode teks merupakan hasil pengkodean PDU. Pada pengiriman SMS ada 2 mobile, yakni mobile terminated (Handphone penerima) dan mobile originated (Handphone pengirim)
SMS yang dikirim oleh terminal masih dalam bentuk teks, sedangkan pada pengiriman ke SMSC harus dalam bentuk PDU, oleh karena itu, terminal (HP) mengubah format text ke PDU (encodec). Skema SMS PDU pengirim telah diatur oleh ETSI sebagai berikut: PDU MR DA PID DCS VP UDL UD Type Misalnya kita akan mengirim SMS ke 6281510093290 dengan isi pesan Budi Luhur, dengan batas waktu pengiriman 5 hari, maka format PDU-nya adalah: SCA
0011000C912618150039920000AB0C0C3A 390E62D6D175F9DA0E
SCA adalah alamat (nomor) SMSC. SCA memiliki 3 komponen yaitu: Len Panjang informasi SMSC dalam oktet Hasil : 00 Type of number Nomor dari SMSC 81h = format lokal 91h = format internasional Dalam pengiriman SMS nomor SMS tidak dicantumkan Service center number Nomor SMSC operator pengirim Jika panjangnya ganjil maka karakter terakhir ditambahkan OFh Pada pengiriman SMS nomor SMSC operator pengirim tidak dicantumkan
PDU type
Nilai default PDU type adalah 11 hexa (00010001 binary) yang memiliki arti:
No bit Nama Nilai 7 RP 0 6 UDHI 0 5 SRR 0 4 VPF 1 3 VPF 0 2 RD 0 1 MTI 0 0 MTI 1
RP
: Replay Path : User Data Header Indicator : Status Report Request : Validity Period Format : Reject Duplicates : Message Type Indicator
UDHI
SRR
VPF
RD
MTI
Message Reference adalah acuan dari pengaturan pesan SMS. Untuk membiarkan pengaturan SMS diatur sendiri oleh handphone tujuan, maka nilai yang diberikan adalah 00 Destination Address adalah nomor tujuan, yang terdiri dari len, type of number dan nomor tujuan.
Len menunjukkan panjang nomor tujuan Type of number menunjukkan format dari nomor tujuan
Nomor tujuan adalah alamat (nomor) handphone yang akan dikirim SMS
Protocol Identifier (PID) adalah format dari pengiriman pesan, biasanya diatur oleh handphone, apakah pesan berupa Text, Fax, E-mail, telex dan lain-lainl. Nilai default dari PID adalah 00 yang berarti pesan yang dikirim berupa teks standar. Data Coding Sceme adalah rencana dari pengkodean data untuk enentukan SMS yang akan dikirim apakah berupa SMS teks standar, bliking SMS, atau flash SMS. Nilai default DCS adalah 00 yang menunjukkan bahwa SMS yang dikirim berupa teks standar.
Validity period adalah lama waktu pesan SMS disimpan di SMSC apabila pesan tersebut gagal diterima oleh handphone penerima
Waktu VP 5 menit 720 menit (12 jam) 12.5 jam 24 jam 2 30 hari Lebih dari 4 minggu Nilai VP (waktu VP/5)-1 143 + ((waktu VP 12)*2) 166 + waktu VP 192 + waktu VP
User Data Length adalah panjang pesan SMS yang akan dikirim dalam bentuk teks standard
User Data adalah isi pesan yang akan dikirim dalam format heksadesimal. Pengkodean dari teks standar ke format heksadesimal dilakukan dengan bantuan default alphabet yang dibakukan oleh ETSI GSM, seperti pada tabel di slide berikut.
User Data
Desimal 0 1 2 LF OR 0 1 2 3 4 5 6 7 8 9
3
4 5 6 7 ( 2 < F ) 3 = G
SP
* 4 > H
!
+ 5 ? I
, 6 @ J
#
7 A K
$
. 8 B L
%
/ 9 C M
&
0 : D N
1 ; E O
8
9 10 11 12
P
Z d n x
Q
[ e o y
R
\ f p z
S
] g q {
T
^ h R |
U
_ i s }
V
` J t ~
W
a K u Del
Q
b l v
Y
c m W
SMS PDU penerima adalah terminal menerima pesan yang masuk dari SMSC ke handphone dalam format PDU. Setelah pesan diterima dalam format PDU, handphone akan melakukan pengkodean pesan (decodec) menjadi format teks. Cara pengkodean format PDU sudah diatur dan distandarkan oleh ETSI, sebagai berikut:
SCA PDU Type OA PID DCS SCTS UDL UD
SCA adalah alamat (nomor) SMSC. SCA memiliki 3 komponen yaitu: Len Panjang informasi SMSC dalam oktet Hasil : 00 Type of number Nomor dari SMSC 81h = format lokal 91h = format internasional Service center number Nomor SMSC operator pengirim Jika panjangnya ganjil maka karakter terakhir ditambahkan OFh Beberapa service center number: Satelindo = 62816124 (PDU = 26181642) Telkomsel = 6281100000 (PDU = 2618010000) Excelcom = 62818445009 (PDU = 26184854009) IM3 = 62855000000 (PDU = 26580500000)
PDU type
Nilai default PDU type untuk SMS-deliver adalah 04 hexa (00000100) binary) yang memiliki arti:
No bit Nama Nilai 7 RP 0 6 UDHI 0 5 SRI 0 4 <00> 0 3 <00> 0 2 MMS 1 1 MTI 0 0 MTI 0
RP : Replay Path Alur yang menunjukkan bahwa ada alur jawaban UDHI : User Data Header Indicator Bernilai 1 jika SMS menggunakan judul SRI : Status Report Indication Bernilai 1 jika laporan status laporan akan dikembalikan MMS : More Message to Send Bernilai 1 jika ada pesan lebih yang akan dikirim MTI : Message Type Indicator Bernilai 0 menunjukkan bahwa PDU ini adalah SMS-DELIVER
OA adalah nomor pengirim yang terdiri dari len, type of number dan nomor tujuan.
Len menunjukkan panjang nomor tujuan Type of number menunjukkan format dari nomor tujuan
Nomor tujuan adalah alamat (nomor) handphone yang akan dikirim SMS
Protocol Identifier (PID) adalah format dari pengiriman pesan, biasanya diatur oleh handphone, apakah pesan berupa Text, Fax, E-mail, telex dan lain-lainl. Nilai default dari PID adalah 00 yang berarti pesan yang dikirim berupa teks standar. Data Coding Sceme adalah rencana dari pengkodean data untuk enentukan SMS yang akan dikirim apakah berupa SMS teks standar, bliking SMS, atau flash SMS. Nilai default DCS adalah 00 yang menunjukkan bahwa SMS yang dikirim berupa teks standar.
Service Center Time Stamp (SCTS), User Data Length (UDL) & User Data (UD)
SCTS adalah waktu dari penerimaan pesan oleh SMSC penerima. SCTS terdiri atas tahun (yy), bulan (MM), tanggal (dd), jam (hh), menit (mm), detik (ss) serta zone waktu.
Contoh : Jika SMS diterima pada 07 Maret 2008 jam 15.30.12 WIB maka SCTS bernilai 80307051032182 82 => time zone = 28 unit, 1 unit = 15 menit, maka 28 unit = 28*15/60 = 7 jam, sehingga menjadi GMT + 07.00 = WIB User Data Length adalah panjang pesan SMS yang diterima dalam bentuk teks standard User Data (UD) adalah pesan yang diterima dalam format heksa desimal
Mengenal AT Command
Sebelum membuat program kita akan melakukan koneksi handphone dengan komputer, hal ini bertujuan apakah kabel dan handphone terhubung dengan baik dengan komputer.
Mengenal AT Command
AT Command AT Keterangan Mengecek koneksi HP ke PC
AT+CMGF
AT+CSCS AT+CPMS AT+CMGL AT+CMGS AT+CMGR AT+CMGD
AT+CNMI
Mendeteksi Kode HP
AT+CMGF=mode
Enter
Nama
Mode
Keterangan
Mode & format terminal 0 = format mode PDU 1 = format mode teks Mendukung / Tidak mendukung mode yang ditentukan
OK/ERROR
AT+CSCS=chset
Enter
Nama
chset
Keterangan
Jenis encoding yang digunakan
OK/ERROR
AT+CMGL=stat
Enter
Indeks
OK/ERROR
Nama Indeks
OK/ERROR
AT+CMGS=lenPDU
00+isiPDU
Enter
Ctrl+z
>
+CMGS: mr OK/ERROR
Nama
Keterangan
lenPDU isiPDU Mr
OK / ERROR
Kita akan mencoba mengirim pesan SMS ke nomor +628151009329 dengan isi Budi Luhurku dengan waktu validitas 5 hari. Setelah mengubah pesan ke format PDU, hasilnya adalah : 0011000C912618150039920000AB0C0C3A390E62D6D175F9D A0E yang terdiri dari 50 karakter (oktet 00 di awal tidak dihitung) atau 25 oktet Buka HiperTerminal dan lakukan koneksi dengan komputer, lalu ketik AT kemudian enter. Jika responsnya OK, lanjutkan dengan mengetik AT+CMGF=0 untuk mengetahui apakah terminal mendukung format PDU atau tidak. Jika responsnya OK lanjutkan dengan mengetik AT+CMGS=25 lalu enter, maka akan muncul >. Ketik isi PDU yang diperoleh yaitu: 0011001c91261850039920000AB0C0C3A390E62D6D175F9DA0 E, lalu tekan Ctrl+z Jika pengiriman SMS berhasil, maka respons yang didapat adalah +CMGS: mr OK
Merancang arsitektur pada awal pembangunan suatu sistem merupakan hal yang penting. Dengan rancangan sistem yang baik maka suatu sistem juga akan memiliki konstruksi dan pengolahan data yang tepat dan akurat. Arsitektur alat dalam program utama SMS Server: Komputer yang memiliki port COM Handphone dan kabel data yang sesuai Arsitektur sistem dalam program utama SMS Server: SMS dikirim oleh pengguna (client) ke nomor SMS Server SMS Server menerima pesan yang masuk kemudian melakukan query ke database, sesuai dengan isi pesan Hasil query dari database kemudian dikirim ke SMS Server SMS server mengirim hasil dari database ke nomor client
Proses-proses yang terdapat dalam SMS Server : SMS server akan melakukan koneksi dengan database Program utama SMS server akan menerima pesan dari client secara otomatis SMS Server membaca dan menghapus pesan dari SIM Card. SMS Server akan mengubah pesan dari format PDU ke format text. Pada proses ini data yang diambil adalah nomor telepon pengirim dan isi pesan. Lalu, data disimpan ke tabel terimasms dengan status Belum Diproses. SMS Server mengambil data dari tabel terimasms yang statusnya Belum Diproses, lalu memeriksa apakah kode yang diterima sesuai atau tidak. Jika sesuai maka proses dilanjutkan, sebaliknya jika tidak sesuai maka SMS akan mengirim pesan kesalahan ke nomor client, dan kemudian mengubah status menjadi Sudah Diproses pada tabel terimasms. Jika proses berlanjut, SMS Server akan melakukan query ke database untuk mengambil data-data yang diperlukan, dan kemudian menyimpannya ke tabel kirimsms dengan status Belum Dikirim
SMS Server akan selalu mengambil data pada tabel terimasms dan kirimsms yang statusnya belum diproses dan belum dikirim SMS Server akan mengubah pesan SMS yang akan dikirim dari format text ke format PDU. SMS Server akan mengubah status pada tabel kirimsms menjadi Sudah Dikirim
Pada J2SDK belum disediakan fasilitas untuk hubungan dengan serial port, sehingga kita perlu menambahkan paket kelas untuk hubungan dengan serial port. Nama paket kelas tersebut adalah Java Communication Port, yang dapat didownload di : http://java.sun.com/product/javacomm Cara instalasinya adalah: Extract javacomm20-win32.zip ke direktori sementara Copy file win32com.dll ke direktory bin di tempat instalasi J2SDK. Copy comm.jar dan javac.comm.properties ke directory lib di tempat intalasi J2SDK Tambahkan comm.jar pada CLASSPATH, salah satu caranya dengan mengetik di command prompt: SET CLASSPATH = C:\j2sdk1.4.2\lib\comm.jar;%classpath%
Dalam format PDU ada bagian dimana bilangan desimal diubah hanya dengan membalikkan karakter, misalnya pada penulisan nomor telepon, time stamp, dll. Contoh: nomor telepon 6281510093290, akan diubah menjadi 621815003992F0 (ingat jika jumlah karakter nomor telepon ganjil maka ditambahkan F)
Format PDU adalah bentuk pesan dalam heksadesimal. Sehingga kita perlu membuat methode untuk mengubah dari basis desimal ke basis heksadesimal. Cara mengkonversi bilangan desimal ke heksadesimal adalah dengan cara membagi bilangan desimal dengan 16 sebagai digit pertama dan sisa pembagian sebagai digit kedua. Contoh: 165d jika dibagi dengan 16 hasilnya adalah 10 (Ah) dan sisa pembagiannya adalah 5. Jadi 165d = A5 h Karakter I = bilangan_desimal / 16 Karakter II = bilangan_desimal % 16 Pada perubahan karakter menjadi heksadesimal bilangan tertinggi adalah 255 atau 11111111 b.
Pada format PDU penerima adalah perubahan pesan PDU ke text. Dalam format PDU penerima terdapat User Data (isi pesan SMS), proses pengubahan User Data dari format heksadesimal menjadi text sering disebut dengan istilah encoding. Proses encoding adalah mengubah bilangan heksadesimal menjadi 8 bit bilangan biner kemudian diubah lagi menjadi 7 bit bilangan biner yang kemudian dikonversi dengan sistem ASCII untuk mendapatkan bentuk text atau karakter. Contoh: D3E614 jika diubah menjadi text adalah sbb: Heksa 8 bit D3 11010011 E6 11100110 14 00010100 .
7 bit
Decimal Karakter
1010011
83 S
1001101
77 M
1010011
83 S
0000000
0 null
Untuk PDU pengirim, proses yang terjadi adalah mengubah format text ke format heksadesimal. Proses ini merupakan kebalikan dari proses PDU penerima. Proses ini sering disebut decodec. Proses decodec adalah mengubah format menjadi karakter ke tujuh bit biner, kemudian mengubah 7 bit biner ke 8 bit biner, dan terakhir mengubah 8 bit biner ke heksadesimal. Contoh: mengubah text SMS menjadi heksadesimal. Text S M S Decimal 83 77 83 Septet (7 bit) Oktet (8 bit) Heksa 1010011 1001101 1010011 11010011 11100110 00010100 D3 E6 14
Setiap SMS yang masuk masih dalam bentuk PDU yang terditi dari bagian-bagian yang telah diatur oleh ETSI. Dalam mengubah format PDU menjadi text yang perlu diperhatikan adalah banyaknya digit dari setiap bagian, karena kita hanya akan mengambil nomor pengirim dan pesan SMS saja, sedangkan nilai-nilai yang lain diabaikan. Nomor pengirim terdapat dalam Originatir Address (OA) dan pesan SMS terdapat dalam User Data (UD). Adapun bagian-bagian dari pesan SMS PDU adalah: SCA (Service Number Addres)
PDU Type
PDU Type 2 digit Len 2 digit Type 2 digit Number (nilai len) digit ------- akan diambil PID 2 digit DCS 2 digit SCTS 14 digit
OA (Orogonator Address)
UDL 2 digit
Akhir UDL sampai akhir PDU
UD (User Data)
Mengambil nilai informasi SMSC yang terdiri atas panjang, tipe dan nomor SMSC Membuang nilai PDU Type, banyaknya digit yang dibuang adalah 2 digit. Mengambil panjang nomor telepon (len) pengirim yang dipakai untuk mengambil nomor telepon pengirim, jumlah digit yang diambil sesuai dengan nilai dari panjang nomor telepon (len). Membuang tipe nomor telepon, banyaknya 2 digit, sehingga diperoleh nomor telepon pengirim. Membuang PID (2 digit), DCS (2 digit), SCTS (14 digit), sehingga jumlah digit yang dibuang adalah 18 digit. Mengambil panjang pesan untuk keperluan encodec. Membuang nilai UDL dan mengambil isi pesan PDU lalu diubah ke format text..
Pesan SMS yang akan dikirimkan dari terminal masih berupa text, padahal setiap SMS yang akan dikirim harus berupa PDU. Sebelum melakukan pengiriman pesan ke terminal, pesan SMS harus diubah terlebih dahulu ke format PDU. Jika pada pengubahan PDU menjadi text, ada digitdigit yang dibuang, maka pada proses pengubahan text menjadi PDU adalah sebaliknya yakni menambahkan digit-digit yang diperlukan
Tambahkan pada pesan PDU nilai default dari PDU Type yakni 11, dan nilai default dari MR (Message Reference) yakni 00. Tambahkan pada pesan PDU nilai panjang nomor telepon pengirim (len), lalu tambahkan nilai tipe nomor telepon yakni 91. Tambahkan nomor telepon pengirim (balik karakter), jika panjang nomor pengirim ganjil maka tambahkan F dibelakang digit terakhir. Tambahkan nilai default PID (00) dan DCS (00). Tambahkan nilai VP (validity period). Tambahkan panjang pesan (jumlah digit pesan SMS dalam bentuk text) dalam bentuk heksa desimal. Tambahkan nilai pesan dalam bentuk heksa desimal.