Instalasi Eclipse Mosquitto, Message Broker Untuk Protokol MQTT

0 306

Sebelumnya, embeddednesia telah mengulas sekilas mengenai protokol komunikasi MQTT, dan bagaimana protokol tersebut dapat diimplementasikan pada perangkat embedded yang memiliki concern terhadap pemakaian daya yang rendah dan bandwith yang terbatas. Pada tulisan kali ini, embeddednesia akan memberikan bahasan mengenai salah satu message broker untuk MQTT yang bersifat Open Source, namanya adalah Mosquitto.

Eclipse Mosquitto™ adalah Message broker yang mengimplementasikan protokol MQTT versi 3.1 dan 3.1.1 . Dari situs resminya, Mosquitto, telah mendukung berbagai sistem operasi mulai dari Mac OS, Microsoft Windows, dan berbagai varian distro Linux. Namun dalam kesempatan kali ini, embeddednesia memilih menggunakan Sistem Operasi Ubuntu dikarenakan sifatnya yang Open Source dan mudah digunakan terlebih jika dilakukan instalasi pada cloud atau VPS.

Bagi anda yang memiliki komputer Windows, anda bisa membuat Virtual Machine menggunakan Virtual Box dan menginstall Guest OS dengan Sistem Operasi  Ubuntu 16.04 LTS.  Jika semuanya sudah siap,terlebih dahulu tambahkan repositori ke Ubuntu

sudo apt-add-repository ppa:mosquitto-dev/mosquitto-p
sudo apt-get update

Untuk menginstall broker gunakan sudo apt-get install

sudo apt-get install mosquitto
sudo apt-get install mosquitto-clients

Baris pertama digunakan untuk menginstall mosquitto message broker, sedangkan baris kedua untuk menginstall mosquitto client yang nanti berguna, jika ingin menguji apakah mosquitto sudah berhasil terinstal dengan benar.

Begitu diinstall, mosquitto akan secara otomatis running di service. Jalankan sudo service mosquitto status untuk melihat status mosquitto. Jika hasilnya seperti berikut, maka mosquitto telah berjalan di service

sudo service mosquitto status
● mosquitto.service -- LSB: mosquitto MQTT v3.1 message broker
Loaded: loaded (/etc/init.d/mosquitto; bad; vendor preset: enabled)
Active: active (running) since Jum 2018-01-26 07:42:03 WIB; 13h ago
Docs: man:systemd-sysv-generator(8)
Process: 622 ExecStart=/etc/init.d/mosquitto start (code=exited, status=0/SUCC
CGroup: /system.slice/mosquitto.service
└─800 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
Jan 26 07:41:57 ROS-16 systemd[1]: Starting LSB: mosquitto MQTT v3.1 message bro
Jan 26 07:42:01 ROS-16 mosquitto[622]: * Starting network daemon: mosquitto
Jan 26 07:42:03 ROS-16 mosquitto[622]: …done.
Jan 26 07:42:03 ROS-16 systemd[1]: Started LSB: mosquitto MQTT v3.1 message brok
 

Port default yang digunakan mosquitto adalah 1883,

netstat -an | grep 1883
tcp 0 0 0.0.0.0:1883 0.0.0.0:* LISTEN
tcp6 0 0 :::1883 :::* LISTEN




Publish dan Subscribe

Untuk mensubscribe topic dapat digunakan command berikut

mosquitto_sub -V mqttv311 -t [nama topic] -d

Perintah tersebut  akan membuat MQTT client terhubung dengan server mosquitto lokal dan membuat request subscribe kepada topic dengan nama yang dideklarasikan  setelah – t. Sedangkan -V digunakan untuk mendeklarasikan versi mqtt yang digunakan (dalam contoh digunakan mqtt versi 3.1.1). Dan yang terakhir, -d  dipakai untuk mengaktifkan fitur debug

Seandainya, diinginkan subscribe sensor radiasi dari sebuah robot yang diberinama slvr01, topic -nya adalah sensor/slvr01/radiation. Sehingga pada terminal linux perintahnya menjadi sebagai berikut

mosquitto_sub -V mqttv311 -t sensor/slvr01/radiation -d
Client mosqsub|6487-ROS-16 sending CONNECT
Client mosqsub|6487-ROS-16 received CONNACK
Client mosqsub|6487-ROS-16 sending SUBSCRIBE (Mid: 1, Topic: sensor/slvr01/radiation, QoS: 0)
Client mosqsub|6487-ROS-16 received SUBACK
Subscribed (mid: 1): 0

Pertama Broker akan menerima request CONNECT dari client, dan memberikan balikan CONNACK (Conect Acknownlodge). Setelah berhasil, client akan melanjutkan dengan request SUBSCRIBE, dan kemudian broker akan menyetujuia permintaan subscribe dengan merespon  SUBACK (Subscribe Acknowlege).

image_01_012

Client bisa melakukan subscribe terhadap topic apapun, meskipun sebenarnya topic tersebut belum dibuat dan dipublish. Jika anda memperhatikan pada jendela terminal linux selang beberap saat SUBACK diterima, anda akan melihat trace PINREQ dan PINQRESP dikirimkan dan diterima. Trace tersebut menunjukkan bahwa koneksi antara client dan server berada dalam kondisi normal.

Client mosqsub|6487-ROS-16 sending PINGREQ
Client mosqsub|6487-ROS-16 received PINGRESP




Untuk mempublish message, digunakan command berikut

mosquitto_pub -V mqttv311 -t [namatopic] -m  "10 f" -d

Dimana deklarasi setelah -V menunjukan versi mqtt yang digunakan, sedangkan -t untuk mendeklarasikan topic yang dipublish, dan -m untuk mengirim payload atau isi message yang ingin dikirimkan. Jika diinginkan mengirim data 100 Bq untuk topic sensor/slvr01/radiation . buka jendela terminal baru dan masukkan perintah berikut

mosquitto_pub -V mqttv311 -t sensor/slvr01/radiation -m “100 Bq” -d
Client mosqpub|27736-ROS-16 sending CONNECT
Client mosqpub|27736-ROS-16 received CONNACK
Client mosqpub|27736-ROS-16 sending PUBLISH (d0, q0, r0, m1, ‘sensor/slvr01/radiation’, … (6 bytes))
Client mosqpub|27736-ROS-16 sending DISCONNECT

perhatikan terminal client dimana perintah subscribe dijalankan, anda akan melihat message yang dikirim pada terminal publisher telah diterima di sisi client subscriber.

Client mosqsub|6487-ROS-16 received PUBLISH (d0, q0, r0, m0, ‘sensor/slvr01/radiation’, … (6 bytes))
100 Bq

Selamat, kini anda telah berhasil menginstall Mosquitto MQTT Server dan mengujinya dengan mosquitto client untuk mempublish dan mensubscribe sebuah topic tertentu. Namun yang diuji pada tulisan ini hanyalah sebatas client dan server berada pada mesin yang sama (localhost).

Pada dunia nyata, anda akan dihadapkan pada client yang berjalan di mesin yang berbeda dengan mesin server. Berikutnya embeddednesia akan membahas mengenai masalah ini.

%d blogger menyukai ini: