Hallo Warrior, pada pembahasan sebelumnya kita sudah membahas mengenai Setting waktu menggunakan modul RTC DS3231. Disini kita akan membahas mengenai Setting waktu tanpa modul RTC melainkan menggunakan NTP (Network Time Protocol).
Baca juga : Setting Waktu pada Modul RTC DS3231 Menggunakan ESP8266
Contents
Apa itu NTP ?
NTP (Network Time Protocol) Merupakan sebuah protokol jaringan yang berfungsi untuk mensinkronisasi waktu berupa tanggal, jam, menit dan detik. Protokol ini menggunakan jaringan TCP/IP dengan port 123.
NTP ini memiliki dua sisi diantaranya ntp server dan ntp client, server disini berfungsi sebagai pusat waktu yang membagikan data waktu kepada client. Sedangkan client yang memiliki alamat akses ke server tersebut akan melakukan sinkronisasi sehingga waktunya sama dengan server.
Untuk mengakses pool url dari ntp server di interner, kalian dapat mengaksesnya pada url tersebut https://www.pool.ntp.org/zone/id.
Pada tutorial ini kita akan coba melakukan konfigurasi ntp client pada NodeMCU ESP8266, sehingga dia dapat mengakses waktu sesuai dengan ntp server pool di situs pool ntp. Berikut skema gambaran proses sinkronisasinya.
Praktek
Persiapan dan bahan
Pada praktek ntp ini kita hanya memerlikan NodeMCU ESP8266 dan juga koneksi internet saja. Karena kita hanya akan mengakses waktu.
Installasi Library
Sebelum kita memasukan program ntp client ini, pastikan bahwa library ntpclient sudah terinstall pada arduino IDE yang kita miliki. Jika belum kalian dapat mencarinya pada library manager seperti dibawah ini.
Sketch Program
Pada program ini kita menggunakan alamat ntp server id.pool.ntp.org sesuai dengan pool yang kita dapat pada website yang sudah diterangkan pada bagian sebelumnya.
#include <NTPClient.h>
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
// Setup Wifi
const char *ssid = "jenamonster";
const char *password = "c0c0d0tb4u";
const long utcOffsetInSeconds = 25200;
// Setting tanggal menjadi nama hari
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
// Define NTP Client to get time
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "id.pool.ntp.org", utcOffsetInSeconds);
void setup(){
Serial.begin(115200);
WiFi.begin(ssid, password);
while ( WiFi.status() != WL_CONNECTED ) {
delay ( 500 );
Serial.print ( "." );
}
timeClient.begin();
}
void loop() {
timeClient.update();
Serial.print(daysOfTheWeek[timeClient.getDay()]);
Serial.print(", ");
Serial.print(timeClient.getHours());
Serial.print(":");
Serial.print(timeClient.getMinutes());
Serial.print(":");
Serial.println(timeClient.getSeconds());
delay(1000);
}
Hasil Percobaan
Setelah program berhasil kita upload, selanjutnya kita cek hasil yang sudah kita buat dengan membuka serial monitor dan apabila berhasil maka akan muncul seperti dibawah ini.
Kebetulan disini saya melakukan percobaan pada pukul 23. 38 WIB dan ternyata ketika saya mengecek jam yang ada pada laptop terlihat waktunya sesuai dengan hasil serial monitor.
Kesimpulan
Menurut hasil percobaan yang sudah kita lakukan, disini kita bisa menjalankan fungsi waktu pada NodeMCU ESP8266 tanpa perlu menggunakan modul RTC. Kita hanya perlu menjalankan NTP Client sehingga kita bisa mengakses waktu seperti jam, menit, detik, sesuai pool ntp server.