#include <WiFi.h>
#include <PubSubClient.h>
#define Relay 2
WiFiClient esp;
PubSubClient mqttClient(esp);
void setup() {
Serial.begin(9600);
Serial.print("Connecting to WiFi");
WiFi.begin("Wokwi-GUEST", "", 6);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.println("Connected !");
mqttClient.setServer("test.mosquitto.org", 1883);
mqttClient.setCallback(recCallback);
pinMode(Relay, OUTPUT);
digitalWrite(Relay, HIGH);
}
void loop() {
if (digitalRead(Relay)) {
Serial.println("Relay is ON");
if (!mqttClient.connected()) {
connectToBro();
}
mqttClient.loop();
char buff_1[6];
String(Relay, 2).toCharArray(buff_1, 6);
mqttClient.publish("Relay is ON", buff_1);
} else {
Serial.println("Relay is OFF");
if (!mqttClient.connected()) {
connectToBro();
}
mqttClient.loop();
char buff_1[6];
String(Relay, 2).toCharArray(buff_1, 6);
mqttClient.publish("Relay of OFF", buff_1);
}
delay(500);
}
void connectToBro() {
while (!mqttClient.connected()) {
Serial.print("Attempting to connect...");
if (mqttClient.connect("ESP32-45dfgfvfdassadad")) {
Serial.println("Mqtt connected !");
mqttClient.subscribe("Smart_Plug-Relay");
} else {
Serial.println("Mqtt failed !");
Serial.println(mqttClient.state());
delay(5000);
}
}
}
void recCallback(char *topic, byte *payload, unsigned int length) {
Serial.println(" Msg Received : ");
Serial.println(topic);
if ((char)payload[0] == '1') {
digitalWrite(Relay, HIGH);
} else {
digitalWrite(Relay, LOW);
}
}