← index #12313Issue #3674
Duplicate · high · value 5.335
QUERY · ISSUE

ESP32: RTC().init() wrong tuple

openby socketpairopened 2023-08-27updated 2023-08-27
bug

https://docs.micropython.org/en/v1.15/library/machine.RTC.html#machine.RTC.init

image

>>> RTC().init((2023,5,6,10,20,30,0,0))
>>> localtime()
(2023, 5, 6, 20, 30, 2, 5, 126)

as you can see, hour(10) is missing when reading back from RTC.

What helps?
inserting zero after day and before hour.

>>> RTC().init((2023,5,6,0,10,20,30,0))
>>> localtime()
(2023, 5, 6, 10, 20, 31, 5, 126)

Definitely bug in ESP32 port (all ports ?), or documentation is wrong.

>>> sys.implementation
(name='micropython', version=(1, 20, 0), _machine='ESP32S3 module with ESP32S3', _mpy=10502)
CANDIDATE · ISSUE

ESP32 machine.rtc datetime tuple parameters don't match documentation

openby ed-frenchopened 2018-03-19updated 2024-09-19
docsport-esp32

Micropython documentation: http://docs.micropython.org/en/latest/wipy/library/machine.RTC.html
Shows machine.rtc.init documented with tuple like this:

RTC.init(datetime)
Initialise the RTC. Datetime is a tuple of the form:

(year, month, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]])

However, the code suggests a different order is used: https://github.com/micropython/micropython/blob/master/ports/esp32/machine_rtc.c

timeutils_seconds_since_2000(mp_obj_get_int(items[0]), mp_obj_get_int(items[1]), mp_obj_get_int(items[2]), mp_obj_get_int(items[4]), mp_obj_get_int(items[5]), mp_obj_get_int(items[6]))

Likewise with machine.rtc.datetime actually returns this order of parameters in the tuple:

r.datetime()
(2018, 3, 21, 2, 6, 8, 19, 258907)
r.datetime()
(2018, 3, 21, 2, 6, 8, 22, 828728)
r.datetime()
(2018, 3, 21, 2, 6, 9, 31, 888997)
r.init((2018,3,19,0,7,5,0,0))
r.datetime()
(2018, 3, 19, 0, 7, 5, 4, 368663)
r.datetime()
(2018, 3, 19, 0, 7, 5, 16, 608804)
r.datetime()
(2018, 3, 19, 0, 7, 5, 38, 98816)

Keyboard

j / / n
next pair
k / / p
previous pair
1 / / h
show query pane
2 / / l
show candidate pane
c
copy suggested comment
r
toggle reasoning
g i
go to index
?
show this help
esc
close overlays

press ? or esc to close

copied