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.
mqtt adalah 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 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