I have been able to get the current time from an NTP server and set what appears to be an internal clock using the configTime()
function from the ESP32 core. I can then get the current time with the function getLocalTime()
.
I would like to be able to set the time returned by getLocalTime()
from user input rather than from an NTP server. I would also like to be able to update the GMT Offset without needing to reconnect to the server.
How do I interact with the clock value used by getLocalTime()
? Is there documentation for this clock somewhere?
per request the SimpleTime
example from the ESP32 install:
#include <WiFi.h>
#include "time.h"
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASS";
const char* ntpServer = "pool.ntp.org";
const long gmtOffset_sec = 3600;
const int daylightOffset_sec = 3600;
void printLocalTime()
{
struct tm timeinfo;
if(!getLocalTime(&timeinfo)){
Serial.println("Failed to obtain time");
return;
}
Serial.println(&timeinfo, "%A, %B %d %Y %H:%M:%S");
}
void setup()
{
Serial.begin(115200);
//connect to WiFi
Serial.printf("Connecting to %s ", ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println(" CONNECTED");
//init and get the time
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
printLocalTime();
//disconnect WiFi as it's no longer needed
WiFi.disconnect(true);
WiFi.mode(WIFI_OFF);
}
void loop()
{
delay(1000);
printLocalTime();
}
-
1Check out this library I wrote github.com/fbiego/ESP32Timefbiego– fbiego01/19/2021 05:02:17Commented Jan 19, 2021 at 5:02
1 Answer 1
The functions configTime and getLocalTime are from ESP32 core file esp32-hal-time.c. This wraps the ESP32 SDK functions. You can use the SDK functions to set the time and zone. They work with the RTC peripheral of the ESP32.
You can use setTimeZone to set the time zone.
The time.h is standard C time library. The ESP32 SDK makes it to work with the built in RTC (reference). To set the time it gets complicated. You would have to use undocumented SDK time functions.