#include <WiFi.h>
#include <PubSubClient.h>
#include <WiFiUdp.h>
WiFiClient espClient;
PubSubClient mqttClient(espClient);
#define CURRENT 2
#define VOLTAGE 4
#define POWER 15
#define LED 13
char currentAr[6];
char voltageAr[6];
char powerAr[6];
// WiFi
const char *ssid = "Wokwi-GUEST"; // Enter your WiFi name
const char *password = ""; // Enter WiFi password
void setup() {
Serial.begin(115200);
pinMode(CURRENT, INPUT);
pinMode(VOLTAGE, INPUT);
pinMode(POWER, INPUT);
pinMode(LED, OUTPUT);
digitalWrite(LED,HIGH);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println("Connecting to WiFi..");
}
Serial.println("Connected to the WiFi network");
}
void loop() {
double current = map(analogRead(CURRENT),0,4095,0,500)/100.0;
dtostrf(current, 6, 2, currentAr);
Serial.print("Current : ");
Serial.println(currentAr);
double voltage = map(analogRead(VOLTAGE),0,4095,0,2300)/10.0;
dtostrf(voltage, 6, 2, voltageAr);
Serial.print("Voltage : ");
Serial.println(voltageAr);
double power = map(analogRead(POWER),0,4095,0,5000);
dtostrf(power, 6, 2, powerAr);
Serial.print("Power : ");
Serial.println(powerAr);
delay(1000);
if (!mqttClient.connected()) {
connectToBroker();
}
mqttClient.loop();
}
void setupMqtt() {
mqttClient.setServer("test.mosquitto.org", 1883);
mqttClient.setCallback(receiveCallback);
}
void receiveCallback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
char payloadCharAr[length];
for (int i = 0; i < length; i++) {
Serial.print((char)payload[i]);
payloadCharAr[i] = (char)payload[i];
}
// Serial.println();
// if (strcmp(topic, "ENTC-SC-SP-ADMIN-MAIN-ON-OFF") == 0) {
// switchLed(((char)payload[0]) == '1');
// } else if (strcmp(topic, "ENTC-SC-SP-ADMIN-SCH-ON") == 0) {
// if (((char)payload[0]) == 'N') {
// isScheduledON = false;
// } else {
// isScheduledON = true;
// scheduledOnTime = atol(payloadCharAr);
// }
// }
}
void connectToBroker() {
while (!mqttClient.connected()) {
Serial.print("Attempting MQTT connection...");
if (mqttClient.connect("ESP-8266-000789458")) {
Serial.println("connected");
mqttClient.subscribe("ENTC-MAIN-ON-OFF");
} else {
Serial.print("failed ");
Serial.print(mqttClient.state());
delay(5000);
}
}
}