Header Ads Widget

Cara Menghubungkan NodeMCU ke IoT (Internet of Things)

 

Cara Menghubungkan NodeMCU ke IoT

1. Gambaran Umum

PubSubClient adalah library Arduino yang dikembangkan oleh Nick O’Leary untuk berkomunikasi dengan broker MQTT.
MQTT sendiri adalah protokol publish/subscribe yang ringan, cocok untuk IoT dan perangkat berbasis mikrokontroler seperti ESP8266, ESP32, atau Arduino dengan Ethernet/WiFi module.

2. Fitur Utama

·        Protokol MQTT 3.1 & 3.1.1 (tidak sepenuhnya mendukung MQTT 5.0).

·        Mendukung QoS 0 dan QoS 1 (tidak mendukung QoS 2).

·        Ukuran library kecil, cocok untuk perangkat dengan RAM terbatas.

·        Dukungan koneksi TCP melalui:

o   Ethernet shield

o   WiFi (ESP8266, ESP32, atau modul tambahan)

·        Fungsi publish, subscribe, dan unsubscribe.

·        Callback untuk menangani pesan yang masuk.

3. Kelebihan

·       Ringan & efisien — dirancang agar tidak membebani memori mikrokontroler.

·       Mudah digunakan — API sederhana: client.connect(), client.publish(), client.subscribe().

·       Stabil — digunakan luas di komunitas IoT, banyak contoh dan dokumentasi.

·       Kompatibel luas — bisa digunakan pada berbagai board Arduino, ESP8266, ESP32, hingga STM32.

4. Keterbatasan

·       Tidak ada QoS 2 — untuk aplikasi yang butuh jaminan pengiriman tingkat tinggi, ini bisa menjadi kendala.

·       Ukuran payload terbatas — default 128 byte, bisa diubah di PubSubClient.h tetapi memori akan lebih banyak terpakai.

·       Tidak mendukung SSL/TLS langsung — pada board seperti ESP8266/ESP32 bisa dikombinasikan dengan WiFiClientSecure, tapi setup lebih rumit.

·       Hanya 1 koneksi MQTT per instance — untuk multi-broker harus membuat multiple client instance atau skema lain.

5. Contoh Sederhana

#include <WiFi.h>

#include <PubSubClient.h>

 

const char* ssid = "WIFI_SSID";

const char* password = "WIFI_PASSWORD";

const char* mqtt_server = "broker.hivemq.com";

 

WiFiClient espClient;

PubSubClient client(espClient);

 

void setup_wifi() {

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) delay(500);

}

 

void callback(char* topic, byte* payload, unsigned int length) {

  Serial.print("Pesan masuk di topic: ");

  Serial.println(topic);

}

 

void reconnect() {

  while (!client.connected()) {

    if (client.connect("ESP32Client")) {

      client.subscribe("test/topic");

    } else {

      delay(5000);

    }

  }

}

 

void setup() {

  Serial.begin(115200);

  setup_wifi();

  client.setServer(mqtt_server, 1883);

  client.setCallback(callback);

}

 

void loop() {

  if (!client.connected()) reconnect();

  client.loop();

}

Post a Comment

0 Comments