Java SMS Gateway dengan SMSLib 3.5.1

Abis lebaran, bukannya tambah semangat nulis malah jadi agak males. Abis berjuang melawan kemalesan, akhirnya menang juga dan bisa nulis lagi. hehehe

Udah 2 mingguan ini berkutat dengan SMS Gateway, awalnya sih berkutat dengan GAMMU tapi sekarang berkutat dengan SMSLib. Sebenere GAMMU enak banget konfigurasi dan pemakaiannya,  hanya saja pengene agar lebih mudah integrasi dengan Java makanya dengan agak terpaksa pindah deh ke SMSLib.

SMSLib sendiri merupakan Library java yang digunakan untuk mempermudah mengirim dan menerima SMS tanpa harus menggunakan AT Command secara langsung. SMSLib murni menggunakan Java, hanya saja SMSLib membutuhkan JavaComm atau RXTX buat komunikasi dengan Hardware.

Awalnya sih, agak bingung juga make SMSLib. Setelah coba sana sini akhirnya seneng juga makenya. Hehehe

Dan yang bikin seneng di SMSLib ada program yang dapat digunakan buat SMS Daemon kayal GAMMU, namanya SMSServer. Program ini mirip banget cara kerjanya sama gammu-smsd.  Yang menarik dengan SMSServer, kita bisa modifikasi sourcenya sehinggan kita dapat merubah sesuai dengan yang kita butuhin.

Saat ini aku masih berkutat dengan memodifikasi SMSServer agar dapat lebih mudah dioperasikan. Seperti penambahan GUI yang memudahkan konfigurasi Gateway dan juga melakukan Start and Stop service SMSServer.

Update ya … 😀

Belum lama ini dibuat project netbean yang baru dengan memanfaatkan library smslib. Project itu belum jadi seperti smsserver di smslib, tetapi hanya berupa aplikasi yang berfungsi untuk membaca dan mengirim sms, serta dapat digunakan untuk mengirim USSD. Aplikasi tersebut dapat dikembangkan untuk sms gateway yang lebih baik lagi. Project tersebut dapat dikunjungi https://achmadlutfi.wordpress.com/java-aplikas-sms-dengan-smslib/

Selamat mencobanya.

, , , , ,

  1. #1 by Royan Sableng on October 27, 2011 - 11:19 pm

    Hadach pak.. semakin ku jauh melangkah rasanya kangen untuk kembali ke SMKDU tercinta semakin tak terbendung, semakin jauh semakin tak mengerti bahasa computer. mengapa aku tak meeruskan di bidang komputer, tapi tak apalah. didup ini pilihan, dan yang kuambil saat ini mungkin adalah yang terbaik. amien.

    Doakan muridmu ini succes ya pak..
    selengkapnya klik disini
    Terimakasih

  2. #2 by edy on February 28, 2012 - 5:04 pm

    selamat siang pak,,

    saya ingin tanya,bagaimana menjalankan kembali setelah Service.getInstance()stopService() dipanggil,
    Saya telah menggunakan Service.getInstance()startService() tetapi tidak
    bekerja.

    mohon pencerahannya,
    terimakasih.

    • #3 by Achmad on March 11, 2012 - 6:16 pm

      Salam kenal…

      Saat service distart, smslib juga akan memulai Thread yang digunakan untuk mengontrol komunikasi dengan com port.
      Saat method stopService() dijalankan, mungkin semua thread tidak di interrupt.

      Coba mas kirimkan juga source codenya untuk diteliti lebih detail.

  3. #4 by edy on March 22, 2012 - 9:13 am

    terimakasih balasannya pak,

    code :
    public class SMSReadService {
    //panel status
    private Status status = null;
    private JTextArea textArea;
    Service service;
    SerialModemGateway gateway;
    private Connection koneksi;

    public SMSReadService(Connection koneksi, JTextArea textArea) {
    this.koneksi = koneksi;
    this.textArea = textArea;
    }

    public void setStatus(Status status) {
    this.status = status;
    }

    public void stopService() throws Exception{
    this.service.stopService();
    }

    public void startService() throws Exception {
    PesanMasukHandler pesanMasuk =
    new PesanMasukHandler();

    PanggilanMasukHandler panggilanMasuk =
    new PanggilanMasukHandler();

    GatewayStatusHandler statusGateway =
    new GatewayStatusHandler();

    this.service = new Service();

    gateway = new SerialModemGateway (
    “Wavecom.COM”,
    “COM7”,
    115200,
    “Wavecom”,
    “”);

    gateway.setIpProtocol(IPProtocols.BINARY);

    gateway.setProtocol(Protocols.PDU);

    gateway.setInbound(true);

    gateway.setOutbound(true);

    gateway.setSimPin(“0000”);

    this.service.setInboundMessageNotification(pesanMasuk);
    this.service.setCallNotification(panggilanMasuk);
    this.service.setGatewayStatusNotification(statusGateway);
    this.service.addGateway(gateway);

    this.service.startService();

    if(status != null ) {
    this.status.setManufacture(gateway.getManufacturer());
    this.status.setModel(gateway.getModel());
    this.status.setSerialNo(gateway.getSerialNo());
    this.status.setSimImsi(gateway.getImsi());
    this.status.setSignal(gateway.getSignalLevel());
    this.status.setBaterai(gateway.getBatteryLevel());
    }

    }

    class PesanMasukHandler
    implements IInboundMessageNotification {

    public void process(
    String idGateway,
    MessageTypes tipePesan,
    InboundMessage pesanMasuk) {
    if(tipePesan == MessageTypes.STATUSREPORT) return;

    try {
    String sql = “INSERT INTO sms_masuk VALUES (NULL,?,?,?,?,?,?)”;
    PreparedStatement prepare = koneksi.prepareStatement(sql);
    prepare.setString(1, pesanMasuk.getText());
    prepare.setString(2, “+”+pesanMasuk.getSmscNumber());
    prepare.setString(3, pesanMasuk.getPduUserData());
    prepare.setString(4, pesanMasuk.getEncoding().name());
    prepare.setString(5, pesanMasuk.getGatewayId());
    prepare.setDate(6, new java.sql.Date(pesanMasuk.getDate().getTime()));

    prepare.executeUpdate();
    } catch (SQLException ex) {
    System.out.println(“Pesan Gagal Disimpan”);
    System.out.println(ex.getMessage());
    }

    textArea.append(“\nPesan Diterima:\n”+
    pesanMasuk.getSmscNumber() +”\n”+
    pesanMasuk.getText());
    textArea.append(“\n—————————–“);

    try {
    SMSReadService.this.service.deleteMessage(pesanMasuk);
    } catch (Exception e){
    }
    }
    }

    class PanggilanMasukHandler implements ICallNotification {
    public void process(
    String idGateway,
    String noHP) {

    }

    }

    class GatewayStatusHandler implements
    IGatewayStatusNotification {
    public void process(
    String idGateway,
    GatewayStatuses statusLama,
    GatewayStatuses statusBaru) {

    }

    }
    }

    mohon pencerahannya,

    • #5 by Achmad on March 24, 2012 - 6:18 pm

      Oia mas, sekalian Pesan errornya juga tolong dikirim juga, Hehehe

      • #6 by edy on March 26, 2012 - 9:01 am

        org.smslib.GatewayException: Comm library exception: java.lang.RuntimeException: javax.comm.PortInUseException: Port currently owned by Unknown Windows Application at org.smslib.modem.SerialModemDriver.connectPort(SerialMod mDriver.java: 102) at org.smslib.modem.AModemDriver.connect(AModemDriver.java 114) at org.smslib.modem.ModemGateway.startGateway(ModemGate ay.java:189)
        at org.smslib.Service$1Starter.run(Service.java:276)

  4. #7 by edy on April 9, 2012 - 8:57 am

    org.smslib.GatewayException: Comm library exception: java.lang.RuntimeException: javax.comm.PortInUseException: Port currently owned by Unknown Windows Application at org.smslib.modem.SerialModemDriver.connectPort(SerialMod mDriver.java: 102) at org.smslib.modem.AModemDriver.connect(AModemDriver.java 114) at org.smslib.modem.ModemGateway.startGateway(ModemGate ay.java:189)
    at org.smslib.Service$1Starter.run(Service.java:276)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: