Я работаю с модулем utime в Micro Python. Я заметил разницу во времени при преобразовании во время эпохи между utime.time () на ESP32 в Micro Python и time.time () в обычном Python. Я также использую плату DS3231 RT C, которая подключена к ESP32, чтобы сделать мое время постоянным.
Вот код:
from machine import Pin, ADC, reset, RTC, I2C
import DS3231
import utime
#setup DS3231 RTC
i2c = I2C(sda = Pin(22), scl=Pin(21))
ds = DS3231.DS3231(i2c)
#set time
tm = ds.DateTime() # Time from DS3231 which is accurate to my computer time
#ds.DateTime returns this [2020, 4, 15, 3, 12, 42, 4] which is Y,M,D,day of week,H,M,S
tm_tup = (tm[0], tm[1], tm[2], tm[4], tm[5], 0,0,0) #convert to tuple to set ESP32 clock which is
#supposed to also set utime
RTC().datetime(tm_tup) #sets time on ESP32
utc = 946684800 + utime.time() # since utime starts at 1/1/2000 and utc starts 1/1/1970
print(tm) #time from DS3231 RTC
print(utime.time())
print(utc) #added to utime.time() to make UTC
Функция ds.DateTime()
возвращает то же время, что и мой компьютер в списке. Я переставляю значения в кортеж, чтобы установить RTC.datetime()
, который должен синхронизироваться c с модулем utime. Все, что мне действительно нужно, это точная метка времени UT C. Местное время в порядке.
Существует несоответствие, когда я проверяю utime.time()
против Python модуля time.time()
, даже если я установил на моем DS3231 точное время на моем компьютере. Выходы следующие. Я запускал сценарий Python примерно через 30 секунд после запуска версии ESP32.
Выход ESP32
[2020, 4, 15, 3, 15, 46, 49] #Exact date time from my computer
640389600
1587074400
Python Выход
>>> import time
>>> print (time.time())
1586983668.94813
Просто любопытно, почему существует такая разница.