#include <Arduino.h> // Library untuk platform Arduino
#include <WiFi.h> // Library untuk mengatur koneksi WiFi
#include <NTPClient.h> // Library untuk mengakses server NTP
#include <WiFiUdp.h> // Library untuk protokol UDP pada koneksi WiFi
const char* ssid = "Wokwi-GUEST"; // Nama jaringan WiFi yang akan dihubungkan
const char* password = ""; // Kata sandi jaringan WiFi (kosongkan jika tidak ada)
const char* ntpServer = "pool.ntp.org"; // Server NTP yang akan digunakan untuk sinkronisasi waktu
const long gmtOffset_sec = 7 * 3600; // Perbedaan waktu GMT (dalam detik) (GMT+7:00)
const int daylightOffset_sec = 0; // Perbedaan waktu untuk daylight saving time (tidak ada)
WiFiUDP ntpUDP; // Objek untuk koneksi UDP ke server NTP
NTPClient timeClient(ntpUDP, ntpServer, gmtOffset_sec, daylightOffset_sec); // Objek untuk mengakses waktu dari server NTP
void setup() {
Serial.begin(115200); // Memulai komunikasi serial dengan kecepatan 115200 baud
Serial.printf("Menghubungkan ke WiFi %s ", ssid); // Menampilkan pesan koneksi WiFi yang sedang dilakukan
WiFi.begin(ssid, password); // Memulai koneksi WiFi
while (WiFi.status() != WL_CONNECTED) { // Menunggu hingga koneksi WiFi berhasil terhubung
delay(500);
Serial.print(".");
}
Serial.println("Berhasil terhubung ke WiFi!"); // Menampilkan pesan jika koneksi WiFi berhasil
// Inisialisasi NTP client untuk mendapatkan waktu
timeClient.begin();
}
void loop() {
// Memperbarui waktu dari server NTP
timeClient.update();
// Mendapatkan waktu dalam format Unix epoch
unsigned long epochTime = timeClient.getEpochTime();
// Konversi waktu epoch menjadi waktu lokal
struct tm localTime;
localtime_r((time_t*)&epochTime, &localTime);
// Mencetak waktu lokal yang diformat
char formattedTime[50];
strftime(formattedTime, sizeof(formattedTime), "%A, %B %d, %Y %I:%M:%S %p", &localTime);
Serial.println(formattedTime);
// Mencetak waktu epoch
Serial.print("EPOCH : ");
Serial.println(epochTime);
// Tunggu selama satu detik sebelum mendapatkan waktu berikutnya
Serial.println("-----------------------");
delay(1000);
}