#include <WiFi.h>
#include <PubSubClient.h>
// WiFi credentials
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// MQTT broker settings
const char* mqttServer = "mqtt.eclipseprojects.io";
const int mqttPort = 1883;
const char* mqttTopic = "LED";
WiFiClient espClient;
PubSubClient client(espClient);
const int ledPin = 5; // LED on GPIO5 (PWM-capable)
void setup() {
Serial.begin(115200);
pinMode(ledPin, OUTPUT);
// Connect to WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("\nā
WiFi connected");
// Connect to MQTT
client.setServer(mqttServer, mqttPort);
client.setCallback(callback);
while (!client.connected()) {
Serial.print("Connecting to MQTT...");
if (client.connect("esp32-client")) {
Serial.println(" connected!");
client.subscribe(mqttTopic);
} else {
Serial.print(" failed. State=");
Serial.println(client.state());
delay(2000);
}
}
}
void loop() {
client.loop();
}
// MQTT callback function to handle incoming messages
void callback(char* topic, byte* payload, unsigned int length) {
String message;
for (int i = 0; i < length; i++) {
message += (char)payload[i];
}
Serial.print("š© Received on topic ");
Serial.print(topic);
Serial.print(": ");
Serial.println(message);
// Convert incoming value (0-10) to PWM (0-255)
int sliderValue = message.toInt();
int pwmValue = map(sliderValue, 0, 10, 0, 255);
analogWrite(ledPin, pwmValue);
Serial.printf("š LED brightness set to %d (PWM)\n", pwmValue);
}