MicroPython 特定的库 (MicroPython-specific)-ntptime
以下库中提供了特定于 MicroPython 实现的功能。
- bluetooth — 低级蓝牙
- btree – 简单的 BTree 数据库
- cryptolib——加密密码
- framebuf — 帧缓冲区操作
- machine — 与硬件相关的函数
- micropython – 访问和控制 MicroPython 内部
- neopixel — WS2812 / NeoPixel LED 的控制
- network — 网络配置
- ntptime — 时间同步
- uctypes——以结构化方式访问二进制数据
ntptime - 时间同步
该模块用于时间同步,提供准确时间,国际标准时间(UTC)。
Network Time Protocol(NTP)是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化。它可以提供高精准度的时间校正。
ntptime.settime()
同步本地时间,以下为默认值。
- timezone - 时区时间差,默认为东八区,补偿8小时
- server - 可自行指定授时服务器,server为字符串类型。默认授时服务器为"pool.ntp.org"。
ntptime.host
授时服务器
ntptime.NTP_DELTA
ntp 的秒数是从 1900/01/01 开始起算,而 MicroPython 是从 2000/01/01 起算,所以要做差值才能正确的计算。
示例中先连上指定的 WiFi,取得网络连线,接著设定时区、授时服务器,接著 ESP32-CAM 同步授时服务器的时间。
原始代码
import time, network, ntptime
print("同步前本地时间:%s" %str(time.localtime()))
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect('your-ssid', 'your-password')
while not wlan.isconnected():
pass
ntptime.NTP_DELTA = ntptime.NTP_DELTA - 8*60*60 # UTC+8
ntptime.host = 'ntp.ntsc.ac.cn'
ntptime.settime()
print("同步后本地时间:%s" %str(time.localtime()))
输出结果为:
同步前本地时间:(2023, 3, 2, 17, 23, 54, 3, 61)
True
同步后本地时间:(2023, 3, 2, 17, 23, 56, 3, 61)
参考资料
- mPython help documentation, https://mpython.readthedocs.io/en/master/index.html
- MicroPython 文档, http://micropython.86x.net/en/latet/index-2.html
- MicroPython documentation, https://docs.micropython.org/en/latest/index.html