#include <WiFi.h>
#include <NTPClient.h>
#include <WiFiUdp.h>
const char *ssid = "Wokwi-GUEST";
const char *password = "";
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "1.asia.pool.ntp.org");
String weekDays[7]={"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
String months[12]={"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
void setup() {
// Initialize Serial Monitor
Serial.begin(115200);
// Connect to Wi-Fi
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
// Initialize a NTPClient to get time
timeClient.begin();
// Set offset time in seconds to adjust for your timezone (UTC+7 for Thailand)
timeClient.setTimeOffset(25200); // 7 * 3600
}
void loop() {
time_ctrl();
}
void time_ctrl(){
timeClient.update();
time_t epochTime = timeClient.getEpochTime();
String formattedTime = timeClient.getFormattedTime(); // 00:00:00
Serial.print("Formatted Time: ");
Serial.println(formattedTime);
int currentHour = timeClient.getHours();
Serial.print("Hour: ");
Serial.println(currentHour);
int currentMinute = timeClient.getMinutes();
Serial.print("Minutes: ");
Serial.println(currentMinute);
int currentSecond = timeClient.getSeconds();
Serial.print("Seconds: ");
Serial.println(currentSecond);
String weekDay = weekDays[timeClient.getDay()];
struct tm *ptm = gmtime ((time_t *)&epochTime);
int monthDay = ptm->tm_mday;
int currentMonth = ptm->tm_mon + 1;
Serial.print("Month: ");
Serial.println(currentMonth);
String currentMonthName = months[currentMonth-1];
Serial.print("Month name: ");
Serial.println(currentMonthName);
if (currentMonth == 2 || currentMonth == 3 || currentMonth == 4){
Serial.println("ฤดูร้อน");
if (currentHour >= 6 && currentHour <= 18){
Serial.println("Start up Solar");
}
else {
Serial.println("Off all relays");
}
}
else if (currentMonth == 5 || currentMonth == 6 || currentMonth == 7 || currentMonth == 8 || currentMonth == 9 || currentMonth == 10){
Serial.println("ฤดูฝน");
if (currentHour >= 6 && currentHour <= 18){
Serial.println("Start up Solar");
}
else {
Serial.println("Off all relays");
}
}
else if (currentMonth == 11 || currentMonth == 12 || currentMonth == 1) {
Serial.println("ฤดูหนาว");
if (currentHour >= 7 && currentHour <= 18){
Serial.println("Start up Solar");
}
else {
Serial.println("Off all relays");
}
}
Serial.println("");
delay(1000);
}