#include <WiFi.h>
#include <PubSubClient.h>
#define Relay 2
int potpin_1 = 34;
int potpin_2 = 35;
int val_1;
int val_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, LOW);
}
void loop() {
if (digitalRead(Relay) == HIGH) {
val_1 = analogRead(potpin_1);
float current = 5.00 * (val_1 / 4095.00);
val_2 = analogRead(potpin_2);
float voltage = 250.00 * (val_2 / 4095.00);
Serial.print("Current: ");
Serial.print(current);
Serial.print(" ");
Serial.print("Voltage: ");
Serial.println(voltage);
float power = current * voltage;
if (!mqttClient.connected()) {
connectToBro();
}
mqttClient.loop();
char buff_1[6];
String(power, 2).toCharArray(buff_1, 6);
mqttClient.publish("Power", buff_1);
} else {
// If Relay is LOW, set power value to zero
float power = 0.0;
if (!mqttClient.connected()) {
connectToBro();
}
mqttClient.loop();
char buff_1[6];
String(power, 2).toCharArray(buff_1, 6);
mqttClient.publish("Power", 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);
}
}