kali ini saya akan membahas tentang proses pembuatan installer untuk gammu. Bagi pengguna awal mungkin menginstal gammu merupakan hal yang paling sulit (hehehe soale dulu waktu pertama kali nyoba nginstal gammu secara manual sulite minta ampun). Nah dengan tutorial installer gammu ini kita akan membuat installer dari gammu di komputer kita. Sehingga akan mempermudah untuk melakukan instalasi dari gammu.

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
<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 &gt;&gt;" />
</span></p>
</form>
view raw gistfile1.php hosted with ❤ by GitHub

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


<p>Step 2 : Cek Koneksi Modem </p>
<form method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
<input name="submit" type="submit" value="&lt;&lt; CEK KONEKSI MODEM &gt;&gt;" />
</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 &gt;&gt;" />
<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>&nbsp; </p>
<?
}
?>
view raw gistfile1.php hosted with ❤ by GitHub

Script hasil_koneksi.php

<?
echo "<a class='tulisan'><b>Modem 1</b><br>";
passthru("gammu -s 0 -c gammurc identify", $hasil);
?>
view raw gistfile1.php hosted with ❤ by GitHub
3. Membuat database gammu (step3.php)
Pada langkah ini kita akan mengimport database gammu. Berikut script dari step3.php
<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 &gt;&gt;" />
</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>
view raw gistfile1.php hosted with ❤ by GitHub

4. Configurasi file SMSDRC (step4.php)
File ini digunakan oleh gammu untuk berkoneksi dengan database dari gammu. Berikut script dari step4.php
<?
// 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='&lt; 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 &gt;&gt;">
</p>
</form>
view raw gistfile1.php hosted with ❤ by GitHub

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.


<?
$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="&lt;&lt; INSTALL SERVICE GAMMU &gt;&gt;">
</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 &gt;&gt;">
<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>
<?
}
?>
view raw gistfile1.php hosted with ❤ by GitHub

Step 6 : Menjalankan Service (step6.php)
Selanjutnya pada langkah enam kita akan menjallankan service yang telah dibuat sebelumnya. Berikut scriptnya


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="&lt;&lt; JALANKAN SERVICE GAMMU &gt;&gt;">
</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 &gt;&gt;">
</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>
view raw gistfile1.php hosted with ❤ by GitHub
Step 7 : Test Mengirimkan SMS (step7.php)
Apabila servicenya sudah berjalan selajutnya adalah test untuk mengirimkan sms. berikut scriptnya

<? 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="&lt;&lt; Kirim SMS &gt;&gt;">
<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 &gt;&gt;">
<input name="phoneid" type="hidden" id="phoneid" value="<?=$phoneid;?>">
</form>
<? } ?>
view raw gistfile1.php hosted with ❤ by GitHub

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

<?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;
}
?>
view raw gistfile1.php hosted with ❤ by GitHub

Step 8 : Test Menerima SMS (step8.php)
Apabila test mengirimkan SMS berhasil, selanjutnya adalah test untuk menerima SMS. Berikut script dari step8

<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
view raw gistfile1.php hosted with ❤ by GitHub

Pada script diatas terdapat script yang digunakan untuk mengambil sms terbaru yang masuk.
<?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>";
?>
view raw gistfile1.php hosted with ❤ by GitHub




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