#include <WiFi.h>
#include <MQTT.h>
WiFiClient net;
MQTTClient client;
const char ssid[] = "Wokwi-GUEST";
const char pass[] = "";
const int LED_PIN = 23;
void messageReceived(String &topic, String &payload); // Function declaration
void connect() {
Serial.print("Menghubungkan ke broker MQTT...");
while (!client.connect("SubscriberClient")) {
Serial.print(".");
delay(500);
}
Serial.println("\nTerhubung ke broker!");
client.subscribe("mufiz/range");
}
void setup() {
Serial.begin(9600);
pinMode(LED_PIN, OUTPUT);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("\nTerhubung ke WiFi!");
client.begin("broker.emqx.io", net);
client.onMessage(messageReceived);
connect();
}
void loop() {
client.loop();
if (!client.connected()) {
connect();
delay(1000); // Optional: add a delay after reconnecting
}
}
void messageReceived(String &topic, String &payload) {
Serial.println("Pesan diterima [" + topic + "]: " + payload);
int jarak = payload.toInt();
if (jarak >= 250) {
digitalWrite(LED_PIN, HIGH);
Serial.println("LED Nyala");
} else {
digitalWrite(LED_PIN, LOW);
Serial.println("LED Mati");
}
}