Internet of Things (IoT) memungkinkan berbagai perangkat saling bertukar data melalui internet secara real-time. Salah satu metode komunikasi yang paling banyak digunakan dalam sistem IoT adalah MQTT (Message Queuing Telemetry Transport). Protokol ini dirancang agar ringan, cepat, dan hemat bandwidth, sehingga sangat cocok digunakan pada mikrokontroler seperti ESP32. Agar ESP32 dapat mengirim maupun menerima data melalui MQTT, dibutuhkan sebuah MQTT Broker yang berfungsi sebagai perantara komunikasi antarperangkat. Salah satu layanan broker MQTT berbasis cloud yang mudah digunakan adalah HiveMQ Cloud. HiveMQ Cloud menyediakan broker MQTT yang dapat diakses melalui internet tanpa perlu membuat atau mengelola server sendiri. Anda cukup membuat sebuah broker, menambahkan username dan password sebagai autentikasi, kemudian ESP32 dapat langsung terhubung menggunakan koneksi yang aman melalui protokol TLS (Transport Layer Security). Pada tutorial ini, Anda akan mempelajari cara membuat broker MQTT di HiveMQ Cloud, menghubungkan ESP32 menggunakan MQTT, mengirim data (publish), serta menerima data (subscribe) melalui koneksi yang terenkripsi. Seluruh proses dilakukan menggunakan HiveMQ Cloud Free, sehingga dapat diikuti tanpa perlu menyewa VPS maupun membangun server MQTT sendiri.
Apa itu HiveMQ Cloud?
HiveMQ Cloud merupakan layanan MQTT Broker berbasis cloud yang memungkinkan perangkat IoT saling bertukar data melalui internet menggunakan protokol MQTT. Seluruh proses pengelolaan server dilakukan oleh HiveMQ sehingga pengguna hanya perlu membuat broker dan menghubungkan perangkat yang akan digunakan. Berbeda dengan menjalankan broker MQTT secara mandiri menggunakan Mosquitto atau EMQX pada VPS maupun komputer lokal, HiveMQ Cloud menawarkan proses konfigurasi yang jauh lebih sederhana
Anda tidak perlu melakukan instalasi server, konfigurasi jaringan, ataupun membuka port secara manual. Setelah broker dibuat, perangkat seperti ESP32 dapat langsung terhubung menggunakan alamat broker yang telah disediakan. Selain kemudahan konfigurasi, HiveMQ Cloud juga mendukung koneksi TLS (Transport Layer Security) sehingga komunikasi antara ESP32 dan broker MQTT akan dienkripsi selama proses transmisi data. Dengan demikian, informasi seperti username, password, maupun data yang dikirim menjadi lebih aman ketika melewati jaringan internet.
Mengapa Menggunakan HiveMQ Cloud?
Terdapat banyak layanan MQTT Broker yang dapat digunakan bersama ESP32. Namun, HiveMQ Cloud memiliki beberapa keunggulan yang menjadikannya pilihan yang tepat, terutama bagi pemula maupun pengembang IoT. Beberapa kelebihan HiveMQ Cloud antara lain:
- Tidak perlu menginstal maupun mengelola server MQTT sendiri.
- Menyediakan paket Free yang dapat digunakan untuk proses pembelajaran dan pengembangan proyek skala kecil.
- Mendukung protokol MQTT versi 3.1.1 dan MQTT 5.
- Mendukung koneksi TLS sehingga komunikasi lebih aman.
- Konfigurasi broker relatif sederhana dan mudah dipahami.
- Dapat digunakan dari berbagai perangkat maupun platform yang mendukung MQTT.
Dengan berbagai kelebihan tersebut, HiveMQ Cloud menjadi salah satu layanan yang cocok digunakan sebagai broker MQTT untuk proyek ESP32.
Cara Kerja ESP32 dengan HiveMQ Cloud
Pada sistem MQTT, ESP32 tidak berkomunikasi secara langsung dengan perangkat lain. Seluruh proses pertukaran data dilakukan melalui sebuah MQTT Broker. Saat ESP32 mengirim data, data tersebut akan dikirim ke broker menggunakan proses Publish. Selanjutnya, broker akan meneruskan data tersebut kepada seluruh perangkat yang telah melakukan Subscribe pada topik (topic) yang sama. Sebagai contoh, ESP32 membaca nilai suhu dari sensor kemudian mengirimkannya ke topik:
esp32/temperature
Broker HiveMQ Cloud akan menerima data tersebut, kemudian meneruskannya kepada seluruh aplikasi atau perangkat yang sedang melakukan subscribe pada topik tersebut, misalnya aplikasi MQTT Explorer, MQTTX, Node-RED, maupun ESP32 lainnya. Sebaliknya, apabila sebuah aplikasi mengirimkan perintah ke topik:
esp32/led
ESP32 yang telah melakukan subscribe pada topik tersebut akan menerima pesan dan menjalankan perintah, misalnya menyalakan atau mematikan LED. Mekanisme komunikasi tersebut membuat perangkat IoT tidak perlu mengetahui alamat IP perangkat lain karena seluruh proses distribusi data ditangani oleh broker MQTT.
Alur Cara Kerja MQTT
Alur komunikasinya adalah sebagai berikut:
1. ESP32 menghubungkan diri ke jaringan WiFi.
2. ESP32 melakukan autentikasi ke HiveMQ Cloud menggunakan username dan password.
3. Setelah koneksi berhasil, ESP32 dapat mengirim (publish) data ke broker MQTT.
4. Broker akan meneruskan data tersebut kepada seluruh client yang melakukan subscribe pada topik yang sama.
5. Client lain juga dapat mengirim pesan ke broker sehingga ESP32 dapat menerima data melalui proses subscribe.
Persiapan Menghubungkan ESP32 ke HiveMQ Cloud Menggunakan MQTT
Sebelum memulai tutorial, siapkan beberapa perangkat dan aplikasi berikut:
Perangkat Keras
- Board ESP32
- Kabel USB
- Komputer atau laptop
- Koneksi internet
- Jaringan WiFi
Perangkat Lunak
- Arduino IDE
- Driver USB ESP32 (jika diperlukan)
- Library MQTTClient
- Library ArduinoJson
- Akun HiveMQ Cloud
Menginstal Library Arduino
Tutorial ini menggunakan beberapa library tambahan yang harus dipasang terlebih dahulu pada Arduino IDE.
1. Buka Arduino IDE, kemudian pilih menu Sketch → Include Library → Manage Libraries...
2. Selanjutnya, instal library MQTTClient
3. Cari library dengan kata kunci MQTTClient
4. Kemudian instal library ArduinoMqttClient by Arduino.
5. Cari library ArduinoJson
6. Kemudian instal library ArduinoJson karya Benoît Blanchon.
Setelah kedua library tersebut berhasil dipasang, Arduino IDE telah siap digunakan untuk membuat program ESP32 yang akan terhubung ke HiveMQ Cloud.
Membuat Akun HiveMQ Cloud
Sebelum ESP32 dapat terhubung ke broker MQTT, Anda perlu memiliki akun HiveMQ Cloud terlebih dahulu. Buka situs resmi HiveMQ Cloud melalui browser, kemudian buat akun baru menggunakan alamat email yang masih aktif. Jika sudah memiliki akun, cukup lakukan proses login. Setelah berhasil masuk, Anda akan diarahkan ke halaman Connect & Manage Network yang digunakan untuk membuat dan mengelola broker MQTT. Berikut langkah-langkah yang dapat Anda lakukan:
1. Membuat Broker MQTT
- Pada halaman Connect & Manage Network, klik tombol Get Broker or Edge.
- Selanjutnya, pilih paket Free, kemudian tentukan lokasi (Region) server sesuai kebutuhan. Setelah itu, masukkan nama broker yang diinginkan.
- Sebagai contoh, gunakan nama Free #1
- Kemudian klik tombol Create.
- Tunggu beberapa saat hingga proses pembuatan broker selesai. Jika berhasil, status broker akan berubah menjadi Running, yang menandakan bahwa broker MQTT telah aktif dan siap digunakan.
2. Melihat Informasi Broker
- Klik nama broker yang telah dibuat untuk membuka halaman detail broker.
- Pada tab Overview, bagian Connection Details akan menampilkan informasi yang diperlukan untuk menghubungkan ESP32 ke HiveMQ Cloud.
- Catat informasi berikut:
- MQTT URL
- TLS MQTT URL
- Port MQTT TLS (8883)
Informasi tersebut akan digunakan pada program ESP32 pada langkah berikutnya.
3. Membuat Username dan Password
Agar hanya perangkat yang memiliki izin yang dapat terhubung ke broker MQTT, HiveMQ Cloud menggunakan autentikasi berupa username dan password.
- Buka tab Access Management, kemudian pada bagian Credentials klik tombol Add New
- Masukkan Username dan Password yang diinginkan, kemudian simpan konfigurasi tersebut.
- Username dan password inilah yang nantinya digunakan oleh ESP32 saat melakukan koneksi ke broker MQTT.
4. Menguji Koneksi Broker
Sebelum digunakan oleh ESP32, sebaiknya lakukan pengujian untuk memastikan broker telah dikonfigurasi dengan benar.
- Buka tab Test your connection.
- Masukkan username dan password yang telah dibuat sebelumnya pada bagian Connection Settings, kemudian klik tombol Connect.
- Jika proses autentikasi berhasil, Web Client akan terhubung ke broker MQTT dan siap digunakan untuk melakukan pengujian publish maupun subscribe.
- Sebagai pengujian sederhana, Anda dapat melakukan subscribe pada topik tertentu kemudian mengirim sebuah pesan MQTT. Jika pesan berhasil diterima, berarti broker telah siap digunakan oleh ESP32.
Memprogram ESP32 agar Terhubung ke HiveMQ Cloud
Setelah broker HiveMQ Cloud berhasil dibuat beserta username dan password untuk autentikasi, langkah berikutnya adalah membuat program pada ESP32 agar dapat berkomunikasi dengan broker MQTT menggunakan koneksi yang aman melalui protokol TLS (Transport Layer Security). Pada tutorial ini, ESP32 akan melakukan beberapa tugas utama sebagai berikut:
- Menghubungkan ESP32 ke jaringan WiFi.
- Melakukan autentikasi ke HiveMQ Cloud menggunakan username dan password.
- Membuat koneksi MQTT melalui TLS.
- Mengirim data sensor ke broker MQTT secara berkala (publish).
- Menerima pesan dari broker MQTT (subscribe).
- Menampilkan seluruh proses komunikasi melalui Serial Monitor.
1. Menyiapkan Root CA Certificate
Karena HiveMQ Cloud menggunakan koneksi TLS pada port 8883, ESP32 harus memverifikasi identitas broker sebelum koneksi dapat dibuat. Proses verifikasi tersebut dilakukan menggunakan Root CA Certificate. Berbeda dengan AWS IoT Core yang menggunakan Device Certificate dan Private Key, pada HiveMQ Cloud Free Anda hanya perlu menambahkan Root CA Certificate ke dalam program ESP32.
- Buat sebuah file baru bernama secrets.h
- File ini digunakan untuk menyimpan seluruh informasi yang bersifat sensitif sehingga program utama menjadi lebih rapi dan mudah dikelola.
2. Membuat File secrets.h
Salin kode berikut ke dalam file secrets.h.
Kode Program Arduino
#ifndef SECRETS_H
#define SECRETS_H
#define WIFI_SSID "Nama_WiFi"
#define WIFI_PASSWORD "Password_WiFi"
#define MQTT_HOST "xxxxxxxxxxxxxxxx.s1.eu.hivemq.cloud"
#define MQTT_PORT 8883
#define MQTT_USERNAME "esp32user"
#define MQTT_PASSWORD "passwordanda"
#define MQTT_CLIENT_ID "ESP32_Client"
static const char ROOT_CA[] PROGMEM = R"EOF(
-----BEGIN CERTIFICATE-----
Tempelkan Root CA Certificate di sini
-----END CERTIFICATE-----
)EOF";
#endif
Selanjutnya, ubah beberapa parameter berikut sesuai konfigurasi yang telah dibuat sebelumnya.
- WIFI_SSID diisi dengan nama jaringan WiFi.
- WIFI_PASSWORD diisi dengan password WiFi.
- MQTT_HOST diisi dengan alamat broker HiveMQ Cloud.
- MQTT_USERNAME diisi dengan username yang telah dibuat.
- MQTT_PASSWORD diisi dengan password broker.
- MQTT_CLIENT_ID merupakan identitas unik ESP32 saat terhubung ke broker MQTT.
3. Root CA Certificate
Selanjutnya, salin isi Root CA Certificate ke dalam variabel ROOT_CA. Pastikan seluruh isi sertifikat disalin tanpa mengubah format maupun menghapus baris BEGIN CERTIFICATE dan END CERTIFICATE.
-----BEGIN CERTIFICATE-----
MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4
WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu
ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY
MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc
h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+
0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U
A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW
T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH
B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC
B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv
KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn
OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn
jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw
qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI
rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq
hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL
ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ
3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK
NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5
ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur
TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC
jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc
oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq
4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA
mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d
emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=
-----END CERTIFICATE-----
4. Program ESP32
Setelah file secrets.h selesai dibuat, langkah berikutnya adalah membuat program utama ESP32. Program berikut akan menghubungkan ESP32 ke WiFi, terhubung ke HiveMQ Cloud, mengirim data analog setiap 4 detik, menerima pesan MQTT, dan menampilkan seluruh aktivitas pada Serial Monitor.
Kode Program Arduino
#include "secrets.h"
#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <MQTTClient.h>
#include <ArduinoJson.h>
#define MQTT_PUBLISH_TOPIC "esp32/esp32-to-cloud"
#define MQTT_SUBSCRIBE_TOPIC "esp32/cloud-to-esp32"
#define PUBLISH_INTERVAL 4000
WiFiClientSecure net;
MQTTClient client(256);
unsigned long lastPublish = 0;
void connectWiFi();
void connectMQTT();
void publishMessage();
void messageReceived(String &topic, String &payload);
void setup() {
Serial.begin(115200);
analogSetAttenuation(ADC_11db);
connectWiFi();
connectMQTT();
}
void loop() {
client.loop();
if (!client.connected()) {
connectMQTT();
}
if (millis() - lastPublish >= PUBLISH_INTERVAL) {
publishMessage();
lastPublish = millis();
}
}
Selanjutnya tambahkan fungsi berikut:
void connectWiFi() {
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("Connecting to WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.println("WiFi Connected");
}
Tambahkan fungsi koneksi MQTT berikut:
void connectMQTT() {
net.setCACert(ROOT_CA);
client.begin(MQTT_HOST, MQTT_PORT, net);
client.onMessage(messageReceived);
Serial.print("Connecting to HiveMQ Cloud");
while (!client.connect(MQTT_CLIENT_ID, MQTT_USERNAME, MQTT_PASSWORD)) {
Serial.print(".");
delay(1000);
}
Serial.println();
Serial.println("MQTT Connected");
client.subscribe(MQTT_SUBSCRIBE_TOPIC);
}
Tambahkan fungsi untuk mengirim data.
void publishMessage() {
StaticJsonDocument<200> doc;
doc["timestamp"] = millis();
doc["analog"] = analogRead(34);
char buffer[256];
serializeJson(doc, buffer);
client.publish(MQTT_PUBLISH_TOPIC, buffer);
Serial.println("Publish");
Serial.println(buffer);
}
Terakhir, tambahkan fungsi callback untuk menerima pesan.
void messageReceived(String &topic, String &payload) {
Serial.println("Message Received");
Serial.println(topic);
Serial.println(payload);
}
Penjelasan Program
Sebelum mengunggah program ke ESP32, ada baiknya memahami fungsi dari setiap bagian program yang digunakan.
a. Library
Program menggunakan beberapa library utama.
- WiFi digunakan untuk menghubungkan ESP32 ke jaringan WiFi.
- WiFiClientSecure digunakan untuk membuat koneksi TLS.
- MQTTClient digunakan sebagai MQTT Client.
- ArduinoJson digunakan untuk membuat payload JSON.
b. connectWiFi()
Fungsi ini bertugas menghubungkan ESP32 ke jaringan WiFi. Program akan terus mencoba melakukan koneksi hingga ESP32 berhasil memperoleh alamat IP dari router.
c. connectMQTT()
Fungsi ini digunakan untuk menghubungkan ESP32 ke HiveMQ Cloud. Sebelum koneksi dibuat, ESP32 terlebih dahulu memverifikasi identitas broker menggunakan Root CA Certificate. Selanjutnya ESP32 melakukan autentikasi menggunakan:
- MQTT Client ID
- Username
- Password
Jika koneksi berhasil, ESP32 akan melakukan subscribe pada topik:
esp32/cloud-to-esp32
d. publishMessage()
Fungsi ini membaca nilai analog dari pin GPIO34. Nilai tersebut kemudian diubah menjadi format JSON sebelum dikirim ke broker MQTT menggunakan topik:
esp32/esp32-to-cloud
Payload yang dikirim memiliki format seperti berikut:
{
"timestamp": 15020,
"analog": 2045
}
e. messageReceived()
Fungsi callback ini akan dipanggil secara otomatis setiap kali broker MQTT mengirimkan pesan ke topik yang telah di-subscribe. Pada contoh ini, isi pesan hanya ditampilkan melalui Serial Monitor. Namun, fungsi tersebut juga dapat dikembangkan untuk mengontrol LED, relay, motor servo, atau perangkat lainnya.
5. Interval Pengiriman Data
Program mengirim data setiap empat detik sesuai konstanta berikut:
#define PUBLISH_INTERVAL 4000
Nilai tersebut dapat diubah sesuai kebutuhan aplikasi.
6. Mengunggah Program ke ESP32
Hubungkan ESP32 ke komputer menggunakan kabel USB. Pilih board dan port yang sesuai melalui Arduino IDE, kemudian klik tombol Upload. Jika proses kompilasi dan upload berhasil, buka Serial Monitor dengan baud rate 115200 untuk melihat proses koneksi ESP32 ke WiFi dan HiveMQ Cloud.
Menguji Komunikasi MQTT antara ESP32 dan HiveMQ Cloud
Setelah program berhasil diunggah ke ESP32, langkah berikutnya adalah memastikan bahwa ESP32 benar-benar dapat terhubung ke HiveMQ Cloud serta mampu melakukan proses publish dan subscribe melalui protokol MQTT. Pada bagian ini, Anda akan mempelajari cara memonitor proses koneksi menggunakan Serial Monitor, mengirim pesan dari HiveMQ Cloud ke ESP32, serta memastikan data yang dikirim ESP32 berhasil diterima oleh broker MQTT.
1. Memantau Proses Koneksi melalui Serial Monitor
Setelah proses upload selesai, buka Serial Monitor pada Arduino IDE. Pastikan baud rate diatur menjadi 115200. Apabila seluruh konfigurasi telah dilakukan dengan benar, Serial Monitor akan menampilkan informasi seperti berikut:
Connecting to WiFi....
WiFi Connected
Connecting to HiveMQ Cloud...
MQTT Connected
Publish
{"timestamp":4025,"analog":1968}
Publish
{"timestamp":8041,"analog":1975}
Publish
{"timestamp":12058,"analog":1981}
Dari tampilan tersebut dapat diketahui bahwa:
- ESP32 berhasil terhubung ke jaringan WiFi.
- ESP32 berhasil melakukan autentikasi ke HiveMQ Cloud.
- ESP32 berhasil mengirim data ke broker MQTT setiap empat detik.
Jika muncul pesan MQTT Connected, berarti koneksi MQTT telah berhasil dibuat.
2. Menguji Publish Menggunakan HiveMQ Cloud Web Client
Sebelum menguji komunikasi dua arah, terlebih dahulu pastikan ESP32 berhasil mengirim data ke broker MQTT. Masuk ke halaman broker pada HiveMQ Cloud, kemudian buka tab:
Test your connection
Pada bagian Connection Settings, masukkan username dan password yang telah dibuat sebelumnya, kemudian klik tombol Connect. Jika berhasil, status Web Client akan berubah menjadi Connected.
3. Melakukan Subscribe pada Topik Publish ESP32
Pada bagian Topic Subscriptions, masukkan topik yang digunakan ESP32 untuk mengirim data.
esp32/esp32-to-cloud
Kemudian klik Subscribe.
Beberapa saat kemudian akan muncul pesan yang dikirim oleh ESP32. Contoh payload yang diterima:
{
"timestamp": 16032, "analog": 2015
}
Hal ini menunjukkan bahwa proses publish dari ESP32 ke HiveMQ Cloud telah berhasil dilakukan.
4. Menguji Subscribe Menggunakan HiveMQ Cloud Web Client
Selanjutnya, lakukan pengujian komunikasi dari HiveMQ Cloud menuju ESP32. Pada bagian Send Message, isi parameter berikut:
- Topic: esp32/cloud-to-esp32
- Message: LED ON
- QoS: 0
Kemudian klik tombol Send Message.
5. Melihat Data yang Diterima ESP32
Setelah pesan dikirim melalui HiveMQ Cloud, buka kembali Serial Monitor. Jika ESP32 berhasil menerima pesan tersebut, akan muncul tampilan seperti berikut:
Message Received
Topic:
esp32/cloud-to-esp32
Payload:
Hello ESP32
Hal ini menunjukkan bahwa proses subscribe telah berjalan dengan baik. Pada contoh program ini, isi pesan hanya ditampilkan pada Serial Monitor. Namun pada implementasi sebenarnya, pesan tersebut dapat digunakan untuk berbagai keperluan, misalnya:
- Menyalakan LED.
- Mematikan LED.
- Mengendalikan relay.
- Menggerakkan motor servo.
- Mengubah kecepatan motor DC.
- Mengaktifkan buzzer.
- Mengontrol berbagai perangkat IoT lainnya.
Cara Kerja Publish dan Subscribe
Pada tutorial ini digunakan dua buah topik MQTT.
Dengan memisahkan topik publish dan subscribe, komunikasi menjadi lebih mudah dipahami serta mempermudah pengembangan aplikasi yang lebih kompleks. Sebagai contoh:
- Sensor suhu dapat menggunakan topik home/livingroom/temperature
- Sedangkan kontrol lampu dapat menggunakan topik home/livingroom/lamp
Penggunaan struktur topik seperti ini membuat sistem MQTT menjadi lebih terorganisir.
Troubleshooting
Jika ESP32 tidak berhasil terhubung ke HiveMQ Cloud, periksa beberapa hal berikut:
1. ESP32 Tidak Terhubung ke WiFi
Pastikan:
- Nama WiFi (SSID) telah diisi dengan benar.
- Password WiFi sesuai.
- Jaringan internet aktif.
- Sinyal WiFi cukup kuat.
2. MQTT Connection Failed
Jika muncul pesan gagal terhubung ke broker MQTT, periksa kembali:
- MQTT Host.
- Port 8883.
- Username.
- Password.
- MQTT Client ID.
Pastikan seluruh informasi sesuai dengan data yang terdapat pada halaman Connection Details dan Access Management di HiveMQ Cloud.
3. TLS Handshake Gagal
Jika ESP32 gagal membuat koneksi TLS, kemungkinan penyebabnya adalah:
- Root CA Certificate tidak sesuai.
- Format sertifikat berubah.
- Ada karakter yang hilang saat menyalin sertifikat.
Pastikan seluruh isi sertifikat disalin lengkap mulai dari:
-----BEGIN CERTIFICATE-----
hingga
-----END CERTIFICATE-----
tanpa ada perubahan.
4. Tidak Ada Data yang Masuk
Apabila ESP32 berhasil terhubung tetapi tidak ada data yang muncul pada Web Client, pastikan:
- Topik publish sesuai.
- Topik subscribe sesuai.
- Fungsi client.loop() tetap dijalankan di dalam loop().
- ESP32 masih terhubung ke broker MQTT.
Karena HiveMQ Cloud mendukung standar MQTT, broker ini juga dapat digunakan bersama berbagai aplikasi maupun platform lain seperti MQTTX, MQTT Explorer, Node-RED, Home Assistant, hingga aplikasi IoT yang dikembangkan sendiri.
Baca juga: ESP32 dengan Make - Cara Menghubungkan ESP32 ke Make Menggunakan Webhook
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 dengan HiveMQ Cloud - Cara Menghubungkan ESP32 ke HiveMQ Cloud Menggunakan MQTT"