Salah satu protokol yang digunakan dalam pengiriman data iot yaitu menggunakan MQTT. Untuk penjelasan MQTT sendiri akan dijelaskan pada bagian terpisah. Untuk kali ini kita mencoba mengkoneksikan ESP32 ke MQTT broker dan membaca data tersebut. Salah satu MQTT broker online yang bisa di gunakan untuk pengujian yaitu https://mqttx.app/. Berikut program ESP 32 yang berhasil terhubung dengan mqttx.app
https://mqttx.app/web-client |
Program ESP32:
#include <WiFi.h>
#include <PubSubClient.h>
// Konfigurasi WiFi
const char *ssid = "ssidwifi";
const char *password = "passwordssid";
// Konfigurasi MQTT Broker
const char *mqtt_broker = "broker.emqx.io";
const char *topic_pub = "coba/pub";
const char *topic_sub = "coba/sub";
const char *mqtt_username = "cobaID";
const char *mqtt_password = "1234567";
const int mqtt_port = 1883;
String client_id = "sesuaiClient" + String(random(0xffff), HEX); // ID unik untuk tiap koneksi
WiFiClient espClient;
PubSubClient client(espClient);
// Fungsi koneksi ke WiFi
void connectWiFi() {
Serial.print("Menghubungkan ke WiFi ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nTerhubung ke WiFi!");
Serial.print("Alamat IP ESP32: ");
Serial.println(WiFi.localIP());
}
// Callback saat pesan diterima dari MQTT
void callback(char *topic, byte *payload, unsigned int length) {
Serial.print("Pesan diterima dari topik: ");
Serial.println(topic);
Serial.print("Isi pesan: ");
for (int i = 0; i < length; i++) {
Serial.print((char)payload[i]);
}
Serial.println();
}
// Fungsi koneksi ke MQTT dan subscribe ke topik
void connectMQTT() {
Serial.print("Menghubungkan ke MQTT broker ");
Serial.println(mqtt_broker);
client.setServer(mqtt_broker, mqtt_port);
client.setCallback(callback);
while (!client.connected()) {
Serial.print("Mencoba koneksi ke MQTT...");
if (client.connect(client_id.c_str(), mqtt_username, mqtt_password)) {
Serial.println(" Berhasil!");
client.subscribe(topic_sub);
client.publish(topic_pub, "Hi, ESP32 telah terhubung!");
} else {
Serial.print(" Gagal, kode: ");
Serial.print(client.state());
Serial.println(" Coba lagi dalam 5 detik...");
delay(5000);
}
}
}
void setup() {
Serial.begin(115200);
connectWiFi();
connectMQTT();
}
void loop() {
if (!client.connected()) {
connectMQTT();
}
client.loop();
}
0 comments:
Post a Comment