Home » , , , , » MQTT dari ESP32 ke oline mqttx

MQTT dari ESP32 ke oline mqttx

Written By SBlog on Tuesday, February 18, 2025 | February 18, 2025

 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();

}

Konfigurasi untuk broker sebagai berikut:


Setelah berhasil maka pada mqttx client muncul data dari ESP32. Jika gagal kemungkinan port tersebut di blok oleh internal network yang sedang digunakan. Pastikan port tersebut dapat digunakan pada internal network.
Akan muncul pada mqtt client sebagai berikut.



Selamat mencoba


0 comments:

Post a Comment

(^_^) [o_o] (^.^) (".") ($.$)