Below is an example sketch using the NTPClient library from Arduino (found here on Github). The final argument of the timeClient() constructor (right before "void setup()") is the update interval in milliseconds (currently 60000).
What exactly is the update interval? What does it do?
Since timeClient.update() runs approximately every 1000ms in the loop(), wouldn't the time be updating every 1 second, rather than every 60 seconds as implied by the "update interval"?
I have no prior experience with NTP . Ultimately, I only need to get the time from the NTP server once per day max (maybe even once per week), only to keep my RTC on my Feather ESP32 in sync within a few seconds accuracy.
#include <NTPClient.h>
// change next line to use with another board/shield
#include <ESP8266WiFi.h>
//#include <WiFi.h> // for WiFi shield
//#include <WiFi101.h> // for WiFi 101 shield or MKR1000
#include <WiFiUdp.h>
const char *ssid = "<SSID>";
const char *password = "<PASSWORD>";
WiFiUDP ntpUDP;
// You can specify the time server pool and the offset (in seconds, can be
// changed later with setTimeOffset() ). Additionaly you can specify the
// update interval (in milliseconds, can be changed using setUpdateInterval() ).
NTPClient timeClient(ntpUDP, "europe.pool.ntp.org", 3600, 60000);
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.println(timeClient.getFormattedTime());
delay(1000);
}