CCCPaste

fab34b50e8cc2

#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);
}