【问题标题】:ESP8266 Micropython schedulerESP8266 Micropython 调度器
【发布时间】:2018-04-15 21:39:56
【问题描述】:

我正在寻找一种简单的方法来安排每天重启我的 ESP8266,目前在 Micropython 上运行。 我做了相当多的研究,但没有找到任何我可以使用/理解的东西。 我想知道这是否需要通过 Micropython 或其他系统语言来完成。 在最坏的情况下,我将创建一个无限循环来检查一天中的时间,但这似乎非常极端,并不是对 RAM 的最佳使用。 重新启动背后的原因是控制器将长时间无人看管,我需要每天重置它以防它崩溃,所以我不会超过 24 小时没有它当前提供的数据。

我看过uasyncio但不明白。

【问题讨论】:

    标签: scheduler esp8266 micropython


    【解决方案1】:

    根据the docs,可以使用看门狗定时器machine.WDT。但是this forum discussion 表明当前的 ESP8266 Micropython 实际上并没有按照文档所说的那样做:

    好的,所以看门狗似乎没有完全实现 esp8266,因为它在内部使用。

    看来你所能做的就是通过禁用中断来触发它, 不知道这会有多大用处。

    通常,您将使用您选择的超时配置看门狗,然后确保您的代码以比超时设置更短的间隔调用其feed 方法。如果您的代码已崩溃并且超时到期,则看门狗会重置系统。这听起来好像目前还没有在 ESP8266 版本上完全实现。

    您可以在Micropython forum 上找到更多信息和解决方法,如果没有,您可能会在那里得到更好的回答。

    【讨论】:

      【解决方案2】:

      首先,您应该决定使用哪个计时器,以下是缺点;
      循环 - timelib 中的“睡眠”停止执行当前线程
      毫秒 - timelib 中的 "time" 或 "ticks_ms" 很好,但你必须知道如何克服毫秒周期

      #as micropython lib
      import utime as time
      
      secs = time.time()
      print (secs) #sec
      
      millis = time.ticks_ms()
      print (millis) #ms
      

      rtc - 需要 rtc 模块
      web - 需要通过 wifi 的 php 计时器
      系统 - 需要私人 wifi,外部补偿必须始终开启
      gps - 需要 gps 模块和信号

      其次,选择一个定时器,指定一定的时间就挂断重启,然后安排复位:

      #either hard reset, like power off-on
      import machine
      machine.reset()
      
      #or soft reset
      import sys
      sys.exit()
      

      第三,最后设置时间偏移以在当前操作之外开始下一次重新启动, 否则将重复重新启动,直到您指定的时区通过。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-17
        • 2021-11-23
        • 2019-04-27
        • 2022-11-10
        • 2017-05-23
        • 1970-01-01
        • 1970-01-01
        • 2020-10-24
        相关资源
        最近更新 更多