MODUL 11 (SPESIALIS IOT): PROTOKOL MQTT DASAR
๐ META MODUL & PRASYARAT
- Bidang Spesialisasi: Lightweight Telemetry Transport Protocols.
- Target Pembaca: Pembelajar yang sudah menguasai REST API & JSON (Modul 10).
- Learning Outcome:
- Memahami arsitektur MQTT (Message Queuing Telemetry Transport).
- Mampu membedakan Publish, Subscribe, Topic, dan MQTT Broker.
- Memahami tingkatan QoS (Quality of Service) 0, 1, dan 2.
- Mampu menggunakan Retain Flag dan Will Message (Last Will and Testament).
- Estimasi Waktu Belajar: 120 Menit.
- Tingkat Kesulitan: ๐ข Pemula - Menengah (Level 11 / 40).
- Prasyarat: Modul 10 (REST API & Parsing Data JSON).
๐ GLOSARIUM & DAFTAR ISTILAH BARU
| Istilah | Definisi Sederhana | Analogi |
| MQTT Broker | Server pusat penyalur pesan MQTT yang menerima pesan dari pengirim dan meneruskannya ke penerima. | Kantor pos pusat penyortir surat. |
| Publish (Pub) | Tindakan mengirimkan data/pesan dari perangkat ke MQTT Broker pada Topic tertentu. | Mengirim surat ke kotak pos. |
| Subscribe (Sub) | Tindakan mendaftarkan diri ke MQTT Broker untuk menerima pesan otomatis setiap kali Topic tertentu diperbarui. | Berlangganan koran harian yang diantar ke rumah. |
| Topic | String alamat hirarkis berformat / untuk mengkategorikan pesan (misal: pabrik/mesin1/suhu). | Nama kanal / Channel YouTube. |
| QoS (Quality of Service) | Tingkat jaminan kepastian pengiriman pesan antara Publisher dan Broker (QoS 0, QoS 1, QoS 2). | Jenis jaminan kiriman (Pos Biasa, Pos Kilat Khusus, Pos Sertifikat Tanda Terima). |
11. Protokol MQTT Dasar
๐ง ARSITEKTUR PUBLISH / SUBSCRIBE MQTT
=======================================================================
ARSITEKTUR PUBLISH - SUBSCRIBE MQTT
=======================================================================
[ ESP32 SENSOR SUHU ] โโโโ (PUBLISH Topic: "kebun/suhu", Payload: "28.5") โโโโโ
โ
โผ
[ MQTT BROKER PUSAT ]
(EMQX / Mosquitto)
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ (Meneruskan ke semua Subscriber terdaftar) โ
โผ โผ
[ DASHBOARD WEB ] (SUBSCRIBE "kebun/suhu") [ SMARTPHONE GURU ] (SUBSCRIBE "kebun/suhu")
(Menerima: "28.5" -> Render Grafik) (Menerima: "28.5" -> Tampil Notifikasi)
๐ TABEL TINGKATAN QOS (QUALITY OF SERVICE) MQTT
| Level QoS | Penjelasan | Jaminan Pengiriman | Penggunaan Utama |
| QoS 0 (At most once) | Kirim lalu lupakan (Fire and forget). Tidak ada tanda terima. | Sinyal bisa hilang jika jaringan putus. | Data telemetri sensor rutin per detik (misal suhu). |
| QoS 1 (At least once) | Kirim berulang kali sampai diterima. Pesan dijamin sampai min 1x. | Pesan bisa terduplikasi. | Status alarm kebakaran atau perintah sakelar relay. |
| QoS 2 (Exactly once) | Handshake 4 arah. Pesan dijamin sampai tepat 1x saja tanpa duplikat. | Sangat aman tapi menggunakan bandwidth paling tinggi. | Transaksi keuangan atau kunci pintu otomatis. |
โก CHEAT SHEET KODE PUBSUBCLIENT ESP32 MQTT
#include <WiFi.h>
#include <PubSubClient.h>
const char mqtt_server = "broker.emqx.io"; // Broker Publik Gratis
WiFiClient espClient;
PubSubClient client(espClient);
void callback(char topic, byte* payload, unsigned int length) {
String message = "";
for (int i = 0; i < length; i++) { message += (char)payload[i]; }
Serial.printf("Pesan diterima pada Topic [%s]: %s\n", topic, message.c_str());
}
void setup() {
Serial.begin(115200);
WiFi.begin("SSID", "PASS");
while (WiFi.status() != WL_CONNECTED) { delay(500); }
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
}
void loop() {
if (!client.connected()) {
if (client.connect("ESP32_Client_Unique_ID")) {
Serial.println("Terhubung ke MQTT Broker!");
client.subscribe("rumah/ruang1/lampu"); // Subscribe topic perintah
}
}
client.loop(); // Wajib dipanggil terus untuk menjaga koneksi MQTT
}
Latihan & Quiz Evaluasi Modul
Progres Quiz: 0 / 2 Soal
SOAL #1
Mengapa MQTT jauh lebih disukai daripada HTTP untuk komunikasi sensor IoT bertenaga baterai?
SOAL #2
Apakah istilah tindakan yang dilakukan ESP32 untuk mendaftarkan diri menerima update data dari topik tertentu secara real-time pada MQTT Broker?
Kunci Jawaban & Pembahasan
Kunci Jawaban: 1. a. Header sangat kecil & persistent socket, 2. b. Subscribe.
Apakah Anda siap lanjut ke Modul 12: Arsitektur MQTT Broker (Mosquitto & EMQX)?
Apakah Anda siap lanjut ke Modul 12: Arsitektur MQTT Broker (Mosquitto & EMQX)?