diff --git a/NTP.cpp b/NTP.cpp index e0d873e..19227f7 100755 --- a/NTP.cpp +++ b/NTP.cpp @@ -21,6 +21,7 @@ */ #include "NTP.h" +#include NTP::NTP(UDP& udp) { this->udp = &udp; @@ -104,6 +105,11 @@ bool NTP::ntpUpdate() { } else return false; #endif + + // set the hardware clock to UTC + timeval tv = { epoch(), 0 }; + settimeofday(&tv, nullptr); + return true; } diff --git a/examples/CheckSystemClock/CheckSystemClock.ino b/examples/CheckSystemClock/CheckSystemClock.ino new file mode 100755 index 0000000..d99a0a3 --- /dev/null +++ b/examples/CheckSystemClock/CheckSystemClock.ino @@ -0,0 +1,46 @@ +// example for WIFI based boards like ESP8266, ESP32, Nano RP2040 Connect, WiFi 101 shield or MKR1000 + +#include "Arduino.h" +// change next line to use with another board/shield +#include +//#include // for WiFi shield or ESP32 +//#include // for WiFi 101 shield or MKR1000 +//#include // for e.g. Nano RP2040 Connect +#include "WiFiUdp.h" // not needed for WiFiNINA +#include "NTP.h" + +char ssid[] = "yourSSID"; +char password[] = "yourPASSWORD"; + +WiFiUDP wifiUdp; +NTP ntp(wifiUdp); + +void setup() { + Serial.begin(115200); + WiFi.begin(ssid, password); + while (WiFi.status() != WL_CONNECTED) { + Serial.println("Connecting ..."); + delay(500); + } + Serial.println("Connected"); + ntp.ruleDST("CEST", Last, Sun, Mar, 2, 120); // last sunday in march 2:00, timetone +120min (+1 GMT + 1h summertime offset) + ntp.ruleSTD("CET", Last, Sun, Oct, 3, 60); // last sunday in october 3:00, timezone +60min (+1 GMT) + ntp.begin(); + Serial.println("start NTP"); + } + +void loop() { + ntp.update(); + Serial.println(ntp.formattedTime("%d. %B %Y")); // dd. Mmm yyyy + Serial.println(ntp.formattedTime("%A %T")); // Www hh:mm:ss + + // Because the system clock was updated we can use the standard time() function to obtain UTC time. + time_t now = time(NULL); + char *systemtime = (char *)"System Clock Not Set"; + if (now > 3600) + systemtime = ctime(&now); + Serial.print("System Clock (UTC): "); + Serial.println(systemtime); + + delay(1000); + }