Dalam pengembangan Internet of Things (IoT), komunikasi data antarperangkat merupakan salah satu aspek yang paling penting. Salah satu protokol komunikasi yang banyak digunakan adalah MQTT (Message Queuing Telemetry Transport), yaitu protokol ringan yang dirancang untuk mengirim dan menerima data secara cepat dengan penggunaan bandwidth yang rendah. Berkat efisiensinya, MQTT menjadi pilihan utama untuk berbagai proyek berbasis ESP32, mulai dari sistem monitoring sensor, smart home, otomasi industri, hingga aplikasi IoT yang terhubung ke layanan cloud.
Pada tutorial ini, Anda akan mempelajari cara menghubungkan ESP32 dengan broker MQTT untuk melakukan komunikasi dua arah, yaitu mengirim (publish) dan menerima (subscribe) data. Pembahasan dimulai dari penggunaan broker MQTT online untuk memahami dasar komunikasi MQTT, kemudian dilanjutkan dengan membuat broker MQTT lokal menggunakan Mosquitto yang diinstal di komputer. Di akhir tutorial, ESP32 akan mampu bertukar data dengan broker MQTT sehingga dapat menjadi dasar pengembangan berbagai proyek IoT yang lebih kompleks.
Menginstal Mosquitto MQTT Broker di Windows
Sebelum ESP32 dapat berkomunikasi menggunakan protokol MQTT melalui jaringan lokal, Anda perlu menginstal Mosquitto MQTT Broker di komputer. Mosquitto merupakan salah satu broker MQTT yang bersifat open source, ringan, dan banyak digunakan untuk pengembangan maupun pengujian aplikasi Internet of Things (IoT). Dengan menjalankan broker secara lokal, proses komunikasi antara ESP32 dan komputer dapat dilakukan tanpa bergantung pada layanan broker MQTT online. Ikuti langkah-langkah berikut untuk menginstal Mosquitto MQTT Broker di Windows.
1. Unduh Mosquitto MQTT Broker
Unduh installer Mosquitto sesuai dengan sistem operasi Windows yang Anda gunakan, kemudian jalankan file installer tersebut.
2. Instal Mosquitto
Ikuti proses instalasi hingga selesai. Pada tutorial ini, disarankan menginstal Mosquitto pada drive C:, misalnya: C:\Program Files\Mosquitto.
Penggunaan drive selain C: bertujuan untuk mempermudah pengelolaan file broker serta menghindari kemungkinan kendala izin akses (permission) pada beberapa konfigurasi Windows. Namun, jika Anda lebih nyaman menggunakan drive C:, Mosquitto tetap dapat diinstal tanpa masalah selama memiliki hak akses yang diperlukan.
3. Membuat File Konfigurasi Broker
Setelah instalasi selesai, buka folder tempat Mosquitto diinstal, kemudian buat sebuah file baru dengan nama test.conf. Masukkan konfigurasi berikut ke dalam file tersebut.
listener 1883
allow_anonymous true
Simpan file test.conf pada folder instalasi Mosquitto.
Konfigurasi di atas memiliki fungsi sebagai berikut.
- listener 1883 digunakan untuk menjalankan broker pada port 1883, yaitu port standar yang digunakan oleh protokol MQTT.
- allow_anonymous true mengizinkan perangkat untuk terhubung ke broker tanpa menggunakan username dan password. Pengaturan ini cocok digunakan pada tahap pembelajaran atau pengujian di jaringan lokal. Untuk implementasi pada lingkungan produksi, sebaiknya aktifkan mekanisme autentikasi demi meningkatkan keamanan.
Menjalankan Mosquitto MQTT Broker
Setelah berhasil menginstal dan menjalankan Mosquitto MQTT Broker di komputer, langkah berikutnya adalah memastikan broker tersebut benar-benar dapat mengirim dan menerima pesan. Pengujian ini penting dilakukan sebelum ESP32 dihubungkan ke broker lokal, sehingga apabila terjadi masalah nantinya, kita dapat mengetahui apakah penyebabnya berasal dari broker atau dari program ESP32.
Menguji Broker Mosquitto
Untuk melakukan pengujian, kita akan menggunakan dua buah Command Prompt tambahan. Satu jendela berfungsi sebagai subscriber (pelanggan) yang menerima pesan, sedangkan jendela lainnya berfungsi sebagai publisher (penerbit) yang mengirimkan pesan.
1. Membuat Jendela Subscriber
- Buka Command Prompt baru sebagai Administrator.
- Beri nama jendela ini sebagai Jendela Pelanggan (Subscriber).
- Jalankan perintah berikut untuk berlangganan (subscribe) ke sebuah topik MQTT. Jangan lupa mengganti alamat IP sesuai dengan alamat IP komputer Anda.
cd /d D:\Draft\mosquitto
mosquitto -v -c test.conf
Perintah tersebut membuat komputer terus mendengarkan setiap pesan yang dikirim ke topik yang telah ditentukan.
2. Membuat Jendela Publisher
- Buka Command Prompt baru sebagai Administrator.
- Beri nama jendela ini sebagai Jendela Penerbit (Publisher).
- Jalankan perintah untuk mengirim (publish) sebuah pesan ke topik yang sama.
Jika broker Mosquitto berjalan dengan baik, maka pesan yang dikirim oleh Publisher akan langsung diteruskan oleh broker ke Subscriber. Pada Jendela Pelanggan (Subscriber), pesan tersebut akan diterima secara otomatis.
Jika kedua jendela menampilkan hasil seperti di atas, berarti broker Mosquitto telah berhasil bekerja dengan baik.
Catatan: Jangan menutup ketiga jendela yang sedang digunakan, yaitu Broker Window, Subscriber Window, dan Publisher Window, karena semuanya akan digunakan kembali pada tahap berikutnya saat ESP32 mulai berkomunikasi dengan broker MQTT.
Menghubungkan ESP32 ke Broker MQTT Lokal
Setelah broker berhasil diuji, sekarang saatnya menghubungkan ESP32 ke broker MQTT yang berjalan di komputer. Berbeda dengan contoh sebelumnya yang menggunakan broker MQTT publik, pada bagian ini ESP32 akan berkomunikasi dengan broker Mosquitto lokal menggunakan alamat IP komputer sebagai server MQTT. Program berikut memiliki beberapa fungsi utama, yaitu:
- Menghubungkan ESP32 ke jaringan WiFi.
- Menghubungkan ESP32 ke broker MQTT lokal.
- Berlangganan (subscribe) pada sebuah topik MQTT.
- Mengirim (publish) data secara berkala ke topik MQTT lainnya.
- Menampilkan setiap data yang diterima melalui Serial Monitor.
Penjelasan Program
Meskipun program terlihat hampir sama dengan contoh sebelumnya, terdapat beberapa perbedaan penting yang perlu diperhatikan.
1. Menggunakan Alamat IP Broker Lokal
const char MQTT_BROKER_ADRRESS[] = "192.168.0.111";
Berbeda dengan contoh sebelumnya yang menggunakan domain test.mosquitto.org, kali ini broker berada di komputer lokal sehingga alamat server diganti menggunakan alamat IP komputer. Pastikan alamat IP tersebut sesuai dengan alamat IP komputer Anda. Apabila alamat IP berubah, ubahlah juga nilai pada variabel ini.
2. Client ID MQTT
#define CLIENT_ID "ESP32-001"
Setiap perangkat MQTT harus memiliki Client ID yang unik. Broker MQTT menggunakan Client ID untuk mengenali setiap perangkat yang terhubung. Apabila dua perangkat menggunakan Client ID yang sama secara bersamaan, salah satu perangkat akan terputus secara otomatis.
3. Topik Publish dan Subscribe
Pada contoh ini digunakan dua topik yang berbeda.
#define PUBLISH_TOPIC "esp32-001/send"
#define SUBSCRIBE_TOPIC "esp32-001/receive"
Topik esp32-001/send digunakan ESP32 untuk mengirim data menuju broker. Sedangkan topik esp32-001/receive digunakan ESP32 untuk menerima data dari broker. Pemisahan topik seperti ini merupakan praktik yang umum digunakan dalam sistem IoT karena komunikasi menjadi lebih rapi dan mudah dikelola.
Mengirim Data dalam Format JSON
Setiap lima detik ESP32 membuat objek JSON yang berisi dua buah informasi.
message["timestamp"] = millis();
message["data"] = analogRead(0);
Keterangan:
- timestamp berisi waktu sejak ESP32 dinyalakan.
- data berisi hasil pembacaan pin analog.
Objek JSON tersebut kemudian diubah menjadi teks menggunakan fungsi:
serializeJson(message, messageBuffer);
Setelah itu data dikirim ke broker MQTT menggunakan:
mqtt.publish(PUBLISH_TOPIC, messageBuffer);
Format JSON dipilih karena mudah dibaca manusia sekaligus mudah diproses oleh aplikasi lain, seperti Node-RED, Python, maupun dashboard IoT.
Menerima Data dari Broker
Setiap kali broker mengirimkan pesan ke topik esp32-001/receive, fungsi berikut akan dijalankan.
void messageHandler(String &topic, String &payload)
Di dalam fungsi ini, payload yang diterima akan ditampilkan pada Serial Monitor. Jika diperlukan, payload tersebut juga dapat diproses kembali menjadi objek JSON menggunakan library ArduinoJson, sehingga ESP32 dapat membaca setiap nilai yang dikirim dan menggunakannya untuk mengendalikan LED, relay, motor, maupun perangkat lainnya.
Langkah Mengunggah Program ke ESP32
Setelah memahami program di atas, lakukan langkah-langkah berikut:
1. Salin program ke Arduino IDE.
2. Masukkan nama WiFi (SSID) dan password sesuai jaringan yang digunakan.
3. Ganti alamat broker MQTT dengan alamat IP komputer yang menjalankan Mosquitto.
4. Pastikan board dan port yang dipilih pada Arduino IDE sudah benar.
5. Klik Upload untuk mengunggah program ke ESP32.
Mengirim Data dari ESP32 ke Komputer Melalui MQTT
Pada program di atas, ESP32 mengirimkan data menuju topik:
esp32-001/send
Sementara Subscriber Window pada komputer telah berlangganan ke topik tersebut. Buka Serial Monitor setelah proses upload selesai. ESP32 akan mengirimkan data secara berkala ke broker MQTT. Selanjutnya periksa Subscriber Window. Jika semuanya berjalan dengan benar, data yang dikirim ESP32 akan langsung diterima oleh komputer melalui broker MQTT. Proses ini menunjukkan bahwa komunikasi ESP32 → Broker MQTT → Komputer telah berhasil dilakukan.
Mengirim Data dari Komputer ke ESP32 Melalui MQTT
Komunikasi MQTT bersifat dua arah. Selain mengirim data ke komputer, ESP32 juga dapat menerima data dari komputer. Pada program ini, ESP32 berlangganan pada topik berikut.
esp32-001/receive
Agar ESP32 menerima pesan, gunakan Publisher Window untuk mengirimkan data ke topik tersebut. Jalankan perintah publish seperti berikut. Beberapa saat kemudian, pesan tersebut akan diterima oleh ESP32 dan langsung ditampilkan pada Serial Monitor. Hal ini membuktikan bahwa komunikasi Komputer → Broker MQTT → ESP32 juga telah berjalan dengan baik.
Dengan mekanisme ini, komputer dapat mengirimkan berbagai perintah ke ESP32, misalnya menyalakan LED, mengaktifkan relay, mengendalikan motor servo, atau mengubah konfigurasi perangkat secara real-time tanpa perlu memprogram ulang ESP32.
Baca juga: Arduino Sensor Hujan (Rain Sensor) Tanpa LM393 – Cara Mendeteksi dan Mengukur Intensitas Hujan
Dalam praktik, hasil dan kendala yang ditemui bisa berbeda tergantung perangkat, konfigurasi, versi library, dan sistem yang digunakan.
- Diskusi umum dan tanya jawab praktik: https://t.me/edukasielektronika
- Kendala spesifik dan kasus tertentu: http://bit.ly/Chatarduino



0 on: "ESP32 MQTT - Cara Mengirim dan Menerima Data Menggunakan Broker MQTT Lokal (Mosquitto)"