【问题标题】:Micropython and EPOCHMicropython 和 EPOCH
【发布时间】:2019-07-22 23:09:30
【问题描述】:

我想用 Esp32 在 Graphite 数据库中发送数据,为此我需要时间戳,它必须是 Epoch 格式。

我在互联网上搜索了 2 个小时,但我找不到任何东西。

我试过 machine.rtc, utime, time ...

如果你有一个例子,我就是一个接受者。

谢谢

ntptime.settime()

rtc = machine.RTC()

print("Time:%s" %str(rtc.datetime()))

很抱歉打扰您,但我从 MicroPython 开始

【问题讨论】:

    标签: epoch micropython


    【解决方案1】:

    许多嵌入式端口,包括 MicroPython,使用 2000 年 1 月 1 日的纪元时间。这比 1970 年 1 月 1 日的 UNIX 纪元时间晚了 946,684,800 秒。如果您首先使用 NTP 设置 RTC,您将能够阅读 MicroPython 的以秒为单位的纪元。听起来您在网络上,所以应该很容易做到。假设您已经连接到 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。

    【讨论】:

      【解决方案2】:

      直到现在我对 Graphite 一无所知,但是通过快速的网络搜索找到了Graphite documentation

      timestamp 是自 unix 纪元时间以来的秒数。碳缓存 如果timestamp 设置为-1,将使用到达时间。

      unix epoch time 的网络搜索很快让我找到了a Wikipedia page,它告诉我:

      Unix 时间(也称为 POSIX 时间或 UNIX 纪元时间)是... 自 1 月 1 日星期四 00:00:00 以来经过的秒数 1970 年,协调世界时 (UTC),减去闰秒。

      利用这些知识,您可以根据从 RTC.now() 获得的值计算所需的时间戳 - 或者您可以只使用 -1 的值来为数据加上到达服务器的时间加上时间戳。

      This MicroPython forum thread 有一些如何使用ntptime 的示例(在 ESP32 上是 identicalESP8266 version

      【讨论】:

        猜你喜欢
        • 2023-04-11
        • 2015-11-05
        • 2021-12-07
        • 1970-01-01
        • 1970-01-01
        • 2019-07-11
        • 1970-01-01
        • 2019-04-18
        • 1970-01-01
        相关资源
        最近更新 更多