Skip to main content

Teknologi SMS Gateway dengan AT Command

Sekilas Tentang SMS Gateway
Layanan pesan singkat atau Surat masa singkat (bahasa Inggris: Short Message Service disingkat SMS) adalah sebuah layanan yang dilaksanakan dengan sebuah telepon genggam untuk mengirim atau menerima pesan-pesan pendek. Pada mulanya SMS dirancang sebagai bagian daripada GSM, tetapi sekarang sudah didapatkan pada jaringan bergerak lainnya termasuk jaringan UMTS.

Sebuah pesan SMS maksimal terdiri dari 140 bytes, dengan kata lain sebuah pesan bisa memuat 140 karakter 8-bit, 160 karakter 7-bit atau 70 karakter 16-bit untuk bahasa Jepang, bahasa Mandarin dan bahasa Korea yang memakai Hanzi (Aksara Kanji / Hanja). Selain 140 bytes ini ada data-data lain yang termasuk. Adapula beberapa metode untuk mengirim pesan yang lebih dari 140 bytes, tetapi seorang pengguna harus membayar lebih dari sekali.

SMS bisa pula untuk mengirim gambar, suara dan film. SMS bentuk ini disebut MMS.
Pesan-pesan SMS dikirim dari sebuah telepon genggam ke pusat pesan (SMSC dalam bahasa Inggris), di sini pesan disimpan dan mencoba mengirimnya selama beberapa kali. Setelah sebuah waktu yang telah ditentukan, biasanya 1 hari atau 2 hari, lalu pesan dihapus. Seorang pengguna bisa mendapatkan konfirmasi dari pusat pesan ini.

SMS Gateway merupakan pintu gerbang bagi penyebaran Informasi dengan menggunakan SMS. Anda dapat menyebarkan pesan ke ratusan nomor secara otomatis dan cepat yang langsung terhubung dengan database nomor-nomor ponsel saja tanpa harus mengetik ratusan nomor dan pesan di ponsel anda karena semua nomor akan diambil secara otomatis dari database tersebut. Selain itu, dengan adanya SMS Gateway anda dapat mengcustomisasi pesan-pesan yang ingin dikirim. Dengan menggunakan program tambahan yang dapat dibuat sendiri, pengirim pesan dapat lebih fleksibel dalam mengirim berita karena biasanya pesan yang ingin dikirim berbeda-beda untuk masing-masing penerimanya.

SMS Gateway adalah jenis sms dua arah. Menariknya bahwa semua tarif yang diberlakukan adalah tarif sms normal sesuai dengan apa yang diberlakukan oleh operator. Karena sifatnya yang dua arah, maka jenis sms ini sangat cocok digunakan sebagai SMS Center sebuah organisasi atau perusahaan dalam rangka meningkatkan kualitas komunikasi antara anggota komunitas organisasi atau pegawai di dalam perusahaan.

Selain itu, dengan adanya SMS Gateway, Anda dapat mengatur pesan-pesan yang ingin dikirim. Dengan menggunakan program tambahan yang dapat dibuat sendiri, pengiriman pesan dapat lebih fleksibel dalam mengirim berita karena biasanya pesan yang ingin dikirim berbeda-beda untuk masing-masing penerimanya (kustomisasi pesan).

Kebutuhan Hardware
Untuk kebutuhan SMS Gateway tidak terlalu belebihan dan juga fleksibel karena bisa dibuat dengan :
1. PC maupun Notebook. Yang mutlak dibutuhkan adalah sebuah komputer tentunya ada USB atau port serial COM
2. Sebuah ponsel atau modem yang mendukung AT Command
3. Kabel data (Kabel berantarmuka serial yang dapat menghubungi ponsel dengan PC) atau dapat munggunakan InfraRed dan piranti lunak sebagai SMS Gateway.

Untuk menggunakan InfraRed anda membutuhkan sebuah ponsel yang juga memiliki fasilitas tsb, tapi tidak dianjurkan untuk kebutuhan SMS gateway karena komunikasi dengan InfraRed tidak terlalu baik (jika tergeser gampang putus).


Kebutuhan Software
Disini penulis menggunakan bahasa pemrograman Visual Basic 6.0 dan untuk pengertian perintah yang dipakai menggunakan AT Command. AT Command adalah perintah-perintah yang digunakan dalam komunikasi dengan serial port. Dengan AT Command kita dapat mengetahui vendor dari Handphone yang digunakan, kekuatan sinyal, membaca pesan yang ada pada SIM Card, megirim pesan, mendeteksi pesan SMS baru yang masuk secara otomatis, menghapus pesan pada SIM Card dan masih banyak lagi.

Dalam program SMS Gateway yang akan kita buat nanti, tidak semua perintah AT Command digunakan. Kita hanya menggunakan beberapa perintah AT yang ada hubungannya dengan sistem kerja dari program SMS Gateway. Adapun perintah yang akan digunakan adalah sebagai berikut :

Command - Keterangan
AT Mengecek apakah Handphone telah terhubung
AT+CMGF Untuk menetapkan format mode dari terminal
AT+CSCS Untuk menetapkan jenis encoding
AT+CNMI Untuk mendeteksi pesan SMS baru masuk secara otomatis
AT+CMGL Membuka daftar SMS yang ada pada SIM Card
AT+CMGS Mengirim pesan SMS
AT+CMGR Membaca pesan SMS
AT+CMGD Menghapus pasan SMS
ATE1 Mengatur ECHO
ATV1 Mengatur input dan output berupa naskah
AT+CGMI Mengecek Merek HP
AT+CGMM Mengecek Seri HP
AT+CGMR Mengecek Versi Keluaran HP
AT+CBC Mengecek Baterai
AT+CSQ Mengecek Kualitas Sinyal
AT+CCLK? Mengecek Jam (waktu) pada HP
AT+CALM=< n > Mengecek Suara/dering HP saat di Telepon (ada Telepon Masuk)

‘n’ adalah adalah angka yang menunjukkan jenis dering
0 = berdering
1 dan 2 = Silent (Diam)

AT^SCID Mengecek ID SIM CARD
AT+CGSN Mengecek Nomor IMEI
AT+CLIP=1 Menampilkan nomor telepon pemanggil
AT+CLCC Menampilkan nomor telepon yang sedang memanggil
AT+COPN Menampilkan Nama Sumua Operator di dunia
AT+COPS? Menampilkan nama operator dari SIM yang digunakan
AT+CPBR=< n > Membaca nomor telepon yang disimpan pada buku telepon (SIM CARD)
‘n’ adalah nomor urut penyimpanan
AT+CPMS=< md > Mengatur Memori dari HP
‘md’ adalah memori yang digunakan
ME = Memori HP
SM = Memori SIM CARD

Langkah-langkah pengcodingan:
Nah sekarang buka Program Microsoft Visual Basic Anda dan ikuti langkah berikut ini:
1. Buka aplikasi VB 6 anda dan pilih standard exe lalu open
2. Tambahkan 1 modul dengan cara klik menu project - add module lalu tambahkan koding dibawah ini :

Option Explicit

Public Function RemoveInternationalDiallingCode _
(ByVal tTelNumber As String) As String
RemoveInternationalDiallingCode = "0" & Mid(tTelNumber, 4)
End Function

Public Function GetSMSNum(ByVal tSMSNotification As String) As String
Dim lCRPos As Long

lCRPos = InStrRev(tSMSNotification, vbCr)
If lCRPos > 0 Then GetSMSNum = Mid(tSMSNotification, lCRPos - 2, 2)
If Left(GetSMSNum, 1) = "," Then GetSMSNum = Right(GetSMSNum, 1)
End Function

Public Function ReadSMS(comms As MSComm, _
ByVal tSMSNum As String, tMessage As String, _
tSender As String, tDate As String, _
tTime As String, bRead As Boolean) As Boolean
Dim tChar As String * 1
Dim i As Long
Dim tRead As String
Dim lQuoteNum As Long
Dim tDateTime As String
Dim tData As String

Const TIMEOUT = 10000

On Error GoTo ErrHandler

tData = "AT+CMGR=" & tSMSNum & vbCr
comms.InBufferCount = 0
comms.Output = tData
tData = ""

i = timeGetTime
Do While timeGetTime - i <= TIMEOUT And InStr(tData, "OK" & vbCrLf) = 0 And InStr(tData, "ERROR" & vbCrLf) = 0
DoEvents
If comms.InBufferCount > 0 Then
tChar = comms.Input
tData = tData & tChar
End If
Loop

If InStr(tData, "ERROR") = 0 And tData <> "" Then
For i = 1 To Len(tData)
tChar = Mid(tData, i, 1)
If tChar = """" Then lQuoteNum = lQuoteNum + 1
If lQuoteNum = 1 And tChar <> """" Then tRead = tRead & tChar
If lQuoteNum = 3 And tChar <> """" Then tSender = tSender & tChar
If lQuoteNum = 5 And tChar <> """" Then tDateTime = tDateTime & tChar
If lQuoteNum = 6 And tChar <> """" Then tMessage = tMessage & tChar
Next i

bRead = (tRead = "REC READ")
tDate = Left(tDateTime, 8)
tTime = Mid(tDateTime, 10, 8)
tMessage = Mid(tMessage, 3)
tMessage = Mid(tMessage, 1, InStr(tMessage, vbCr) - 1)
ReadSMS = True
End If
Exit Function

ErrHandler:
ReadSMS = False
End Function

Public Function DeleteAllSMSes(comms As MSComm) As Boolean
Dim i As Long

For i = 1 To 15
DeleteAllSMSes = InStr(TransmitAndReceiveData(comms, "AT+CMGD=" & i & vbCr), "OK")
Next i
End Function

Public Function DeleteSMS(comms As MSComm, ByVal lSMSNum As Long) As Boolean
DeleteSMS = InStr(TransmitAndReceiveData(comms, "AT+CMGD=" & lSMSNum & vbCr), "OK")
End Function

Public Function SendSMS(comms As MSComm, ByVal tSMSNum As String, ByVal tMessage As String) As Boolean
SendSMS = InStr(TransmitAndReceiveData(comms, "AT+CMGS=" & """" & tSMSNum & """" & vbCr & tMessage & Chr(26)), "OK")
End Function

Public Function TestModem(comms As MSComm) As String
TestModem = TransmitAndReceiveData(comms, "AT")
End Function

Public Function ManufacturerInfo(comms As MSComm) As String
ManufacturerInfo = TransmitAndReceiveData(comms, "AT+CGMI")
End Function

Public Function ModelInfo(comms As MSComm) As String
ModelInfo = TransmitAndReceiveData(comms, "AT+CGMM")
End Function

Public Function FirmwareInfo(comms As MSComm) As String
FirmwareInfo = TransmitAndReceiveData(comms, "AT+CGMR")
End Function

Public Function IMEIInfo(comms As MSComm) As String
IMEIInfo = TransmitAndReceiveData(comms, "AT+CGSN")
End Function

Public Function IMSIInfo(comms As MSComm) As String
IMSIInfo = TransmitAndReceiveData(comms, "AT+CIMI")
End Function

Public Function EF_CCIDInfo(comms As MSComm) As String
EF_CCIDInfo = TransmitAndReceiveData(comms, "AT+CCID")
End Function

Public Function NetworkRegStatus(comms As MSComm) As String
NetworkRegStatus = TransmitAndReceiveData(comms, "AT+CREG?")
End Function

Public Function AvailablePLMNs(comms As MSComm) As String
AvailablePLMNs = TransmitAndReceiveData(comms, "AT+COPS?")
End Function

Public Function NetworkFieldStrength(comms As MSComm) As String
NetworkFieldStrength = TransmitAndReceiveData(comms, "AT+CSQ")
End Function

Public Function MainCellMainParams(comms As MSComm) As String
MainCellMainParams = TransmitAndReceiveData(comms, "AT+CCED=0")
End Function

Public Function TransmitAndReceiveData(comms As MSComm, ByVal tData As String) As String
Dim lTime As Long

Const TIMEOUT = 10000

tData = tData & vbCr

With comms
.InBufferCount = 0
.Output = tData
tData = ""

lTime = timeGetTime
tData = ""
Do While timeGetTime - lTime <= TIMEOUT And InStr(tData, "OK") = 0 And InStr(tData, "ERROR" & vbCrLf) = 0
DoEvents
If .InBufferCount > 0 Then tData = tData & .Input
Loop
End With

TransmitAndReceiveData = tData
End Function

4. Tambahkan komponen mscomm punyanya microsoft
5. Set boudrate dan lainnya sesuai dengan setingan HP atau modem anda lalu pada form load isikan perintah inisialisasi modem/hp.
6. Silahkan test send sms dengan menggunakan fungsi SendSMS dan silahkan coba-coba fungsi lainnya.
7. Selamat mencoba.


Nb: Dari berbagai sumber dan pengalaman saya.


Comments

  1. Mas,saya bisa minta referensi lagi ga tentang pembuatan SMS Gateway?Makasih sebelumnya...

    ReplyDelete
  2. Maaf Andrie, untuk refrensinya ga ngertinya dimana?

    ReplyDelete
  3. Mas, gimana klo saya mau buat aplikasi sms gateway seperti broadcast messages and autoreply. aku bingung menghubungkan antara perintah AT Command dengan Visual Basic dengan Database MySql... bisa dijelasin?

    ReplyDelete
  4. command AT+... yang dijelaskan di atas apa mungkin bisa untuk bahasa pemrograman yang lain??terus terang aplikasi yang saya pelajari VFP.

    ReplyDelete
  5. Untuk Diana, nanti akan saya upload samplenya. Thank's

    Untuk AT Command bisa dipakai oleh bahasa lainnya pak, seperti VFP dan sudah saya posting silahkan di coba.

    ReplyDelete
  6. Untuk Diana dan lainnya, program jadinya bisa didownload di http://open-program.blogspot.com/2009/05/sms-gateway-v10.html

    ReplyDelete
  7. mas, kenapa menggunakan AT Command, kok bukan gammu?
    adakah kelebihanya AT Command dibandingkan dengan gammu?

    ReplyDelete
  8. mas, cara nambahin mscomm gymna?
    apa di toolbox di klik kanan, trus add componen?
    kan microsoft ada banyak componen'a mas..
    reply ke email aja ya mas
    ardie.h[at]gmail.com

    terima kasih

    ReplyDelete
  9. mas saya ada tugas tentang program VB 6 dengan menggunakan crystal report.. tolong dong bikin tutorialnya.. trimah kasih...

    ReplyDelete
  10. mas, kalo saya mau buat aplikasi sms gateway sperti broadcat message pake VB.Net gimana ya..? databasenya pake SQL 2008,, punten di reply ke email saya ajah.. makasih sebelumnya,, ^_^

    ReplyDelete
  11. mas, kalo saya mau buat aplikasi sms gateway sperti broadcat message pake VB.Net gimana ya..? databasenya pake SQL 2008,, punten di reply ke email saya ajah.. makasih sebelumnya,, ^_^

    ReplyDelete
  12. mzbro, cara kirim sms broadcast perintah at commandnya gimana?

    ReplyDelete
  13. Kalau mau brodcast, pake perulangan aja bro. jadi dikirim satu-persatu. thx

    ReplyDelete
  14. Ijin Copas ya Gan.. Saya coba terapkan dulu... Salam Programmer VB Indonesia

    ReplyDelete
  15. mas itu cara penerapannya pada form gimana? coba kasih contoh... terima kasih...

    ReplyDelete
  16. This comment has been removed by the author.

    ReplyDelete

Post a Comment

Popular posts from this blog

Apa itu Port ?

Mengenal apasih yang dinamakan PORT? kayaknya sering denger tapi belum paham. Nah port itu adalah suatu celah atau pintu atau lubang pada system komputer / micro computer sebagai jalur transfer data. Pada system komputer sebenarnya ada dua jenis Port yaitu : Port fisik,adalah soket atau slot atau colokan yang ada di belakang CPU sebagai penghubung peralatan input-output komputer, misalnya Mouse, keyboard, printer…dll Port Logika (non fisik),adalah port yang di gunakan oleh Software sebagai jalur untuk melakukan koneksi dengan komputer lain, tentunya termasuk koneksi internet Port Logika inilah yang akan kita bahas di sini, yaitu port yang berhubungan secara langsung dengan kegiatan kita ber-internet. 1. Port 80, Web Server Port ini biasanya digunakan untuk web server, jadi ketika user mengetikan alamat IP atau hostname di web broeser maka web browser akan melihat IP tsb pada port 80, 2. Port 81, Web Server Alternatif ketika port 80 diblok maka port 81 akan digunakan sebagai port

Mengenal NNTP (Network News Transfer Protocol) Pada Server

NNTP (Network News Transfer Protocol) NNTP merupakan protocol aplikasi internet yang berguna untuk membaca dan mem-posting artikel berita dalam jaringan (membentuk newsgroup dan grup diskusi dalam). Dengan menggunakan reader news client standar seperti Microsoft Outlook Express, pengguna/ user dalam sebuah jaringan dapat membaca artikel dari orang lain yang mempunyai hobi yang sama, mengirim artikel ke user lain dan ikut berpartisipasi dalam sebuah diskusi. NNTP beroperasi dalam sebuah chanel data stream bidirectional 8-bit yang handal. Ketika koneksi terbentuk, NNTP server host harus mengirimkan sebuah pesan pembuka (greeting) kemudian server host dan client host saling mempertukarkan commands dan merespon sampai koneksi tertutup atau dibatalkan. Jika koneksi yang digunakan TCP maka server host akan mulai menjalankan service NNTP dengan membuka sebuah TCP port. Ketika client host ingin menggunakan service maka client haris membentuk koneksi TCP dengan server host dengan cara konek ke

Menghapus Driver Audio Realtek yang Error

Kali ini saya berbagi pengalaman tentang instalasi OS Ms. Windows XP pada komputer. Biasanya setelah instalasi OS selesai kita masukin tu driver-driver device komputernya supaya di detect dan bekerja normal hardwarenya. Nah pas install driver audio / soundcard realtek ada kejadian driver yang diinstall salah, jadi trouble deh. Mau di disable trus un install drivernya, muncul pesan Error boot bla bla.... wah jadi pusing, untung nemu cara gini, silahkan dicoba. Dan biasanya problemnya, Installation failure and terminate alias komputer / laptop jadi bisu karena gagal mengenal Driver audio. Nah penyebabnya, Microsoft Universal Audio Architecture (UAA) driver terlalu memaksa ketika mengenali Realtek HD pada saat instalasi Solusi : - Hapus (UnInstall) terlebih dahulu program Realtek HD Audio - Disable MS UAA Bus Driver for HD Audio Realtek, caranya : Buka Control Panel>Device Manager> cari System Device (bagian bawah) > pada Ms UAA Bus Driver klik kanan pilih Disable trus UnInstall