Tampilkan postingan dengan label gammu. Tampilkan semua postingan
Tampilkan postingan dengan label gammu. Tampilkan semua postingan

Jumat, 01 Oktober 2010

[Gammu-SMS Gateway]Mengatasi Error Get SMS Corrupted by Phone

Bagi yang pernah ngoprek SMS Gateway dengan menggunakan Gammu, biasanya setelah berjalan, akan pernah mengalami hal-hal yang menjengkelkan dengan matinya fungsi SMS. Hal ini dapat terjadi karena banyak hal. Antara lain:
  1. File Log yang sudah terlalu besar
  2. Tabel dalam database gammu telah terlalu berat diakses
  3. Hal lain
Belakangan saya mendapatkan masalah sehubungan dengan matinya fungsi SMS. Matinya fungsi SMS ini dapat dirunut tiap blok. Proses pengecekan dapat dilakukan antara lain menggunakan langkah-langkah berikut:

  1. Cek pada tabel inbox pada database kerja gammu, jika terdapat sms masuk, seharusnya terdapat sms pada tabel tersebut
  2. Cek pada tabel outbox, cobalah kirim SMS dengan cara memasukkan record pada table outbox, pada field DestinationNumber dan TextDecoded
  3. Lihatlah pada log service gammu. Lokasi file log dapat dilihat pada file smsdrc. Apa bunyi errornya.
  4. Matikan service gammu, dan cobalah melakukan perintah operasional sms dengan secara manual dan nonservice, seperti gammu --identify, gammu --getallsms, gammu --sendsms. APa yang terjadi dan ceklah pada file log yang sudah ditentukan lokasinya pada gammurc
Error 60: Corrupted data returned by phone.
Kata-kata seperti ini akan biasa dihadapi oleh para system administrator SMS. JIka sudah pada masalah ini, maka SMS biasanya akan susah ditebak masuk tidaknya pada Database.
Dengan cara teknispun kita masih dapat merunut kesalahan yang terjadi. Kunci dalam hal ini adalah : Menggunakan AT Command.

AT Command pada Windows dapat diakses dengan cara Klik Start => Accessories =>Communication=>Hyperterminal

Untuk gambar proses penggunaan Hyperterminal akan saya paparkan kapan-kapan karena saya menggunakan Linux sehingga tidak dapat mengcapture..

AT Command pada Linux dapat menggunakan Minicom atau Cutecom. Tapi saran saya adalah menggunakan Minicom karena cutecom input masukannya agak kurang tepat untuk proses ganti baris. Perintah yang digunakan adalah :

minicom -s

Dengan demikian langsung masuk pada mode setup minicom untuk mengatur setting konfigurasi modem. Tentukan lokasi modem, biasanya untuk modem dengan USB port akan ter atach pada /dev/ttyUSB[x], contoh:

/dev/ttyUSB0
/dev/ttyUSB1
/dev/ttyUSB2
/dev/ttyUSB3
dst

silakan dilihat pada

lsusb

dan sesuaikan dengan yang didapat dari

dmesg |grep USB

Lantas baudrate bisa didapatkan dari mana?

Gampang, silakan dilihat pada perintah

stty -F [device]

contoh

stty -F /dev/ttyUSB0

Berapakah angka bagian atas sendiri? Andapun dapat mengeset sesuai anda mau dengan cara seperti contoh berikut

stty ispeed [115200] ospeed [115200] -F /dev/ttyUSB0
atau
stty 115200 -F /dev/ttyUSB0

Setelah itu anda akan masuk pada minicom mode

Dan anda mulai dapat menggunakan AT COMMAND. Perintah yang harus anda gunakan hanya:

AT = untuk mengetahui apakah device dapat menerima perintah AT Command
AT+CREG? = Untuk mengetahui apakah device mendapatkan jaringan
AT+CPIN? = Untuk mengetahui apakah sistem Pin OK
AT+CMGL=1 = Untuk mengetahui SMS dalam bentuk ter - encode masuk atau tidak

Hanya itu.
JIka langkah-langkah tersebut anda dapatkan OK apalagi sampai mendapatkan jawaban pada sms, maka anda dapat katakan bahwa jaringan dan modem tidak bermasalah. Jadi dengan demikian biasanya masalah adalah pada :
  1. Kartu yang terlebih dulu berisi SMS
  2. Penempatan kartu yang tidak tepat
  3. Database outbox penuh
  4. Gammu file corrupt
Gambar nyusul, sekedar catatan dulu ah

Minggu, 27 Juni 2010

Mengintegrasikan SMS Gateway di jaringan lokal, dengan Web di Hosting

Mumpung diberi libur dari melakukan perjalanan spiritual, posting tentang SMS Gateway daripada kepikiran lagi nanti..

Seorang bertanya kepada saya:"Mas bisa nggak ya web sekolah saya yang di internet, dikasih fasilitas sms masuk"

Saya jawab:"bisa dengan berbagai catatan,
1. kalau nggak minta ijin ke web hostingnya untuk pasang modem,
2. ya njenengan pesen VAS SMS ke Conten Provider,
3. atau buat sendiri dengan syarat ada koneksi internet.."

Dia bilang:"Ada mas koneksi.. ada modem, ada server yang sudah kita buat itu"

Dan akhirnya secara sederhana bagannya adalah sebagai berikut:


Bagan network sms gateway dengan hosting

PC kita selanjutnya akan diberikan satu script dengan nama sendtohosting.php, yang akan mengambil dari database gammu, yang akan dicrontab seperti ini kira kira

*/1 * * * * /usr/bin/php /var/www/html/script/sendtohosting.php


atau memberikan aksi pada saat SMS masuk pada script smsdrc anda:
runonreceive=/usr/bin/php /var/www/html/script/sendtohosting.php


Terserah tekniknya jika dengan /usr/bin/php tidak dapat dilakukan, bisa dilakukan dengan memanggil curl http://localhost/script/sendtohosting.php.


Buat penggemar Windows silakan menyesuaikan pathnya ya.. Script ini sebaiknya melakukan cek tidak hanya ketika SMS Masuk, namun setiap saat, karena tidak setiap koneksi internet dapat menjamin komunikasi dua server ini. Jika dilakukan crontab 1 atau 2 menit sekali, tentu akan selalu update proses pengiriman smsnya.


Pada sisi hosting akan diletakkan satu file dengan nama : receiver.php. Script ini berjalan ketika terjadi HIT oleh sendtohosting.php di posisi remote dan dihubungkan dengan database SMS yang dipasang disana (terserah formatnya). Script ini, jika sendtohosting.php, alias IP address SMS Gateway statik, maka sebaiknya dikunci dengan menentukan $_SERVER['REMOTE_ADDR'];Jika tidak , hehe menunggu postingan saya berikutnya

Nah berikut script sendtohosting.php yang dipasang di SMS Gateway lokal


<?php

//skrip untuk menghubungkan SMS Gateway lokal dengan hosting.. skrip ini dipasang untuk berhadapan dengan gammu.. Penggunaannya adalah:
//1. harus ada koneksi internet,
//2. database gammu

$urlhosting = "http://localhost/bankscript/receiver.php";
$dbname = 'gammu';
$dbuser = 'root';
$dbpass = '';
$dbhost = 'localhost';


if(mysql_connect($dbhost,$dbuser,$dbpass)){
mysql_select_db($dbname);
}else{
echo 'DB ne ra konek!!';
}

//bukak sms satu persatu

$q = "SELECT `SenderNumber`,`TextDecoded`,`UpdatedInDB` FROM `inbox` WHERE `Processed`='false'";
$mq = mysql_query($q);
$n = mysql_query($q);

while($r=mysql_fetch_array($mq)){
$sms = $r['TextDecoded'];
$nohp = $r['SenderNumber'];
$time = $r['UpdatedInDB'];
$id = $r['ID'];
$url = $urlhosting . "?sms=".$sms."&nohp=".$nohp."&time="$time;
$hostingopen = fopen($url,"r");
$hostingread = fread($hostingopen,100);
//jika sukses mengantarkan URL
if($hostingread=="OK"){

$q2="UPDATE `inbox` SET `Processed`='true' WHERE `ID`='$id'";
mysql_query($q2)
}
}






?>

Untuk $urlhosting silakan dipasang saka url website anda, misal http://sekulakusekolahapik.sch.id/receiver.php

dan pada bagian ini tentukan sesuai dengan database

$dbname            =    'gammu';
$dbuser            =    'root';
$dbpass            =    '';
$dbhost            =    'localhost';


Kemudian pada bagian hosting kita letakkan script php ini untuk memasukkan sms ke dalam tabel smsnya


<?php
$ipallow='127.0.0.1';
//tidak harus disitu



if(($_SERVER['REMOTE_ADDR'])!=$ipallow){
echo "NOT ALLOWED";
}else{


$dbname            =    'smssekolah';
$dbuser            =    'smssekolah';
$dbpass            =    'admine_hosting_mambu_prengus';
$dbhost            =    'localhost';


if(mysql_connect($dbhost,$dbuser,$dbpass)){
    mysql_select_db($dbname);
}else{
    echo 'DB ne ra konek!!';
}



if(isset($_GET['nohp'])){

echo "OK";

$sms=$_GET['sms'];
$nohp=$_GET['nohp'];
$time=$_GET['time'];

$q="INSERT INTO `sms_masuk` (`id`,`nohp`,`sms`,`time`) VALUES ('','$nohp','$sms','$time')";
mysql_query($q);

}
}
?>


Nah sekarang, testlah dengan sms ke nomer SMS Gateway.. dan lihatlah pada data SMS di hosting.. Begitulah kira kira secara sederhana, dan akan saya tambahkan kapan-kapan setelah pengembaraan nanti malam berlanjut...

CMIIW

Selasa, 15 Juni 2010

[share] Simple Script Untuk Mengadministrasi Gammu

Setelah kemarin share tentang tutorial Gammu dan script sederhana untuk operasional SMS Gammu, kali ini saya coba share tentang script untuk melakukan administrasi standard Gammu. Script ini berfungsi untuk : Mematikan Service Gammu, Menghidupkan, Melakukan Detect Hardware, dan melakukan check Pulsa..

<?php

/*Script Sederhana untuk mengoperasikan/
mengadministrasi Gammu SMS Engine*/

#   http://bimosaurus.multiply.com  #
#                                    #
#####################################

/*Dipersilakan mengganti dan mengkopi tanpa seijin pembuat... */


/*Sesuaikan dengan LOKASI GAMMU anda*/


$gammuexe        =    "D:\Gammu-1.25.0-Windows\bin\gammu.exe";
$gammurc        =    "D:\Gammu-1.25.0-Windows\bin\gammurc";
$gammusvc        =    "D:\Gammu-1.25.0-Windows\bin\gammu-smsd.exe";
$gammusmsdrc    =    "D:\Gammu-1.25.0-Windows\bin\smsdrc";

    if(isset($_POST['mati'])){
        exec("$gammusvc -k",$ret);
        echo "<center>" . $ret[0] ."</center>";
    }
    if(isset($_POST['hidup'])){
        exec("$gammusvc -c $gammusmsdrc -s",$ret);
        echo "<center>" . $ret[0] ."</center>";
    }
    if(isset($_POST['cekdevice'])){
        exec("$gammuexe -c $gammurc --identify",$ret);
        echo "<center>" . $ret[0];
        echo $ret[1];
        echo $ret[2];
        echo $ret[3];
        echo $ret[4] . "</center>";       
    }
    if(isset($_POST['cekpulsa'])){
        $nodial=$_POST['nodial'];
        exec("$gammuexe -c $gammurc --getussd $nodial",$ret);
        echo $ret[1];
        echo "<center>" . $ret[0];
        echo $ret[2];
        echo $ret[3];
        echo $ret[4] . "</center>";       
    }
    ?>
       
   
<br /><br /><br /><br />   
        <form action="<?php echo $_SERVER['PHP_SELF'];?>?mod=admin" method="post">
            <input type="hidden" name="mati" value="mati">
            <input type="submit" value="MATIKAN">
        </form>
        <form action="<?php echo $_SERVER['PHP_SELF'];?>?mod=admin" method="post">
            <input type="hidden" name="hidup" value="hidup">
            <input type="submit" value="HIDUPKAN">
        </form>
        <form action="<?php echo $_SERVER['PHP_SELF'];?>?mod=admin" method="post">
            <input type="hidden" name="cekdevice" value="cekdevice">
            <input type="submit" value="CEK DEVICE">
        </form>
        <form action="<?php echo $_SERVER['PHP_SELF'];?>?mod=admin" method="post">
            <input type="hidden" name="cekpulsa" value="cekpulsa">
            <input type="text" name="nodial" value="*888#">
            <input type="submit" value="CEK PULSA">
        </form>
   
    <?php
   




?>

Demikian, script ini diletakkan pada document root anda, misal di bawah direktori [Docroot]/sms/ dan berilah nama semisal adminsms.php.

Panggillah file tersebut dari browser http://localhost/sms/adminsms.php, dan perhatikan apa yang terjadi.. Jangan komplain tentang tampilan, karena saya bukan graphics web desainer, ya tampilannya silakan dipercantik sendiri hihihihihi....