protokol mqtt di tahun 2023

Mengenal MQTT

 

Protokol MQTT (Message Queuing Telemetry Transport) adalah protokol yang berjalan pada diatas stack TCP/IP dan mempunyai ukuran paket data dengan low overhead yang kecil (minimum 2 bytes) sehingga berefek pada konsumsi catu daya yang juga cukup kecil.

 

Protokol ini adalah jenis protokol data-agnostic yang artinya anda bisa mengirimkan data apapun seperti data binary, text bahkan XML ataupun JSON dan protokol ini memakai model publish/subscribe daripada model client-server.

 

Stack TCP/IP sekarang sudah banyak di dukung oleh mikrokontroler seperti seri STM32Fx7 maupun device board yang umum dipasaran seperti Arduino Yun, Arduino + Ethernet Shield, ESP8266 WiFi SoC, Raspberry Pi dll. Jadi sebenarnya banyak pilihan untuk belajar IoT dengan memakai protokol ini ditambah lagi harga device yang semakin murah dan terjangkau.

 

Sistem umum MQTT seperti pada gambar diatas membutuhkan dua komponent perangkat lunak utama yaitu

 

MQTT Client yang nantinya akan di install di device. Untuk Arduino anda bisa memakai pubsubclient, pustaka seperti mqtt.js bisa dipakai pada platform Node.js di Raspberry Pi ataupun laptop.

 

MQTT Broker yang berfungsi untuk menangani publish dan subscribe data. Untuk platform Node.js anda bisa memakai broker mosca sedangkan untuk platform yg lain banyak broker tersedia seperti mosquitto, HiveMQ dll.

 

Keuntungan dari sistem publish/subscribe adalah antara sumber pengirim data (publisher) dan penerima data (klien) tidak saling mengetahui karena ada broker diantara mereka atau istilah kerennya yaitu space decoupling dan yang lebih penting lagi yaitu adanya time decoupling dimana publisher dan klien tidak perlu terkoneksi secara bersamaan, misalnya klien bisa saja disconnect setelah melakukan subscribe ke broker dan beberapa saat kemudian klien connect kembali ke broker dan klien tetap akan menerima data yang terpending sebelumnya proses ini dikenal dengan mode offline.

 

Sebelum Internet of Things menjadi populer, atau saat dimana istilah Internet of Things pertama disebutkan di media (akhir tahun 90-an), Andy Stanford-Clark berkolaborasi dengan Arlen Nipper (sekarang CirrusLink) dalam merancang sebuah protokol untuk berkomunikasi dengan sistem SCADA di industri minyak dan gas yang pertama dimulai sebagai protokol untuk industri tertentu dengan cepat menjadi protokol open-source untuk komunikasi perangkat IoT di masa sekarang.

 

Cara Kerja protokol mqtt

 

Pada MQTT terdapat Publisher, Subscriber dan Broker.

 

Publisher adalah yang mengirimkan data, Subscriber adalah yang menerima data, dan Broker adalah yang meneruskan data dari Publisher ke Subscriber.

 

Pada MQTT setiap Client bisa menjadi Publisher sekaligus bisa menjadi Subscriber juga. Artinya bisa mengirim juga menerima data.

 

Misal Client 1 menggunakan Arduino Uno, maka Arduino uno tersebut bisa mengirim dan juga menerima data dari Client 2. Nah Client 2 ini bisa Arduino lagi, bisa juga Aplikasi atau Web.

 

 

Sinyal Kontrol

 

MQTT mempunyai 14 tipe sinyal kontrol seperti berikut:

 

CONNECT — Client request to connect to Server

CONNACK — Connection Acknowledgement

PUBLISH — A message which represents a new/separate publish

PUBACK — QoS 1 Response to a PUBLISH message

PUBREC — First part of QoS 2 message flow

PUBREL — Second part of QoS 2 message flow

PUBCOMP — Last part of the QoS 2 message flow

SUBSCRIBE — A message used by clients to subscribe to specific topics

SUBACK — Acknowledgement of a SUBSCRIBE message

UNSUBSCRIBE — A message used by clients to unsubscribe from specific topics

UNSUBACK — Acknowledgement of an UNSUBSCRIBE

message

PINGREQ — Heartbeat message

PINGRESP — Heartbeat message acknowledgement

DISCONNECT — Graceful disconnect message sent by clients

before disconnecting