1. Instal webserver appserv di komputer kita
2. Buat folder di c:/appserv/www/ dengan nama misalkan installer
3. Ambil file gammu di https://www.dropbox.com/s/6cks7w54qfl7yuo/installer.rar . kemudian extract di folder yang sudah kita buat pada langkah dua
Warning
" Gunakan webserver appserv untuk instalasi. Webserver yang lain semisal xammp tidak kami rekomendasikan dan kemungkinan besar akan gagal "
Simpan semua file yang anda buat di bawah ini di folder yang sama dengan folder yang telah anda buat pada step 2 diatas.

Kemudian setelah langkah tersebut selesai selanjutnya :
1. Membuat script php untuk Seting file gammurc (index.php)
File gammurc berisi tentang configurasi dari port dari modem kita dan jenis koneksi dari modem kita.
Terlebih dahulu kita buat form untuk memasukkan nomer port dan koneksi dari modem kita. Berikut script dari formnya
Script index.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<form action="step2.php" | |
name="agreeform" id="agreeform"> | |
<p><br /> | |
<br /> | |
Step 1 : Seting Gammurc </p> | |
<p align="left"> Port Modem<br /> | |
<input name="port1" type="text" id="port1" size="40" /> | |
</span> </p> | |
<p>Koneksi Modem <br /> | |
<input name="connection1" type="text" id="connection1" size="40" /> | |
</span></p> | |
<p align="left"><span class="tulisan"> | |
<input type="submit" name="Submit" value="Next >>" /> | |
</span></p> | |
</form> |
2. Cek koneksi komputer dengan modem (step2.php)
Setelah menseting file gammurc selanjutnya adalah melakukan pengetesan koneksi komputer dengan modem. Pegecekan ini akan menghasilkan info dari modem jika komunikasi anatar komputer dengan modem berjalan mulus. Namun akan error jika terjadi kesalahan. Ketika pengguna memilih tombol cek koneksi modem maka selanjutnya akan memanggil file hasil_koneksi.php
Script step2.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<p>Step 2 : Cek Koneksi Modem </p> | |
<form method="post" action="<?php $_SERVER['PHP_SELF']; ?>"> | |
<input name="submit" type="submit" value="<< CEK KONEKSI MODEM >>" /> | |
</form> | |
<? if ($_POST['submit']) | |
{ | |
?> | |
<p> | |
<iframe style="width:272px;height:185px" allowtransparency="true" src="hasil_koneksi.php"></iframe> | |
<br /> | |
</p> | |
<form id="form1" name="form1" method="post" action="step3.php"> | |
<input type="submit" name="Submit" value="Next >>" /> | |
<input name="id" type="hidden" id="id" value="5" /> | |
<input name="connection1" type="hidden" id="connection1" value="<?=$connection1;?>" /> | |
<input name="connection2" type="hidden" id="connection2" value="<?=$connection2;?>" /> | |
<input name="port1" type="hidden" id="port1" value="<?=$port1;?>" /> | |
<input name="port2" type="hidden" id="port2" value="<?=$port2;?>" /> | |
</form> | |
<p> </p> | |
<? | |
} | |
?> |
Script hasil_koneksi.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<? | |
echo "<a class='tulisan'><b>Modem 1</b><br>"; | |
passthru("gammu -s 0 -c gammurc identify", $hasil); | |
?> |
Pada langkah ini kita akan mengimport database gammu. Berikut script dari step3.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<form action="step4.php" method="get" | |
name="agreeform" id="agreeform" onSubmit="MM_validateForm('dbuser','','R','dbpass','','R','dbname','','R');return document.MM_returnValue"> | |
<p>Step 3 : Instal Database</p> | |
<p>Username MySQL <br /> | |
<input name="dbuser" type="text" class="tulisan" id="dbuser" onkeypress="return handleEnter(this, event)" size="35" /> | |
</p> | |
<p>Password MySQL <br /> | |
<input name="dbpass" type="text" class="tulisan" id="dbpass" onkeypress="return handleEnter(this, event)" size="35" /> | |
</p> | |
<p>Nama Database <br /> | |
<input name="dbname" type="text" class="tulisan" id="dbname" onkeypress="return handleEnter(this, event)" size="35" /> | |
</p> | |
<p> | |
<label> | |
<input type="submit" name="Submit" value="Next >>" /> | |
</label> | |
<input name="connection1" type="hidden" id="connection1" value="<?=$connection1;?>" /> | |
<input name="connection2" type="hidden" id="connection2" value="<?=$connection2;?>" /> | |
<input name="port1" type="hidden" id="port1" value="<?=$port1;?>" /> | |
<input name="port2" type="hidden" id="port2" value="<?=$port2;?>" /> | |
<input name="id" type="hidden" id="id" value="6" /> | |
</p> | |
</form> |
4. Configurasi file SMSDRC (step4.php)
File ini digunakan oleh gammu untuk berkoneksi dengan database dari gammu. Berikut script dari step4.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<? | |
// tulis file di conf.txt | |
$handle1 = @fopen("conf.txt", "w"); | |
$text1 = "$dbuser $dbpass $dbname"; | |
fwrite($handle1, $text1); | |
fclose($handle1); | |
$con=mysql_connect("localhost", "$dbuser", "$dbpass"); | |
if (!$con) { | |
die("<p><br><input name='Submit23' type='button' class='tombol' value='< Kembali' onClick='javascript:history.back(1)'> " . mysql_error()); | |
} | |
$query = "DROP DATABASE IF EXISTS $dbname"; | |
$result = mysql_query($query); | |
$query = "CREATE DATABASE $dbname"; | |
$result = mysql_query($query); | |
$handle = @fopen("gammu.sql", "r"); | |
$content = fread($handle, filesize("gammu.sql")); | |
$split = explode(";", $content); | |
mysql_select_db($dbname); | |
for ($i=0; $i<=count($split)-1; $i++) | |
{ | |
mysql_query($split[$i]); | |
} | |
fclose($handle); | |
?> | |
<body onLoad="alert('Database <? echo"$dbname ";?>berhasil dibuat')"> | |
<? | |
?><form action="step5.php" method="get" | |
name="agreeform" id="agreeform"> | |
<p> Step 4 : Konfigurasi SMSDRC</p> | |
<p>ID Phone 1 <br> | |
<input name="id1" type="text" class="tulisan" id="id1" size="16"> | |
</p> | |
<p>Port 1 <br> | |
<input name="port1" type="text" class="tulisan" id="port1" value="<?=$port1;?>" size="16"> | |
</p> | |
<p>Koneksi 1 <br> | |
<input name="connection1" type="text" class="tulisan" id="connection1" value="<?=$connection1;?>" size="16"> | |
</p> | |
<p> | |
<input name="id" type="hidden" id="id" value="7"> | |
<input name="dbuser" type="hidden" id="dbuser" value="<?=$dbuser;?>" /> | |
<input name="dbpass" type="hidden" id="dbpass" value="<?=$dbpass;?>" /> | |
<input name="dbname" type="hidden" id="dbname" value="<?=$dbname;?>" /> | |
<input type="submit" name="Submit" value="Next >>"> | |
</p> | |
</form> |
5. Instal service gammu di windows (step5.php)
Pada langkah ini kita akan melakukan penginstalan service gammu di windows. Diharapkan service gammu akan berjalan otomatis ketika komputer dinyalakan.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<? | |
$handle = @fopen("smsdrc1", "w"); | |
$text = "[gammu] | |
# isikan no port di bawah ini | |
port = ".$port1.": | |
# isikan jenis connection di bawah ini | |
connection = ".$connection1." | |
[smsd] | |
service = mysql | |
logfile = smsdlog | |
debuglevel = 0 | |
phoneid = ".$id1." | |
commtimeout = 30 | |
sendtimeout = 30 | |
PIN = 1234 | |
# ----------------------------- | |
# Konfigurasi koneksi ke MySQL | |
# ----------------------------- | |
pc = localhost | |
# isikan user untuk akses ke MySQL | |
user = ".$dbuser." | |
# isikan password user untuk akses ke MySQL | |
password = ".$dbpass." | |
# isikan nama database untuk Gammu | |
database = ".$dbname."\n"; | |
fwrite($handle, $text); | |
fclose($handle); | |
?> | |
<p><span class="judul1">Step 5 : Membuat Service GAMMU</span><br> | |
<span class="tulisan">Klik tombol dibawah ini untuk membuat service gammu </span></p> | |
<form name="form1" method="post" action="<?php $_SERVER['PHP_SELF']; ?>"> | |
<input name="submit" type="submit" class="tombol" id="submit" value="<< INSTALL SERVICE GAMMU >>"> | |
</form> | |
<p> | |
<?php | |
if ($_POST['submit']) | |
{ | |
echo "<a class='tulisan'>"; | |
echo "<pre>"; | |
passthru("gammu-smsd -n phone1 -k", $hasil); | |
passthru("gammu-smsd -n phone1 -u", $hasil); | |
$handle = @fopen("smsdrc1", "r"); | |
while (!feof($handle)) | |
{ | |
$buffer = fgets($handle); | |
if (substr_count($buffer, 'port = ') > 0) | |
{ | |
$split = explode("port = ", $buffer); | |
$port1 = str_replace(":", " ", $split[1]); | |
} | |
} | |
if ($port1 != "\r\n") passthru("gammu-smsd -c smsdrc1 -n phone1 -i", $hasil); | |
fclose($handle); | |
echo "</a></pre>"; | |
?> | |
</p> | |
<form name="form2" method="get" action="step6.php"> | |
<div align="left"> | |
<input type="submit" name="Submit" value="Next >>"> | |
<input name="id" type="hidden" id="id" value="8"> | |
<input name="dbuser" type="hidden" id="dbuser" value="<?=$dbuser;?>" /> | |
<input name="dbpass" type="hidden" id="dbpass" value="<?=$dbpass;?>" /> | |
<input name="dbname" type="hidden" id="dbname" value="<?=$dbname;?>" /> | |
</a> </div> | |
</form> | |
<? | |
} | |
?> |
Step 6 : Menjalankan Service (step6.php)
Selanjutnya pada langkah enam kita akan menjallankan service yang telah dibuat sebelumnya. Berikut scriptnya
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Step 6 : Menjalankan Service<br> | |
Klik tombol dibawah ini untuk menjalankan service gammu yang telah dibuat sebelumnya <br> | |
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post" name="form " id="form "> | |
<br> | |
<input name="submit" type="submit" class="tombol" id="submit" value="<< JALANKAN SERVICE GAMMU >>"> | |
</form> | |
<p> | |
<?php | |
if ($_POST['submit']) | |
{ | |
echo "<a class='tulisan'>"; | |
passthru("gammu-smsd -c smsdrc1 -n phone1 -s"); | |
echo "</a>"; | |
?> | |
</p> | |
<form name="form2" method="get" action="step7.php"> | |
<label> | |
<input name="Submit" type="submit" value="Next >>"> | |
</label> | |
<input name="id" type="hidden" id="id" value="8"> | |
<input name="dbuser" type="hidden" id="dbuser" value="<?=$dbuser;?>" /> | |
<input name="dbpass" type="hidden" id="dbpass" value="<?=$dbpass;?>" /> | |
<input name="dbname" type="hidden" id="dbname" value="<?=$dbname;?>" /> | |
</a> | |
</form> | |
<p> | |
<? | |
} | |
?> | |
</p> |
Apabila servicenya sudah berjalan selajutnya adalah test untuk mengirimkan sms. berikut scriptnya
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<? include'service_modem.php';?> | |
<p>Step 7 : Test Mengirim SMS </p> | |
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post" name="form" id="form "> | |
<p>No HP | |
<input name="nohp" type="text" class="tulisan" id="nohp"" size="25"> | |
</p> | |
<p>Modem <?php echo service3(''); ?></p> | |
<p> Isi SMS | |
<textarea name="sms" cols="23" rows="2" class="tulisan" id="sms""></textarea> | |
</p> | |
<p> | |
<input name="Submit" type="submit" class="tombol" id="Submit" value="<< Kirim SMS >>"> | |
<input name="id1" type="hidden" id="id1" value="kirim"> | |
<input name="id" type="hidden" id="id" value="9"> | |
<input name="dbuser" type="hidden" id="dbuser" value="<?=$dbuser;?>" /> | |
<input name="dbpass" type="hidden" id="dbpass" value="<?=$dbpass;?>" /> | |
<input name="dbname" type="hidden" id="dbname" value="<?=$dbname;?>" /> | |
</p> | |
</form> | |
<p> | |
<?php | |
if ($id1==kirim) | |
{ | |
$con=mysql_connect("localhost", "$dbuser", "$dbpass"); | |
mysql_select_db($dbname, $con); | |
$noTelp = $_POST['nohp']; | |
$pesan = $_POST['sms']; | |
$phone = $_POST['phoneid']; | |
$jmlSMS1 = ceil(strlen($pesan)/160); | |
if($jmlSMS1==1) | |
{ | |
$query = mysql_query("INSERT INTO outbox (DestinationNumber, TextDecoded, ID, MultiPart, SenderID, CreatorID) | |
VALUES ('$noTelp', '$pesan', '$newID', 'true', '$phone', 'Gammu')"); | |
} | |
if($jmlSMS1<>1) | |
{ | |
// menghitung jumlah pecahan | |
$jmlSMS = ceil(strlen($pesan)/153); | |
// memecah pesan asli | |
$pecah = str_split($pesan, 153); | |
// proses untuk mendapatkan ID record yang akan disisipkan ke tabel OUTBOX | |
$query = "SHOW TABLE STATUS LIKE 'outbox'"; | |
$hasil = mysql_query($query); | |
$data = mysql_fetch_array($hasil); | |
$newID = $data['Auto_increment']; | |
// proses penyimpanan ke tabel mysql untuk setiap pecahan | |
for ($i=1; $i<=$jmlSMS; $i++) | |
{ | |
// membuat UDH untuk setiap pecahan, sesuai urutannya | |
$udh = "050003A7".sprintf("%02s", $jmlSMS).sprintf("%02s", $i); | |
// membaca text setiap pecahan | |
$msg = $pecah[$i-1]; | |
if ($i == 1) | |
{ | |
// jika merupakan pecahan pertama, maka masukkan ke tabel OUTBOX | |
$query = "INSERT INTO outbox (DestinationNumber, UDH, TextDecoded, ID, MultiPart, SenderID, CreatorID) | |
VALUES ('$noTelp', '$udh', '$msg', '$newID', 'true', '$phone', 'Gammu')"; | |
} | |
else | |
{ | |
// jika bukan merupakan pecahan pertama, simpan ke tabel OUTBOX_MULTIPART | |
$query = "INSERT INTO outbox_multipart(UDH, TextDecoded, ID, SequencePosition) | |
VALUES ('$udh', '$msg', '$newID', '$i')"; | |
} | |
// jalankan query | |
mysql_query($query); | |
} | |
} | |
?><body onLoad="alert('SMS sedang dikirim ke nomer <? echo"$nohp ";?>.')"> | |
</p> | |
<form name="form2" method="get" action="step8.php"> | |
<br> | |
<input type="submit" name="Submit2" value="Next >>"> | |
<input name="phoneid" type="hidden" id="phoneid" value="<?=$phoneid;?>"> | |
</form> | |
<? } ?> |
Di dalam code diatas terdapat juga script service_modem.php yang di ikut sertakan juga. Script ini digunakan untuk mengambil id dari service yang sudah kita buat tadi. Berikut scriptnya
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
function service3($x) | |
{ | |
$string = "<select name='phoneid'>"; | |
$handle = @fopen($path."smsdrc1", "r"); | |
while (!feof($handle)) | |
{ | |
$buffer = fgets($handle); | |
if (substr_count($buffer, 'phoneid = ') > 0) | |
{ | |
$split = explode("phoneid = ", $buffer); | |
$id1 = str_replace("\r\n", "", $split[1]); | |
} | |
} | |
if ($id1 != '') { | |
$string .= "<option value='$id1'>".$id1."</option>"; | |
} | |
fclose($handle); | |
$handle = @fopen($path."smsdrc2", "r"); | |
while (!feof($handle)) | |
{ | |
$buffer = fgets($handle); | |
if (substr_count($buffer, 'phoneid = ') > 0) | |
{ | |
$split = explode("phoneid = ", $buffer); | |
$id2 = str_replace("\r\n", "", $split[1]); | |
} | |
} | |
if ($id2 != '') { | |
$string .= "<option value='$id2'>".$id2."</option>"; | |
} | |
fclose($handle); | |
$string .= "</select>"; | |
return $string; | |
} | |
?> |
Step 8 : Test Menerima SMS (step8.php)
Apabila test mengirimkan SMS berhasil, selanjutnya adalah test untuk menerima SMS. Berikut script dari step8
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<p>Step 8 : Test Menerima SMS </p> | |
<p>Silahkan kirimkan SMS ke nomer HP server anda. SMS terbaru yang masuk akan ditampilkan dibawah ini | |
<script type="text/javascript"> | |
function ajax() | |
{ | |
if (window.XMLHttpRequest) | |
{// code for IE7+, Firefox, Chrome, Opera, Safari | |
xmlhttp=new XMLHttpRequest(); | |
} | |
else | |
{// code for IE6, IE5 | |
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); | |
} | |
xmlhttp.onreadystatechange=function() | |
{ | |
if (xmlhttp.readyState==4 && xmlhttp.status==200) | |
{ | |
document.getElementById("txthint").innerHTML = xmlhttp.responseText; | |
} | |
} | |
xmlhttp.open("GET","getsms.php",true); | |
xmlhttp.send(); | |
setTimeout("ajax()", 1000); | |
} | |
</script> | |
<body onLoad="ajax()"> | |
<div id="txthint"></div> | |
<br> | |
Selesai |
Pada script diatas terdapat script yang digunakan untuk mengambil sms terbaru yang masuk.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$handle = @fopen("conf.txt", "r"); | |
if ($handle) { | |
while (!feof($handle)) { | |
$buffer = fgets($handle, 4096); | |
$pieces = explode(" ", $buffer); | |
} | |
fclose($handle); | |
} | |
mysql_connect('localhost', $pieces[0], $pieces[1]); | |
mysql_select_db($pieces[2]); | |
$query = "SELECT * FROM inbox ORDER BY ID DESC"; | |
$hasil = mysql_query($query) or die(mysql_error()); | |
echo "<table width='267' border='1' class='tulisan' cellspacing='0' cellpadding='0'>"; | |
echo "<tr><th>Pengirim</th><th>Isi SMS</th><th>Phone ID</th></tr>"; | |
$data = mysql_fetch_array($hasil); | |
echo "<tr><td>".$data['SenderNumber']."</td><td>".$data['TextDecoded']."</td><td>".$data['RecipientID']."</td></tr>"; | |
echo "</table>"; | |
?> |
Pengetesan
1. Jalankan script yang telah kita buat sebelumnya. Kita asumsikan bahwa anda menaruh script tadi di appserv/www/installer . Kita tinggal buka browser kita dan ketikkan http://localhost/installer. Masukkan port dari modem anda dan jenis koneksi modem anda
Untuk mengetahui port modem anda silahkan baca artikel di
http://ikhwaniril.blogspot.com/2011/12/sms-gateway-installer.html
Untuk jenis koneksi modem anda silahkan klik link berikut
http://wammu.eu/phones/csv/
Tampilan Script index.php
2. Setelah memasukkan jenis port dan koneksi modem selanjutnya pilih next. Pada langkah kedua ini kita akan melakukan pengecekan koneksi modem dengan gammu. Jika berhasil maka akan tertampil informasi jenis modem yang anda pakai. Namun jika tidak maka terjadi kegagalan. Pastikan pada step 1 ketika memasukkan port dan jenis koneksi sudah benar
Tampilan Script step2.php
3. Selanjutnya jika sudah berhasil melakukan pengecekan selanjutnya pilih next. Langkah ketiga ini merupakan instalasi dari database dari gammu. Masukkan username dan password dari mysql (cocokan ketika anda menginstal webserver appserv). Untuk nama database boleh bebas (mengacu kepada aturan yang diterapkan mysql tentu saja untuk penamaan database. baca artikel berikut http://ikhwaniril.blogspot.com/2012/08/kata-yang-harus-dihindari-dalam.html)
Tampilan Script step3.php
4. Klik next apabila anda sudah mengisi form username, password dan nama dari database. Langkah ke empat adalah konfigurasi dari file smsdrc. Isi ID phone dengan ID modem anda (bebas untuk namanya). Sedang untuk Port dan koneksi biarkan seperti yang sudah terisi
Tampilan Script step4.php
5. Klik next. Pada langkag kelima ini kita akan melakukan pemasangan dari service gammu. Untuk memasangnya anda tinggal pilih tombol INSTALL SERVICE GAMMU. Apabila berhasil maka akan terlihat seperti gambar dibawah ini.
Tampilan Script step5.php
6. Klik next. Apabila service telah kita pasang selanjutnya adalah menjalankan service yang telah kita buat sebelumnya. Klik JALANKAN SERVICE GAMMU untuk menjalankan service gammu. Apabila berhasil maka akan terlihat seperti gambar dibawah ini.
Tampilan Script step6.php
7. Klik next. Selanjutnya kita akan melakukan pengetesan kirim SMS dari hasil instalasi gammu. Masukkan no tujuan (format 0856xxxxxxxx. bukan +62856xxxxx) dan isi sms kemudian pilih tombol kirim SMS. Jika berhasil maka sms akan masuk di HP tujuan.
Tampilan Script step7.php
8. Klik next. Selanjutnya kita akan melakukan pengetesan penerimaan SMS. Kirimkan sms sembarang ke nomer yang kita gunakan untuk menjalankan sms gateway. Jika berhasil maka sms akan ditampilkan di program
Tampilan Script step8.php
Selesai dah. Selanjutnya anda tinggal membuat program (bisa pakai PHP, VB, Delphi, etc) untuk mengirim ataupun menerima sms . Untuk mengirim tinggal kita insert saja ke tabel outbox, sedangkan untuk mengambil sms masuk tinggal kita select dari tabel outbox.
Gampang kan. Selamat mencoba ya