sailsjs&laterjs任务调度,初始化..轮询每x或睡眠x?

我正在构build一个开源的nodejs动力喷水灭火系统,它将运行在树莓派上,并与OpenSprinkler Pi一起工作。

我在用:

  • sailsjs 0.9.3

  • laterjs – 时间表解释和math

    • 我创build了一个问题,回到bunkats回购要求他解释这个给我.. https://github.com/bunkat/later/issues/19

最终结果将是rpi和您决定开发的任何前端之间的REST API接口。 网页/手机/手机等..

调度组件的工作方式是将值发布到具有区域标识,名称,初始状态(false)和纯文本的人类可读日程表语句的URL /programs ,例如: every 12 hours starting on the 6th hour before 10 minutes (06:00和18:00 10分钟)。

这个时间表将被parsing,然后string化并存储在db中,如下所示:

 {\"schedules\":[{\"h\":[6,18],\"m_b\":[10]}],\"exceptions\":[],\"error\":-1} 

其他值将在input时进行清理和存储。

我的问题是:

我应该如何去寻找这些时间表并确定他们的运行时间/date? 我有调度部分,运行时间下降和工作(运行10分钟)。 尽pipe如此,我仍然为了有效地检索时间表而苦苦挣扎。


我最初的想法是有一个间隔每1分钟轮询分贝…

 setInterval(function(){ //get programs from db //iterate through programs //enable programs which start now? }, 60000); 

但是这似乎是不合逻辑的。 我想,当创build时间表时, setIntervalsetTimeout是使用适当的调度信息创build的。但是如果rpi失去能力会发生什么情况,或者那些会占用所有这些时间间隔的内存。

  • 它将如何处理已经在数据库中的现有时间表?

开源的回购

到目前为止(除了创buildapi / models / Programs.js之外没有太多)在这里: https : //github.com/RelativeMedia/nodesprinkler.git