#include <WiFi.h>
#include <NTPClient.h>
#include <WiFiUdp.h>
// Informasi koneksi WiFi
const char* ssid = "Wokwi-GUEST"; // ganti dengan SSID WiFi Anda jika perlu
const char* password = "";
// Konfigurasi NTP
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org", 7 * 3600, 60000); // GMT+7 (WIB), update setiap 60 detik
void setup() {
// Memulai Serial
Serial.begin(115200);
// Menghubungkan ke WiFi
WiFi.begin(ssid, password);
Serial.print("Connecting to WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("\nSuccess Conecting");
// Memulai NTP client
timeClient.begin();
}
void loop() {
// Update waktu dari NTP Server
timeClient.update();
// Mendapatkan waktu Epoch (Unix Time)
unsigned long epochTime = timeClient.getEpochTime();
// Mengonversi waktu Epoch ke format tanggal dan waktu lokal
time_t rawTime = epochTime;
struct tm *timeInfo = localtime(&rawTime);
// Tampilkan waktu dalam format tanggal dan waktu (WIB)
Serial.print("\nTIME: ");
Serial.printf("%s, %02d %s %d %02d:%02d:%02d\n",
timeInfo->tm_wday == 0 ? "Sunday" :
timeInfo->tm_wday == 1 ? "Monday" :
timeInfo->tm_wday == 2 ? "Tuesday" :
timeInfo->tm_wday == 3 ? "Wednesday" :
timeInfo->tm_wday == 4 ? "Thursday" :
timeInfo->tm_wday == 5 ? "Friday" : "Saturday",
timeInfo->tm_mday,
timeInfo->tm_mon == 0 ? "January" :
timeInfo->tm_mon == 1 ? "February" :
timeInfo->tm_mon == 2 ? "March" :
timeInfo->tm_mon == 3 ? "April" :
timeInfo->tm_mon == 4 ? "May" :
timeInfo->tm_mon == 5 ? "June" :
timeInfo->tm_mon == 6 ? "July" :
timeInfo->tm_mon == 7 ? "August" :
timeInfo->tm_mon == 8 ? "September" :
timeInfo->tm_mon == 9 ? "October" :
timeInfo->tm_mon == 10 ? "November" : "December",
timeInfo->tm_year + 1900,
timeInfo->tm_hour,
timeInfo->tm_min,
timeInfo->tm_sec);
// Tampilkan Unix Epoch Time
Serial.print("EPOCH: ");
Serial.println(epochTime);
// Delay untuk mengulangi setiap 10 detik
delay(1000);
}