Minimal ESP32 NTP client example using NTPClient_Generic and PlatformIO
Example of using NTPClient_Generic
main.cpp
#include <Arduino.h>
#include <WiFi.h>
#include <NTPClient_Generic.h>
#define TIME_ZONE_OFFSET_HRS 1 // UTC+1 for Germany, winter time
#define NTP_UPDATE_INTERVAL_MS 60000L // Update every 60s automatically
WiFiUDP ntpUDP;
NTPClient ntpClient(ntpUDP, "europe.pool.ntp.org", (3600 * TIME_ZONE_OFFSET_HRS), NTP_UPDATE_INTERVAL_MS);
void ntpUpdateTask(void* param) {
while(true) {
// Update NTP. This will only ACTUALLY update if
// the NTP client has not updated for NTP_UPDATE_INTERVAL_MS
ntpClient.update();
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
void setup() {
Serial.begin(115200);
// Force reset Wifi to avoid failure to connect
WiFi.disconnect(true);
// Set hostname
WiFi.config(INADDR_NONE, INADDR_NONE, INADDR_NONE);
WiFi.setHostname("ESP-NTP");
// Connect to Wifi
WiFi.begin("MyWifiSSID", "MyWifiPassword");
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.println("Wifi connecting...");
}
// Start NTP client (i.e. start listening for NTP packets)
ntpClient.begin();
// Create task to automatically update NTP in the background
xTaskCreate(ntpUpdateTask, "NTP update", 2000, nullptr, 1, nullptr);
}
void loop() {
delay(1000);
if (ntpClient.updated()) {
Serial.println("# Time in sync with NTP server");
} else {
Serial.println("# TIME NOT IN SYNC WITH NTP SERVER !");
return; // Do not print time
}
Serial.println("UTC : " + ntpClient.getFormattedUTCTime());
Serial.println("UTC : " + ntpClient.getFormattedUTCDateTime());
Serial.println("LOC : " + ntpClient.getFormattedTime());
}
platformio.ini
[env:nodemcu-32s]
platform = espressif32
board = nodemcu-32s
framework = arduino
monitor_speed = 115200
lib_deps =
khoih.prog/NTPClient_Generic @ ^3.2.2
Time
Example output:
Wifi connecting...
Wifi connecting...
Wifi connecting...
# TIME NOT IN SYNC WITH NTP SERVER !
# Time in sync with NTP server
UTC : 01:22:07
UTC : 01:22:07 Sun 07 Feb 2021
LOC : 02:22:07
# Time in sync with NTP server
UTC : 01:22:08
UTC : 01:22:08 Sun 07 Feb 2021
LOC : 02:22:08
# Time in sync with NTP server
UTC : 01:22:09
UTC : 01:22:09 Sun 07 Feb 2021
LOC : 02:22:09