ESP8266 Micropython调度程序

问题描述 投票:0回答:2

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

我看过uasyncio但不明白。

scheduler esp8266 micropython
2个回答
0
投票

根据the docs,你可以使用看门狗定时器machine.WDT。然而,this forum discussion表示目前的ESP8266 Micropython实际上没有做文档所说的:

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

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

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

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


0
投票

首先,你应该决定使用哪个计时器,以下是缺点; 循环 - 来自timelib的“sleep”停止执行当前线程 毫秒 - 来自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 modul需要 网络 - 通过wifi必备的PHP计时器 系统 - 必要的私人无线网络,外部补偿必须始终 gps - gps modul和所需的信号

其次,选择一个计时器,然后通过指定一定时间挂断重启,然后安排重置:

#either hard reset, like power off-on
import machine
machine.reset()

#or soft reset
import sys
sys.exit()

第三,最后设置时移以开始下一次重启超出当前动作,否则重复重复应该重复,直到你指定的时区通过。

© www.soinside.com 2019 - 2024. All rights reserved.