epoch - Micropython 和 EPOCH
问题描述
我想用 Esp32 在 Graphite 数据库中发送数据,为此我需要时间戳,它必须是 Epoch 格式。
我在互联网上搜索了 2 个小时,但我找不到任何东西。
我试过 machine.rtc, utime, time ...
如果你有一个例子,我是一个接受者。
谢谢
ntptime.settime()
rtc = machine.RTC()
print("Time:%s" %str(rtc.datetime()))
很抱歉打扰你,但我从 MicroPython 开始
解决方案
许多嵌入式端口,包括 MicroPython,使用 2000 年 1 月 1 日的 Epoch 时间。这比 1970 年 1 月 1 日的 UNIX Epoch 时间晚了 946,684,800 秒。如果您首先使用 NTP 设置 RTC,您将能够在几秒钟内读取 MicroPython 的 Epoch . 听起来您在网络上,所以应该很容易做到。假设您已经连接到 WiFi,以下是设置 RTC 时间的方法:
import ntptime
# General call to set RTC shown
# Note that when setting datetime, Weekday is ignored. MicroPython uses its internal calendar.
# machine.RTC().datetime((yyyy, mm, dd, Weekday, hh, mm, ss, us))
# RTC code follows.
ntptime.settime() # This library call sets RTC to ntp time.
machine.RTC().datetime() # Read the hardware RTC in datetime format.
在你给你的 ESP32 GMT NTP 时间后,你可以从 MycroPython Epoch 读取秒数:
import utime
utime.time()
我的结果是这个数字,634791870。它是整数秒。使用 MicroPython,此调用的精度不会超过秒。(您可以使用 datetime() 获得微秒,但这是日期时间而不是时间戳格式。)
接下来你必须做一些算术:
timestamp = 946684800 + utime.time()
这会为您提供 Unix 纪元的 UTC 时间戳(以整数秒为单位)。(MicroPython 忽略时区。)要调整本地时间,您需要从经度 0 度向东每小时添加 3600,然后向西减去。
如果您的应用程序需要浮点格式,您只需添加一个 0.0.0.0 即可。
推荐阅读
- r - R中的distm导致崩溃
- r - 如何在ggplot2 R中为每个级别的facet_wrap拟合自定义曲线?
- objective-c - 如何为系统扩展设置环境变量
- quarkus - Quarkus Kafka:如果我们无法连接到 Kafka Broker,如何配置重试次数?
- ios - 如何从 Xcode Project Navigator 中隐藏 Swift 包依赖项?
- apache-kafka - Kafka中存储的消费者偏移量在哪里
- python-3.x - django urls 异常 NoReverseMatch
- android - Android 在通话过程中使用内置麦克风和蓝牙耳机作为具有高质量媒体协议的扬声器
- html - 转到上一页并激活切换
- c++ - 通用类标准时间独立模板秒表