.bmp)
SMS (Short Messaging Services) Data SMS (Short Messaging Services) yang kita kirim atau yang kita terima sebenarnya memiliki format tersendiri untuk dapat diterjemahkan oleh sebuah mobile phone. Format atau mode yang dipakai untuk mengirim dan menerima SMS sebenarnya ada dua yaitu mode text dan mode PDU (Protocol Data Unit). Akan tetapi, sistem mode text tidak didukung oleh semua operator GSM maupun terminal.
1. Text Mode Mode ini adalah cara termudah untuk mengirim pesan. Pada mode teks pesan yang kita kirim tidak dilakukan konversi. Teks yang dikirim tetap dalam bentuk aslinya dengan panjang mencapai 160 (7 bit default alphabet) atau 140 (8 bit) karakter. Sesungguhnya, mode teks adalah hasil encode yang direpresentasikan dalam format PDU. Kelemahannya, kita tidak dapat menyisipkan gambar dan nada dering ke dalam pesan yang akan dikirim serta terbatasnya tipe encoding.
2. PDU (Protocol Data Unit) Mode PDU mode adalah format message dalam heksadesimal octet dan semi-desimal octet dengan panjang mencapai 160 (7 bit default alphabet) atau 140 (8 bit) karakter. Kelebihan menggunakan mode PDU adalah kita dapat melakukan encoding sendiri yang tentunya harus pula didukung oleh hardware dan operator GSM, melakukan kompresi data, menambahkan nada dering dan gambar pada pesan yang dikirim. Beberapa tipe encoding yang umum digunakan adalah “PCCP437”, “PCDN”, “8859-1”, “IRA” dan “GSM”. Kita juga dapat menambahkan header ke dalam pesan yang akan dikirim, seperti timestamp, nomor SMSC dan meta-informasi lainnya. 2.1.1 Sistem Kerja SMS Pada saat kita mengirim pesan SMS dari handphone (mobile originated) pesan tersebut tidak langsung dikirim ke handphone tujuan (mobile terminated), akan tetapi dikirim terlebih dahulu ke SMS Center (SMSC), baru kemudian pesan tersebut diteruskan ke handphone tujuan.
Dengan adanya SMSC ini dapat mengetahui status dari pesan SMS yang telah dikirim, apakah telah sampai atau gagal diterima oleh handphone tujuan. Apabila handphone tujuan dalam keadaan aktif dan dapat menerima pesan SMS yang dikirim, ia akan mengirim kembali pesan konfirmasi ke SMSC yang menyatakan bahwa pesan telah diterima. Kemudian SMSC mengirimkannya kembali status tersebut kepada si pengirim. Jika handphone dalam keadaan mati, pesan yang dikirimkan akan disimpan pada SMSC sampai period-validity terpenuhi. 2.1.2 Koneksi ke SMSC Untuk dapat mengirim dan menerima pesan, kita harus melakukan koneksi ke SMSC. Ada beberapa cara untuk melakukan koneksi ke SMSC antara lain : · Menggunakan terminal baik berupa GSM modem atau handphone. Cara ini adalah yang paling mudah tetapi memiliki kekurangan antara lain jumlah pesan yang dikirim per menit sangat terbatas (sekitar 6-10 pesan per menit). Untuk mengantisipasi hal ini biasanya digunakan lebih dari satu terminal.
· Koneksi langsung ke SMSC Dengan melakukan koneksi langsung ke SMSC kita dapat mengirim pesan dalam jumlah banyak, dapat mencapai sekitar 600 SMS per menit bergantung pada kapasitas dari SMSC itu sendiri. Untuk melakukan koneksi ke SMSC diperlukan protocol penghubung. Protocol yang umum digunakan adalah UCP, SMPP, CIMD2, OIS dan TAP. Masing–masing operator GSM menyediakan tipe protocol yang berbeda-beda.
· Menggunakan software Bantu Saat ini banyak vendor telekomunikasi menawarkan software bantu untuk melakukan koneksi ke SMSC, dari yang bersifat freeware, open source sampai dengan yang komersial. Pemilihan koneksi ke SMSC biasanya disesuaikan dengan jumlah pesan SMS yang akan dikirim. Gambar dibawah ini menunjukkan skema tipe koneksi ke SMSC.
2.1.3 Mode Pengiriman dan Penerimaan SMS dengan PDU
Data yang mengalir ke atau dari SMS-Center harus berbentuk PDU (Protokol Data Unit). PDU berisi bilangan-bilangan heksadesimal yang mencerminkan bahasa I/O. PDU berisi atas beberapa header. Header untuk kirim SMS ke SMS-Center berbeda dengan SMS yang diterima dari SMS-Center.
A. PDU untuk kirim SMS ke SMS-Center Terdapat delapan header untuk mengirim SMS, yaitu : 1. Nomor SMS-Center Header pertama ini terbagi atas tiga subheader, yaitu :
a. Jumlah pasangan Heksadesimal SMSC dalam bilangan heksa
b. National/International code
* untuk National, kode subheader-nya yaitu 81
* untuk International, kode subheader-nya yaitu 91
c. No SMS-Center-nya sendiri, dalam pasangan heksa dibalik-balik. Jika tertinggal satu angka heksa yang tidak memiliki pasangan, angka tersebut akan dipasangkan dengan huruf F didepannya. Contoh : untuk nomor SMSC Excelcom 62818445009 dapat diubah menjadi
a. 07 --> ada 7 pasang
b. 91 --> 1 pasang
c. 26-18-48-54-00-F9 --> 6 pasang
Digabung menjadi : 07912618485400F9
1. Telkomsel 62811000000 07912618010000F0
2. Satelindo 62816125 059126181652
3. Exelcom 62818445009 07912618485400F9
4. Indosat-M3 62855000000 07912658050000F0
2. Tipe SMS
Untuk SEND tipe SMS = 1. Jadi bilangan heksanya adalah 01.
3. Nomor Referensi SMS
Nomor referensi ini dibiarkan dulu 0, jadi bilangan heksanya adalah 00. Nanti akan diberikan nomor referensi otomatis oleh ponsel atau alat SMS gateway.
4. Nomor Ponsel Penerima
a. Jumlah bilangan desimal nomor ponsel yang dituju dalam bilangan heksa.
b. National/International code * untuk National, kode subheader-nya yaitu 81 * untuk International, kode subheader-nya yaitu 91
c. Nomor ponsel yang dituju, dalam pasangan Heksa dibalik-balik. Sama dengan cara penulisan subheader SMSC.
Contoh : untuk nomor ponsel yang dituju = 628129573337 dapat diubah menjadi
a. 0C à ada 12 angka
b. 91 c. 26-18-92-75-33-73 Digabung menjadi 0C91 261892753373
5. Bentuk SMS, antara lain : 0 à 00 à dikirim sebagai SMS
1 --> 01 --> dikirim sebagai telex
2 -->02 --> dikirim sebagai fax 6. Skema Encoding Data I/O Ada dua skema, yaitu :
a. Skema 7 bit à ditandai dengan angka 0 -->00
b. Skema 8 bit à ditandai dengan angka lebih besar dari 0 à diubah ke heksa Kebanyakan ponsel atau SMS gateway yang ada di pasaran sekarang menggunakan skema 7 bit.
7. Jangka Waktu Sebelum SMS Expired
Agar SMS kita pasti terkirim sampai ke ponsel penerima, sebaiknya kita tidak memberikan batasan waktu validnya.
8. Isi SMS
Header ini terdiri atas dua subheader, yaitu :
a. Panjang isi (jumlah huruf dari isi)
Misalnya : untuk kata “hello” --> ada 5 huruf --> 05
b. Isi berupa pasangan bilangan heksa
· Untuk ponsel/SMS gateway berskema encoding 7 bit, jika kita mengetikkan suatu huruf dari keypad-nya, berarti kita telah membuat 7 angka 1/0 berurutan.
Ada dua langkah yang harus dilakukan untuk mengkonversi isi SMS, yaitu :
1. mengubah menjadi kode 7 bit, contoh kata “hello”
bit 7 1
h -->110 1000
e -->110 0101
l --> 110 1100
l --> 110 1100
o --> 110 1111
mengubah kode 7 bit menjadi 8 bit, yang diwakili oleh pasangan heksa. E 8
h 1 110 1000 3 2
e 00 11 0010 9 B
l 100 1 1011 F D
l 1111 1101 0 6
o 0000 0 110
Dengan demikian kata “hello” hasil konversinya E8329BFD06
Menggabungkan kedelapan header untuk mengirim kata “hello” ke ponsel nomor 628129573337 lewat SMS-Center Excelcom, tanpa membatasi jangka waktu valid, maka PDU lengkapnya adalah : 07912618485400F901000C9126189275337300000E8329BFD06
Bersambung.............................
Technorati Profile
Wah tambah keren ae javane, kapan2 saya di ajari ya.
ReplyDeleteOh ya pren sekarng wis gak ngajar ya
@mbahsomo, biasa aja mas! masih ngajar kok cuma hari jumat mlm aja!
ReplyDeletesippppppppp
ReplyDeleteSip ni Post juga ya di bosojava.blogspot.com
ReplyDeletemas kok source code nya susah di unduh yah? gagal terus,, ada alternative lain gak selain di share lewat ziddu,,,pliss ya mas,,,ditanggepi komen sy,,
ReplyDelete@Rany, Mohon maaf mbak! saya akan siapkan link baru.
ReplyDeleteThank's a lot ya mas Rachmad,, udah bisa di unduh filenya,,
ReplyDeletemas,ada cara lain ga? pengiriman pesan yg bsa merestart HP,tlng ksh tau dong?.snlmnya tank's ya?
ReplyDeletehai rany bleh tau g?.km dr mna?.
ReplyDelete@andri, Untuk yang tu jangan de! ntar seluruh HP temen kamu restart semua!!!!
ReplyDeleteMas, file nya pas di download ga bisa di ekstrak, rusak, ada yg corup, boleh minta yg baru ga
ReplyDeleteMas, saya ingin tanya seumpama dibuat menjadi autoreplay agar dapat menerima inputan dari pengirim yang format inputan seperti beberapa kali objek yang dibatasi dengan koma(misal buku1,buku2) bagaimana??
ReplyDeleteMohon Bantuannya
Thanks
Mudah saja mas tinggal parser aja isi sms nya. misal separator yang dipake untuk pemisa pesan " , " (koma). contoh pesan = "buku1,buku2";
ReplyDeletejava.util.regex.Pattern pattern = Pattern.compile(","); --> kalo . ya tinggal diganti dengan "."
String[] hasil = pattern.split(pesan.trim());
hasil[0] berisi buku1
hasil[1] berisi buku2
nah tinggal di olah sesuai kebutuhan.
Thanks mas saya coba dulu.
ReplyDeleteTrus pada baris 154-159 spt kirimAT("AT" + "\15", 1250); // Apakah terminal telah siap
kirimAT("AT+CMGF=0" + "\15", 1250); // Menetapkan Format PDU Mode
apakah maksud "\15",1250 kok bisa langsung print OK??
Terima Kasih
"\15" --> utuk mengeksekusi at command, sprt menekan enter. sdgng 1250 merupakan delai untk menunggu hingga at briktnya di eksekusi. lama trgntung respon hardware
ReplyDeleteMas dari kondisi diatas, bagaimana jika orang tidak harus sms 2 buku tetapi 1 atau sampai 3 buku dan lebih. bagaimana mana mas karena cara diatas hanya bisa sms 2 buku atau 1 buku tergantung array hasil nya??
ReplyDeleteSebelumnya Terima Kasih Banyak.
Yup, jumlah buku tergantung array hasil dari parser isi sms. tinggal kamu buatin fungsi yang mengelola isi sms yang jumlahnya lebih dari satu.
ReplyDeleteNah itu mas saya coba dengan for itu jika buku saya beri harga yang sama atau tidak saya beri harga yang nantinya bisa menotalnya. tetapi jika saya beri harga berbeda saya yang tidak bisa mas. Fungsi apa mas yang digunakan??
ReplyDeleteTerima Kasih
Mas, bgus2 tutorialnya... tapi kapan kelanjutannya, bisa buat skripsi ini mas...!!!
ReplyDeletemanstep mas ijin nyedot mas he he
ReplyDeleteto d4rw1$7 thx, iya ni masih belum sempet nyelesain kelanjutanya. do'ain aja biar cepet kelar
ReplyDeleteto boy, silahkan mas, semoga bisa lebih bermanfaat
mas minta tutornya yg jelas. trus kenapa di net beans saya banyak yg merah, apa ada class yg harus di tambahkan ?
ReplyDelete@atas ane : Bener tuh mas,, kenapa banyak yang merah? apa ada package yg kurang ya? Di lanjutin lagi dunx mas, lagi butuh banget nih buat kirim sms...
ReplyDeleteTS nya ngilang nih,, help me please...
ReplyDeleteInsy nanti saya lanjutin.
ReplyDeleteto all yang merah dibagian apa? uda di tambah lib COMMAPI?
to mas daus kesulitanya apa?
waaah....bgus bgt ni programnya..kpn dilanjutin lg,,,,ky'a dsource code'a ada y dikurangi....
ReplyDeletemas yang berhub dengan .net di koneksi db masih merah2 knp y?thx
ReplyDeletepostgresql-8.1-405.jdbc2ee.jar
ReplyDeletejasperreports-2.0.2.jar
commons-logging-api-1.0.2.jar
Soft_Pengisian_Pulsa_All_Op-lib
commons-collections-2.1.jar
waktu aq resolve reference problem yg diatas lum ditemukan?gmn itu
Exception in thread "main" java.lang.NullPointerException
ReplyDeleteat sms_rac_v3.proses_sms.setTerminal(proses_sms.java:120)
at sms_rac_v3.proses_sms.prosesMulai(proses_sms.java:877)
at sms_rac_v3.simpan_kirim.(simpan_kirim.java:28)
at sms_rac_v3.Main.main(Main.java:27)
gw da coba smua stel terakhir error gini, knp ya?
Semua pertanyaan tidak ada yg jawab?
ReplyDeletemas rachmad, link nya sdh di delete.. wah saya telat tahu blog ini.. bisa minta tolong di upload lagi atau mungkin buat rekan2 yg sempat download bisa saya minta tolong utk dikirimkan via email ke enopippo@yahoo.com
ReplyDeleteterima kasih banyak..
mas,,ada error seperti ini kenapa yach?
ReplyDeletemohon bantuannya..
Exception in thread "main" java.lang.NullPointerException
at sms_rac_v3.proses_sms.setTerminal(proses_sms.java:120)
at sms_rac_v3.proses_sms.prosesMulai(proses_sms.java:877)
at sms_rac_v3.simpan_kirim.(simpan_kirim.java:28)
at sms_rac_v3.Main.main(Main.java:27)
mas file nya g bisa di download.,, minta pencerahan mas lagi mau bikin sms gateway dengan java mas.,.,.,
ReplyDeletekl bisa kirimin linknya ke ferdy_kruak@yahoo.co.id
trima kasih mas
Mas Rachmad, saya minta tolong setelah
ReplyDeleteSetelah saya Download trus jalankan program sms gateway ini (semua library sdh dilengkapi + g ada pesan error), ternyata saya harus mencocokkan port yang digunakan dengan HP. Semisal HP saya Nokia N70 biasanya pake porr COM12 / port serial. Tapi kenapa setelah saya jalankan dan saat program mencari port. malah muncul pesan java.lang.null exception
Mohon pencerahannya ya mas.Gimana cara menghubungkannya dengan HP
Saya benar- benar butuh program ini.
maaf neh bang,,
ReplyDeleteuntuk database nya blum ya???itu pake MySql atau PostgreSql si bang?
butuh sangat neh bang,,buat bahan referensi saya,,
help me in : hakkoon87@gmail.com
terima kasih
sama dengan mas tama error nya kayak gitu!!!!
ReplyDelete@Anonymous,
ReplyDeleteUntuk error
-------------
" Exception in thread "main" java.lang.NullPointerException
at sms_rac_v3.proses_sms.setTerminal(proses_sms.java:120)
at sms_rac_v3.proses_sms.prosesMulai(proses_sms.java:877)
at sms_rac_v3.simpan_kirim.(simpan_kirim.java:28)
at sms_rac_v3.Main.main(Main.java:27) "
-------------
ini disebabkan karena konfigurasi Commapi belum sempurna sehingga program tidak dapat mengidentifikasi port yang ada pada komputer
Solusinya, install commapi dengan sempurna
mas,kalau untuk kirim lebih 160 karakter solusinya bagaimana?
Deletegimana mas cara menginstal COmmapinya ane masih bingung
Deletemas, kok saya g bisa ngejalanin programnya ya..
ReplyDeletemohon bantuannya,,
huummmm....siiipp GAN....mau coba ahh,,,ane jg lagi buat,,,,hehehe,,,,
ReplyDeletepak saya mau tanya
ReplyDeletekalo dengan sms gateway menggunakan java ini bisa memungkin untuk di integrasikan dengan aplikasi chatting tidak??
mana sambungannya ???
ReplyDeleteMas link'a tidak bisa di download baik yang rapid dan ziddu
ReplyDeletemas..kok Bersambung....???
ReplyDeletegan, sya tuh baru newbie,maunya step stepnya -_-
ReplyDeleteSiip, mau di coba dulu mas...
ReplyDeleteAssalamualaikum,
ReplyDeleteMas eror seperti ini apa ya kira2 ?
Koneksi Berhasil !
Server Sedang melakukan pencarian Port
Port : COM3 Sedang digunakan
Penyambungan ke Terminal Gagal .........
Terjadi kesalahan pada : javax.comm.PortInUseException: Port currently owned by Unknown Windows Application
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at sms_rac_v3.proses_sms.setTerminal(proses_sms.java:104)
at sms_rac_v3.proses_sms.prosesMulai(proses_sms.java:861)
at sms_rac_v3.simpan_kirim.(simpan_kirim.java:23)
at sms_rac_v3.simpan_kirim$4.run(simpan_kirim.java:187)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:642)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:603)
at java.awt.EventQueue$1.run(EventQueue.java:601)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:612)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
BUILD SUCCESSFUL (total time: 10 seconds)
Mas ini kalau saya pakai modem bisa kan ?
ReplyDeletepake modem bs..
Deleteasal aplikasi modemnya jgn di nyalakan biar port nya g di pake.
Tank's ref nya Mas Rachmad..
ReplyDeleteSaya blh tnya untuk timing smsnya yg paling cpt gmn?
untuk setting yg lbh cpt dari ini gmn?
sendAT("AT+CMGS=" + (PDU[0].length() / 2) + "\15", 500);
sendAT("00" + PDU[0], 2500); // Kirim Pesan Format pdu
sendAT("\032", 2500); // Ctrl + Z
Thread.sleep(3500);
klo saya buat lbh cpt pasti error tidak terkirim smsnya.
soalnya program yg saya buat untuk sms char lebih dari 160 dan sekali kirim ada 40 an sms... terimakasih.
malam mas, saya kok sms masuknya baru bisa terbaca kalau habis di run ya? habis di run kalau kirim sms ga tampil. terimakasih
ReplyDeletesama, punyaku juga gitu kalau pas di run aja smsnya baru bisa masuk. mohon pencerahanya
ReplyDeletesudah solve nih, AT+CNMI nya di buat 2,1,2,2,1 terus di public simpan_kirim tambahkan:
Deletejava.util.TimerTask task = new java.util.TimerTask() {
@Override
public void run() {
apl.repeat();
}
};
java.util.Timer timer = new java.util.Timer();
timer.schedule(task, java.util.Calendar.getInstance().getTime(), 10000);
di proses_sms tambahin method :
public void repeat(){
kirimAT("AT+CMGL=0" + "\15", 1250);
}
jadi tiap 10 detik dia ngecek ada sms masuk atau enggak
dan pastikan com yang digunakan yang ada kata UI.
CMIIW
This comment has been removed by the author.
Deleteada revisi:
Deleteat cnmi nya: 2,1,2,1,0
dan di public void repeat:
kirimAT("AT+CMGL=0" + "\15", 10000);
kalo mau nambahin auto respon codingnya gmna ya?
ReplyDeletemaklum baru mendalami sms gateway
format kirim sms-nya gmana pak..untuk balas otomatisnya.....aku uda berhasil download softwarenya.
ReplyDeleteuntuk balasan otomatis gmana pak.... minta source codenya...pak
ReplyDeleteThis comment has been removed by the author.
Deletepak kenapa saya error ya?
ReplyDeletepak kenapa saya error ya?
ReplyDeleteterimksih atas tutorialnya mas.
ReplyDeleteyang masih punya source codenya tolong kirimin dong ke email : kesatria.utama15@gmail.com. trmksh
ReplyDelete