Планирование задач sailsjs & Laterjs, инициализация.. опросить каждый x или спать для x?
Я строю спринклерную систему с открытым исходным кодом для nodejs, которая будет работать на Raspberry Pi и работать с OpenSprinkler Pi.
Я использую:
sailsjs 0.9.3
позже - для интерпретации графика и математики
- Я недавно создал проблему в репозитории Bunkats с просьбой объяснить мне это. https://github.com/bunkat/later/issues/19
Конечным результатом будет интерфейс 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