#define BLYNK_TEMPLATE_ID "TMPL3qTcuIUhb"
#define BLYNK_TEMPLATE_NAME "IIT"
#define BLYNK_AUTH_TOKEN "-xGUBb12P69hwnGboUgZMzIVZL45nmzJ"
#define BLYNK_PRINT Serial
#include
#include
#include
// -------- PIN SETUP ----------
#define light1 D1
#define light2 D2
#define light3 D3
#define wifiLed D0
// -------- WIFI DETAILS ----------
char ssid[] = "TestESP";
char pass[] = "12345678";
char auth[] = BLYNK_AUTH_TOKEN;
// -------- NTP SETTINGS ----------
const char* ntpServer = "pool.ntp.org";
const long gmtOffset_sec = 19800; // +5:30 for India
const int daylightOffset_sec = 0;
// -------- FLAGS ----------
bool autoMode = true; // Default auto ON (6 PM – 6 AM)
// -------- BLYNK BUTTONS ----------
BLYNK_WRITE(V0) { // Light 1
bool v = param.asInt();
autoMode = false; // Disable auto if user toggles manually
digitalWrite(light1, v ? LOW : HIGH);
}
BLYNK_WRITE(V1) { // Light 2
bool v = param.asInt();
autoMode = false;
digitalWrite(light2, v ? LOW : HIGH);
}
BLYNK_WRITE(V2) { // Light 3
bool v = param.asInt();
autoMode = false;
digitalWrite(light3, v ? LOW : HIGH);
}
BLYNK_WRITE(V3) { // Auto Mode ON/OFF
autoMode = param.asInt();
}
// -------- SETUP ----------
void setup() {
Serial.begin(9600);
pinMode(light1, OUTPUT);
pinMode(light2, OUTPUT);
pinMode(light3, OUTPUT);
pinMode(wifiLed, OUTPUT);
digitalWrite(light1, HIGH);
digitalWrite(light2, HIGH);
digitalWrite(light3, HIGH);
digitalWrite(wifiLed, HIGH);
WiFi.begin(ssid, pass);
Serial.print("Connecting to WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nConnected!");
digitalWrite(wifiLed, LOW);
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
Blynk.begin(auth, ssid, pass);
}
// -------- LOOP ----------
void loop() {
Blynk.run();
if (autoMode) {
time_t now = time(nullptr);
struct tm* t = localtime(&now);
int hourNow = t->tm_hour;
// 6 PM → 6 AM lights ON
if (hourNow >= 18 || hourNow < 6) {
digitalWrite(light1, LOW);
digitalWrite(light2, LOW);
digitalWrite(light3, LOW);
} else {
digitalWrite(light1, HIGH);
digitalWrite(light2, HIGH);
digitalWrite(light3, HIGH);
}
}
delay(1000);
}