#define BLYNK_TEMPLATE_ID "TMPL3BxlltXHq"
#define BLYNK_TEMPLATE_NAME "energy monitor"
#define BLYNK_AUTH_TOKEN "BNwl4DdgCytaaoFzxd0Iv8Tfd_1tYhoK"
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
#define CURRENT_PIN 34
// Energy tracking
float kwhTotal = 0.0;
float unitPrice = 8.0; // ₹8 per kWh (Indian rate)
float voltage = 230.0; // Indian mains voltage
// Simulation time (1 loop = 1 minute simulated)
float simMinutes = 0;
BlynkTimer timer;
void sendEnergyData() {
// Read potentiometer → map to 0–15A
int raw = analogRead(CURRENT_PIN);
float current = map(raw, 0, 4095, 0, 1500) / 100.0;
// Power in Watts
float power = voltage * current;
// ✅ Fix: Simulate 1 minute per 2-second loop (for demo)
simMinutes += 1.0;
float simHours = simMinutes / 60.0;
// Energy in kWh
kwhTotal = (power / 1000.0) * simHours;
// Cost in Rupees
float totalCost = kwhTotal * unitPrice;
// Send to Blynk
Blynk.virtualWrite(V0, current);
Blynk.virtualWrite(V1, power);
Blynk.virtualWrite(V2, totalCost);
// Serial Monitor
Serial.print("Current: "); Serial.print(current, 2); Serial.print(" A");
Serial.print(" | Power: "); Serial.print(power, 1); Serial.print(" W");
Serial.print(" | kWh: "); Serial.print(kwhTotal, 4);
Serial.print(" | Cost: ₹");Serial.println(totalCost, 2);
}
void setup() {
Serial.begin(115200);
analogSetAttenuation(ADC_11db);
Serial.println("Connecting to Blynk...");
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
Serial.println("Connected!");
timer.setInterval(2000L, sendEnergyData);
}
void loop() {
Blynk.run();
timer.run();
}