Таймеры/расписание

Необходимость выполнения каких-либо действий по расписанию или с какой-то задержкой времени исполнения – одна из базовых функций любой системы автоматики. Ниже представлено несколько вариантов, позволяющих реализовать данный функционал.

Расписание работы Простых Устройств (ПУ)

Функционал, который позволяет установить режим работы отдельных устройств по заданному расписанию. Подробнее в разделе Простые Устройства.

Запуск сценариев по расписанию

В настройках сценария есть возможность указать время и дни недели, когда заданный сценарий должен быть запущен автоматически. Подробнее в разделе Сценарии.

Запуск сценариев с привязкой ко свойству времени

В случае, если сценарий привязан к свойству текущего времени, он будет исполнен автоматически при обновлении данного свойства, т.е. выполняться каждую минуту. Подробнее в разделе Сценарии.

Использование объектов класса Timer

В разделе Объекты имеется специальный класс Timer, для каждого из объектов которого автоматически исполняются методы onNewMinute (каждую минуту) и onNewHour (каждый час).

Внутри соответствующего метода можно добавить собственный код, который будет исполнен наряду с другим кодом метода.

Например, при вставке приведённого ниже кода, в 8 утра по будням будет сказана фраза “Доброе утро!” и запущен сценарий myScript:

if (isWeekDay() && timeIs('08:00')) {
 say('Доброе утро!');
 runScript('myScript');
}

Кроме добавления кода в методы уже имеющегося объекта ClockChime, можно создавать собственные дополнительные объекты класса Timer – методы onNewMinute/onNewHour этих объектов будут также выполняться автоматически.

Установка таймеров в коде

Внутренние таймеры предназначены для запланированного запуска каких-либо действий, не прерывая исполнение текущего кода. Для создания отложенного запуска команды применяется функция:

setTimeout('имя_таймера', 'действия', задержка_сек);
// пример (создать timer1, который запустит сценарий myScript через 5 минут):
setTimeout('timer1', 'runScript("myScript");', 5*60);

При повторном создании таймера с именем уже созданного ранее, исполнение первого созданного таймера будет отменено. Кроме того, отменить действие таймера можно с помощью функции:

clearTimeout('имя_таймера');
// пример (отмена таймера timer1):
clearTimeout('timer1');

Ограничение доступа к элементам по времени

Время так же может использовать как элемент ограничения для доступа к различным частям интерфейса системы. Подробнее в разделе Контроль доступа.