Advertisement

Eclipse Paho, Library MQTT Client dari Eclipse Foundation

0 1,140

Eclipse Paho adalah umbrella project untuk beberapa implementasi klien MQTT dan MQTT-SN yang menggunakan berbagai bahasa pemrograman. Eclipse Paho adalah salah satu dari project open source untuk penerapan MQTT client yang tersedia dan secara aktif dipelihara oleh dukungan besar komunitas. Paho juga mempunyai implementasi, salah satunya, untuk bahasa pemrograman Java yang juga cocok jika digunakan untuk penerapan di lingkungan sistem embedded, seperti pada Android atau Single Board Computer layaknya Raspberry Pi.

Versi Java dari Eclipse Paho, dapat dibilang sudah stabil dan digunakan oleh banyak perusahaan di berbagai bidang industri untuk terhubung dengan MQTT broker. API synchronous/blocking dari  Paho memudahkan programmer untuk mengimplementasikan logika aplikasi MQTT dengan cara yang bersih dan ringkas. sementara API asinkronus memungkinkan programmer melakukan kendali penuh terhadap aplikasi MQTT yang menuntut performa tinggi.

Untuk membaca dokumentasi lebih lengkap tentang Eclipse Paho dapat merujuk pada  situs resminya  pada tautan berikut  http://www.eclipse.org/paho
  • MQTT Message Broker

Sebelum membuat program sederhana menggunakan Eclipse Paho, terlebih dahulu pastikan telah memiliki MQTT Message Broker yang telah berjalan pada komputer server (bisa juga menggunakan virtual machine). Pembaca bisa merujuk ke tulisan sebelumnya  tentang bagaimana menginstal dan melakukan konfigurasi Eclipse Mosquitto

  • Buat project  Maven

Jika pembaca belum memahami apa itu Maven, dan bagaimana membuat project Java dengan Maven, silahkan  membaca tulisan sebelumnya tentang Maven, dan bagaimana menginstal dan membuat project baru tentang Maven

Ketik perintah berikut untuk membuat project baru lalu import project tersebut ke dalam Eclipse IDE

[simterm]

$ mvn archetype:generate -DgroupId=com.embeddednesia.java -DartifactId=java-mqtt-client -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

[/simterm]
  • Ubah pom.xml

Hal pertama yang perlu diubah adalah, metambahkan tag <properties> pada pom.xml sehingga project menggunakan JRE System Library -nya, berikutnya menambahkan dependensi Eclipse Paho sehingga maven dapat  mengunduh library Eclipse Paho dari Maven Repository. Hasil akhir dari pom.xml yang telah diubah adalah menjadi sebagai berikut


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.embeddednesia.java</groupId>
<artifactId>java-mqtt-client</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>java-mqtt-client</name>
<url>http://maven.apache.org</url>
<properties>
<!– https://maven.apache.org/general.html#encoding-warning –>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.eclipse.paho</groupId>
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
<version>1.2.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
view raw

pom.xml

hosted with ❤ by GitHub
  • Buat Program Publisher

Ubah code pada  App.java menjadi sebagai berikut, code berikut akan mempublish nilai 200Bq pada topic yang bernama sensor/slvr01/radiation. Jalankan program lalu perhatikan pada mqtt client yang telah men-subscribe topic tesebut

[java highlight=”18-24″]

package com.embeddednesia.java;

import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;

/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
try {
MqttClient client = new MqttClient("tcp://192.168.8.102:1883",
MqttClient.generateClientId(),
new MemoryPersistence());
MqttConnectOptions options = new MqttConnectOptions();
options.setMqttVersion(MqttConnectOptions.MQTT_VERSION_3_1_1);
client.connect(options);
client.publish("sensor/slvr01/radiation", "200 Bq".getBytes(),2, false);

} catch (MqttException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

[/java]

Perhatikan pada baris 18-20 dimana MqttClient perlu diconstruct terlebih dahulu dengan alamat IP dari Mqtt Broker berada, pada contoh ini alamatnya adalah tcp://192.168.8.102:1883, sesuaikan dengan mesin yang pembaca gunakan.

Setelah MqttClient berhasil di-instansi, lalu koneksikan dengan Mqtt Broker dengan seperti pada baris 23, sebelumnya jangan lupa untuk mengatur option, seperti halnya versi MQTT yang sedang digunakan.

Untuk melakukan publish sebuah topic gunakan baris 24 dimana sensor/slvr01/radiation adalah nama topic yang di-publish, sedangkan 200 Bq adalah payload yang dikirim. Nilai 2 adalah QoS yang artinya Quality of Service, yang secara singkat didefinisikan sebagai sebuah persetujuan antara pengirim pesan dan penerima pesan yang menentukan jaminan terhadap pengiriman sebuah pesan tertentu,

Ada 3 level dari QoS di dalam MQTT

  • At most once (0)
  • At least once (1)
  • Exactly once (2).

 

Tinggalkan Balasan

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses