ESP32 has a RTC which is an independent clock keeps tracks of the date and time.
RTC setup and read the details
from machine import RTC import time rtc = RTC() rtc.init((2022,12,27,2,10,23,0,0)) while True: date=rtc.datetime() print(date) time.sleep(1)
The RTC info will be reset after power-off or reset, so we may need to try one of below to have the correct datetime
- Make sure it always has power
- Connect with another RTC, for example DS3231
- Sync time with NTP
Sync time with NTP
In this exercise, we will try to sync the time with NTP on each boot.
def do_connect(): import network wlan = network.WLAN(network.STA_IF) wlan.active(True) if not wlan.isconnected(): print('connecting to network...') wlan.connect('<WIFI SID>', '<WIFI Password>') while not wlan.isconnected(): pass print('network config:', wlan.ifconfig()) do_connect() def settime(): import machine import utime from ntptime import time t = time() print ("GMT: ",t) t = t + 11 * 60 * 60 # the time returned is GMT, so added extra hours for timezone. print ("Local",t) tm = utime.localtime(t) tm = tm[0:3] + (0,) + tm[3:6] + (0,) machine.RTC().datetime(tm) settime()
from machine import RTC import time rtc = RTC() while True: date=rtc.datetime() print(date) time.sleep(1)