MQTT: Protokol Komunikasi yang Banyak Digunakan dalam IoT
Apa Itu MQTT?
MQTT (Message Queuing Telemetry Transport) adalah protokol komunikasi yang dirancang untuk pertukaran pesan dengan ukuran relatif kecil dan kebutuhan jaringan yang ringan.
MQTT banyak digunakan dalam Internet of Things (IoT) karena perangkat IoT sering memiliki keterbatasan sumber daya, seperti kapasitas prosesor, memori, bandwidth, dan daya.
Berbeda dengan komunikasi yang membuat dua perangkat harus berkomunikasi secara langsung, MQTT menggunakan pola publish-subscribe. Pola ini memungkinkan perangkat pengirim dan penerima tidak perlu mengetahui alamat satu sama lain secara langsung.
Sebagai contoh, sensor suhu dapat mengirimkan data ke topic tertentu. Perangkat lain yang berlangganan topic tersebut dapat menerima data secara otomatis melalui MQTT broker.
Secara sederhana, arsitektur MQTT terdiri dari:
Publisher → MQTT Broker → Subscriber
Konsep ini membuat MQTT cocok untuk menghubungkan banyak perangkat dalam satu sistem IoT.
Mengapa MQTT Banyak Digunakan dalam IoT?
Perangkat IoT memiliki karakteristik yang berbeda dengan komputer atau server biasa.
Sensor dan mikrokontroler seperti ESP32 atau ESP8266 sering memiliki sumber daya yang lebih terbatas. Koneksi jaringan juga dapat tidak stabil, terutama pada perangkat yang ditempatkan di lokasi tertentu.
MQTT dirancang untuk komunikasi yang relatif ringan sehingga dapat membantu perangkat bertukar data tanpa membutuhkan mekanisme komunikasi yang terlalu kompleks.
Beberapa alasan MQTT populer untuk IoT adalah:
- Protokolnya ringan.
- Menggunakan pola publish-subscribe.
- Cocok untuk jaringan dengan bandwidth terbatas.
- Dapat digunakan untuk komunikasi banyak perangkat.
- Mendukung berbagai tingkat Quality of Service (QoS).
- Dapat menggunakan mekanisme keamanan seperti TLS.
- Cocok untuk perangkat dengan sumber daya terbatas.
Bagaimana Cara Kerja MQTT?
Untuk memahami MQTT, ada tiga komponen utama yang perlu diketahui, yaitu publisher, subscriber, dan broker.
1. Publisher
Publisher adalah perangkat atau aplikasi yang mengirimkan pesan.
Contohnya, ESP32 yang memiliki sensor suhu dapat bertindak sebagai publisher. Ketika membaca suhu 28°C, ESP32 dapat mengirimkan data tersebut ke topic tertentu.
Misalnya:
rumah/kamar/suhu
Publisher tidak perlu mengirimkan data langsung kepada perangkat tertentu. Publisher cukup mengirim pesan ke topic melalui broker.
2. Subscriber
Subscriber adalah perangkat atau aplikasi yang menerima pesan.
Subscriber melakukan subscribe terhadap topic tertentu. Jika ada publisher yang mengirim pesan ke topic tersebut, broker akan meneruskannya kepada subscriber yang berlangganan.
Contohnya, dashboard monitoring dapat subscribe ke:
rumah/kamar/suhu
Ketika ESP32 mengirim data suhu, dashboard akan menerima informasi tersebut.
3. MQTT Broker
Broker merupakan pusat komunikasi dalam sistem MQTT.
Broker menerima pesan dari publisher kemudian meneruskannya kepada subscriber yang berlangganan topic terkait.
Alurnya menjadi:
ESP32 → Broker → Dashboard
ESP32 tidak harus mengetahui lokasi atau alamat dashboard. Dashboard juga tidak harus mengetahui lokasi ESP32 secara langsung.
Broker yang mengatur distribusi pesan tersebut.
Apa Itu MQTT Topic?
Topic adalah alamat logis yang digunakan untuk mengelompokkan pesan MQTT.
Topic biasanya memiliki struktur bertingkat menggunakan tanda /.
Contohnya:
rumah/ruang-tamu/suhu
rumah/ruang-tamu/kelembapan
rumah/kamar/lampu
Dengan struktur tersebut, perangkat dapat berlangganan data yang memang dibutuhkan.
Misalnya dashboard hanya ingin menerima data suhu ruang tamu. Dashboard cukup subscribe ke:
rumah/ruang-tamu/suhu
Topic menjadi salah satu konsep paling penting dalam MQTT karena menentukan bagaimana pesan dikelompokkan dan didistribusikan.
Contoh Struktur Topic MQTT
Dalam proyek IoT yang lebih besar, struktur topic sebaiknya dibuat konsisten.
Misalnya untuk sistem smart home:
rumah/lantai1/kamar1/suhu
rumah/lantai1/kamar1/kelembapan
rumah/lantai1/kamar1/lampu
rumah/lantai1/kamar2/suhu
rumah/lantai1/kamar2/lampu
Struktur tersebut memudahkan perangkat dan aplikasi melakukan subscribe sesuai kebutuhan.
Sebagai contoh, aplikasi yang ingin menerima seluruh data dari kamar 1 dapat menggunakan wildcard:
rumah/lantai1/kamar1/#
MQTT menyediakan wildcard tertentu untuk membantu proses subscription.
Apa Itu Publish dan Subscribe?
Publish dan subscribe merupakan inti dari komunikasi MQTT.
Publish berarti mengirim pesan ke sebuah topic.
Contohnya:
Topic: rumah/kamar/suhu
Pesan: 28.5
Sementara itu, subscribe berarti meminta broker mengirimkan pesan dari topic tertentu kepada subscriber.
Misalnya:
Subscribe: rumah/kamar/suhu
Ketika publisher mengirimkan:
28.5
subscriber yang berlangganan topic tersebut dapat menerima pesan itu.
Apa Itu MQTT QoS?
QoS (Quality of Service) menentukan tingkat jaminan pengiriman pesan dalam MQTT.
MQTT memiliki tiga level QoS:
QoS 0 — At Most Once
Pesan dikirim paling banyak satu kali.
Tidak ada jaminan bahwa pesan akan sampai ke penerima.
Kelebihannya adalah overhead komunikasi rendah sehingga cocok ketika kehilangan sebagian data tidak menjadi masalah.
Contohnya adalah sensor yang mengirim data suhu setiap beberapa detik. Jika satu data hilang, data berikutnya masih akan dikirim.
QoS 1 — At Least Once
Pesan dijamin dikirim setidaknya satu kali, tetapi dalam kondisi tertentu pesan dapat diterima lebih dari sekali.
Karena itu, aplikasi yang menggunakan QoS 1 perlu mempertimbangkan kemungkinan adanya pesan duplikat.
QoS ini berguna ketika pesan penting untuk diterima tetapi duplikasi masih dapat ditangani oleh aplikasi.
QoS 2 — Exactly Once
QoS 2 dirancang untuk memastikan pesan diterima tepat satu kali.
Tingkat ini memiliki proses komunikasi yang lebih kompleks dibandingkan QoS 0 dan QoS 1 sehingga overhead-nya lebih tinggi.
Pemilihan QoS sebaiknya disesuaikan dengan kebutuhan aplikasi, bukan sekadar memilih level tertinggi.
Apa Itu MQTT Retained Message?
MQTT juga memiliki konsep retained message.
Ketika sebuah pesan ditandai sebagai retained, broker dapat menyimpan pesan terakhir pada topic tersebut.
Jika subscriber baru melakukan subscribe ke topic tersebut, broker dapat langsung memberikan pesan terakhir yang tersimpan.
Contohnya, sensor mengirim:
rumah/kamar/suhu = 28.5
Jika pesan tersebut retained, aplikasi yang baru subscribe dapat memperoleh nilai suhu terakhir tanpa harus menunggu sensor mengirim data berikutnya.
Fitur ini berguna untuk data status seperti:
- Status lampu.
- Status perangkat.
- Nilai sensor terakhir.
- Status koneksi perangkat tertentu.
Apa Itu MQTT Last Will and Testament?
MQTT menyediakan fitur yang dikenal sebagai Last Will and Testament (LWT).
Fitur ini memungkinkan perangkat menentukan pesan yang akan diterbitkan oleh broker apabila koneksi perangkat terputus secara tidak normal.
Misalnya, ESP32 memiliki status:
rumah/perangkat/esp32/status = online
Jika koneksi ESP32 terputus secara tidak terduga, broker dapat menerbitkan:
rumah/perangkat/esp32/status = offline
Dengan mekanisme tersebut, dashboard dapat mengetahui bahwa perangkat tidak lagi terhubung.
MQTT vs HTTP, Apa Bedanya?
MQTT dan HTTP sama-sama dapat digunakan untuk komunikasi dalam sistem IoT, tetapi cara kerjanya berbeda.
| Aspek | MQTT | HTTP |
|---|---|---|
| Model komunikasi | Publish-subscribe | Request-response |
| Broker | Dibutuhkan | Tidak seperti MQTT |
| Overhead | Relatif ringan | Umumnya lebih besar |
| Cocok untuk | Telemetri dan pesan IoT | API dan komunikasi web |
| Komunikasi real-time | Sangat cocok | Bisa dilakukan |
| Perangkat terbatas | Sangat cocok | Bisa lebih berat |
| Koneksi banyak perangkat | Efisien untuk pola tertentu | Bergantung desain aplikasi |
HTTP sangat umum digunakan dalam aplikasi web dan API. Sementara MQTT sangat menarik ketika banyak perangkat perlu mengirimkan data atau menerima perintah melalui sistem perantara.
Keduanya bahkan dapat digunakan bersama.
Contohnya, ESP32 mengirim data sensor menggunakan MQTT, sementara aplikasi web mengambil data yang telah diproses melalui API berbasis HTTP.
MQTT vs WebSocket
WebSocket memungkinkan komunikasi dua arah secara terus-menerus antara client dan server.
MQTT memiliki model yang berbeda karena komunikasi dilakukan melalui broker menggunakan mekanisme publish-subscribe.
WebSocket sering digunakan untuk aplikasi web real-time, sedangkan MQTT banyak digunakan untuk komunikasi perangkat IoT.
Dalam beberapa sistem, keduanya dapat digunakan bersamaan. Misalnya MQTT digunakan sebagai komunikasi internal perangkat, kemudian WebSocket digunakan untuk menampilkan data secara real-time pada dashboard web.
Apakah MQTT Aman?
MQTT dapat digunakan dengan mekanisme keamanan, tetapi tingkat keamanannya sangat bergantung pada konfigurasi sistem.
Beberapa mekanisme yang umum digunakan antara lain:
- TLS/SSL untuk mengenkripsi komunikasi.
- Username dan password untuk autentikasi.
- Access control untuk membatasi akses ke topic tertentu.
- Sertifikat digital dalam sistem yang membutuhkan keamanan lebih tinggi.
- Segmentasi jaringan untuk mengurangi risiko akses tidak sah.
Penggunaan MQTT tanpa autentikasi atau enkripsi pada lingkungan yang tidak tepercaya dapat meningkatkan risiko keamanan.
Karena itu, sistem produksi sebaiknya tidak hanya mengandalkan protokol MQTT, tetapi juga menerapkan konfigurasi keamanan yang sesuai.
Contoh Penggunaan MQTT pada ESP32
ESP32 sering digunakan sebagai perangkat IoT yang berkomunikasi menggunakan MQTT.
Misalnya terdapat sensor suhu yang terhubung ke ESP32.
Alurnya:
- Sensor membaca suhu.
- ESP32 mendapatkan nilai suhu.
- ESP32 terhubung ke jaringan Wi-Fi.
- ESP32 terhubung ke MQTT broker.
- ESP32 melakukan publish nilai suhu.
- Broker menerima pesan.
- Dashboard yang subscribe pada topic menerima data.
- Dashboard menampilkan suhu kepada pengguna.
Contoh topic:
sensor/ruang1/suhu
Contoh payload:
28.5
Dengan konsep ini, ESP32 tidak perlu berkomunikasi langsung dengan dashboard.
Contoh Penggunaan MQTT pada Smart Home
MQTT juga cocok untuk sistem smart home.
Misalnya terdapat lampu yang dikendalikan melalui MQTT.
Aplikasi smartphone dapat melakukan publish:
rumah/kamar/lampu
dengan payload:
ON
ESP32 yang mengontrol relay melakukan subscribe pada topic tersebut.
Ketika menerima pesan ON, ESP32 dapat mengaktifkan relay sehingga lampu menyala.
Untuk mematikan lampu, aplikasi dapat mengirim:
OFF
Alurnya:
Aplikasi → MQTT Broker → ESP32 → Relay → Lampu
Model ini memungkinkan aplikasi dan perangkat IoT berkomunikasi tanpa harus terhubung langsung satu sama lain.
Apa Itu MQTT Broker?
MQTT broker adalah software atau layanan yang bertugas menerima, mengelola, dan meneruskan pesan MQTT.
Beberapa broker MQTT yang populer antara lain:
- Eclipse Mosquitto
- EMQX
- HiveMQ
- VerneMQ
Broker dapat dijalankan pada komputer, server, cloud, atau perangkat tertentu sesuai kebutuhan sistem.
Untuk belajar, pengguna dapat menjalankan broker MQTT secara lokal sehingga dapat memahami proses publish dan subscribe tanpa langsung menggunakan layanan cloud.
Kelebihan MQTT
MQTT memiliki beberapa kelebihan yang membuatnya populer dalam pengembangan IoT:
- Ringan dan dirancang untuk komunikasi pesan.
- Efisien untuk perangkat dengan sumber daya terbatas.
- Mendukung pola publish-subscribe.
- Dapat menangani komunikasi banyak perangkat.
- Menyediakan QoS dengan beberapa tingkat jaminan pengiriman.
- Mendukung retained message.
- Memiliki fitur Last Will and Testament.
- Dapat diamankan menggunakan TLS dan autentikasi.
Kekurangan MQTT
MQTT juga memiliki beberapa keterbatasan.
- Membutuhkan broker sebagai bagian penting dari arsitektur.
- Sistem broker perlu diamankan dan dikelola dengan baik.
- QoS yang lebih tinggi dapat meningkatkan overhead komunikasi.
- Struktur topic perlu dirancang dengan baik pada sistem berskala besar.
- MQTT bukan pengganti semua jenis protokol komunikasi.
Dengan memahami keterbatasannya, MQTT dapat digunakan pada kasus yang memang sesuai dengan karakteristik protokol tersebut.
Apakah MQTT Sulit Dipelajari?
Untuk pemula, MQTT mungkin terlihat rumit karena memiliki istilah seperti broker, publisher, subscriber, topic, payload, QoS, dan retained message.
Namun, konsep dasarnya sebenarnya cukup sederhana.
Bayangkan MQTT seperti kantor pos:
- Publisher adalah pengirim surat.
- Subscriber adalah penerima surat.
- Broker adalah kantor pos yang menerima dan meneruskan surat.
- Topic adalah alamat atau kategori tujuan.
- Message/payload adalah isi surat.
Setelah memahami analogi tersebut, konsep MQTT biasanya menjadi lebih mudah dipahami.
Cara Mulai Belajar MQTT untuk Pemula
Cara terbaik mempelajari MQTT adalah dengan membuat proyek sederhana.
Anda dapat memulai dengan:
- Siapkan ESP32 atau ESP8266.
- Hubungkan board ke Wi-Fi.
- Jalankan MQTT broker.
- Buat program sederhana untuk melakukan publish.
- Gunakan aplikasi MQTT client untuk melakukan subscribe.
- Coba kirim data sensor.
- Uji QoS yang berbeda.
- Pelajari retained message dan Last Will and Testament.
- Setelah memahami dasar, buat sistem kontrol relay melalui MQTT.
Proyek sederhana seperti sensor suhu dan kontrol lampu sudah cukup untuk memahami konsep utama MQTT.
Kesimpulan
MQTT adalah protokol komunikasi ringan yang sangat cocok untuk berbagai aplikasi Internet of Things. Dengan model publish-subscribe, perangkat IoT dapat bertukar data melalui MQTT broker tanpa harus berkomunikasi secara langsung.
Konsep utama yang perlu dipahami adalah publisher, subscriber, broker, topic, message, dan QoS. Setelah memahami konsep tersebut, fitur seperti retained message dan Last Will and Testament akan lebih mudah dipelajari.
MQTT sangat cocok digunakan bersama mikrokontroler seperti ESP32 dan ESP8266, terutama untuk proyek monitoring, smart home, sensor IoT, dan otomatisasi.
Bagi pemula, cara terbaik untuk memahaminya adalah langsung mencoba proyek sederhana: satu ESP32 sebagai publisher, satu aplikasi sebagai subscriber, dan satu MQTT broker sebagai perantara komunikasi.
FAQ MQTT
Apa itu MQTT dalam IoT?
MQTT adalah protokol komunikasi ringan yang digunakan untuk mengirim dan menerima pesan antarperangkat. MQTT banyak digunakan dalam IoT karena mendukung komunikasi yang efisien untuk perangkat dengan sumber daya terbatas.
Apa fungsi MQTT broker?
MQTT broker berfungsi sebagai perantara komunikasi. Broker menerima pesan dari publisher kemudian meneruskannya kepada subscriber yang berlangganan topic terkait.
Apa itu publisher dan subscriber dalam MQTT?
Publisher adalah perangkat yang mengirim pesan ke topic, sedangkan subscriber adalah perangkat atau aplikasi yang menerima pesan dari topic yang telah di-subscribe.
Apa itu topic MQTT?
Topic adalah struktur alamat logis yang digunakan untuk mengelompokkan dan mengidentifikasi pesan MQTT. Contohnya adalah rumah/kamar/suhu.
Apa perbedaan MQTT dan HTTP?
MQTT menggunakan model publish-subscribe melalui broker, sedangkan HTTP umumnya menggunakan pola request-response antara client dan server. MQTT sering digunakan untuk komunikasi perangkat IoT, sementara HTTP sangat umum digunakan untuk aplikasi web dan API.
Apakah ESP32 bisa menggunakan MQTT?
Ya. ESP32 dapat digunakan sebagai MQTT publisher maupun subscriber. Dengan koneksi Wi-Fi, ESP32 dapat mengirim data sensor atau menerima perintah melalui MQTT broker.
Apakah ESP8266 bisa menggunakan MQTT?
Ya. ESP8266 juga dapat digunakan untuk komunikasi MQTT dan cocok untuk berbagai proyek IoT sederhana yang membutuhkan koneksi Wi-Fi.
Apakah MQTT gratis?
Protokol MQTT merupakan standar terbuka dan dapat digunakan dalam berbagai software maupun layanan. Namun, biaya dapat muncul dari infrastruktur yang digunakan, seperti server, cloud, atau layanan MQTT komersial.
Apakah MQTT aman?
MQTT dapat diamankan menggunakan TLS, autentikasi, otorisasi, dan kontrol akses topic. Keamanan akhirnya bergantung pada bagaimana broker, perangkat, jaringan, dan kredensial dikonfigurasi.
Kapan sebaiknya menggunakan MQTT?
MQTT sangat cocok ketika banyak perangkat perlu bertukar data atau menerima perintah secara efisien, terutama pada sistem IoT, telemetri, monitoring, otomatisasi, dan perangkat dengan sumber daya terbatas.
