Планирование задач sailsjs & Laterjs, инициализация.. опросить каждый x или спать для x?

Я строю спринклерную систему с открытым исходным кодом для nodejs, которая будет работать на Raspberry Pi и работать с OpenSprinkler Pi.

Я использую:

  • sailsjs 0.9.3

  • позже - для интерпретации графика и математики

Конечным результатом будет интерфейс API REST между rpi и любым внешним интерфейсом, для которого вы решите разработать. Интернет / мобильный / Cli.. и т. д.

Компонент планирования будет работать так: значения будут опубликованы в URL /programs с идентификатором зоны, именем, начальным статусом (false) и простой текстовой удобочитаемой расписанием, такой как: every 12 hours starting on the 6th hour before 10 minutes (06:00 и 18:00 в течение 10 минут).

Этот график будет проанализирован, приведен в соответствие и сохранен в БД как таковой:

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

Другие значения очищаются и сохраняются по мере их ввода.

Мой вопрос:

как мне найти эти расписания и определить время их выполнения / дату? У меня есть часть планирования, и время запуска и работает (запустить в течение 10 минут). Я борюсь с теорией эффективного извлечения графиков, хотя.


Моя первоначальная мысль состояла в том, чтобы каждые 1 минуту опрашивать дб...

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

Но это кажется нелогичным. Я полагаю, что при создании графика setInterval или же setTimeout создается с соответствующей информацией о расписании... но что произойдет, если RPI теряет мощность, или они могут съесть немного памяти, если все эти интервалы будут зависать там...

  • как он будет обрабатывать существующие графики уже в БД?

репо с открытым исходным кодом

то, что у меня есть (не так много, кроме создания api / models / Programs.js), находится здесь: https://github.com/RelativeMedia/nodesprinkler.git

0 ответов

Другие вопросы по тегам