What is an NTP update interval?

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 :confused:. 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);
}

Hi

Looking at the code you just call .update in the loop continuously and it checks if time to update, mostly .update will return having done nothing at all until the 60,000ms is up (or whatever time you set it as).

The delay of 1 second is just so the demo code prints the time once a second like a clock, if it wasn't there it would be printing the time hundreds of times a second as the loop goes around and it would flood the serial port and scroll up the screen.

So the delay of 1 second is just to give a nicer demo, and call update will only update once a minute with the current example, but you need to call update continuously in the loop.

Looking at the code you just call .update in the loop continuously and it checks if time to update, mostly .update will return having done nothing at all until the 60,000ms is up (or whatever time you set it as).

Thanks @LC200. I suspected so but was unsure.