Установка вашей timezone
По умолчанию, используется UTC зона +0:00. Можно поменять, через файл настроек.
nano ~/.node-red/settings.js
В самом начале файла добавить:
process.env.TZ = "Europe/Moscow";
Перезагрузить node-red.
Запуск события по времени
Самый простой вариант - inject нода, опция at a specific time.
Также есть другие опции, interval (каждые X секунд) и interval between times (каждые Х секунд в интервале).
Запуск события на закате/рассвете и другое
Продвинутый вариант предыдущего пункта. Надо установить плагин node-red-contrib-bigtimer
У этой ноды есть время включения и выключения, возможны различные варианты "на рассвете", "астрономическая ночь", "сумерки" и др. Чтобы это правильно работало, надо указать координаты геопозиции.
ON Msg - то, что посылает нода, при срабатывании. OFF Msg - при выключении.
У плагина много настроек, есть гибкое расписание, целых 3 выхода - подробнее читайте в описании ноды.
Проверка по времени
Бывает такая ситуация: сработал датчик движения, который включает свет, но только в определенное время, и надо проверить, сейчас ли это. Для такого сценария подходит плагин node-red-contrib-time-range-switch
Тут тоже можно использовать закат, рассвет и тп.
Работа с функцией
Javascript Date - более подробно смотрим в справочнике функции.
Форматирование даты
Мощный инструмент для вывода даты в любом формате node-red-contrib-moment.
Все форматы можно посмотреть на сайте momentjs.
В описании ноды, есть варианты "человеческих" форматов: timeAgo, fromNow, calendar и др.
Таймеры
Существует стандартная нода trigger. Пример и описание можно посмотреть в статье Node-Red основные блоки и пример их использования в автоматизации. В данной статье, мы рассмотрим более продвинутую и, в тоже время, простую ноду, которую я выбрал для своих флоу.
node-red-contrib-mytimeout - "киллер фичи" этой ноды - таймер с обратным отсчетом, пауза, warning payload.
Управляется максимально просто: принимает команды - on, 1, off, 0, stop, cancel.
Есть возможность поставить таймер на паузу (stop) и потом возобновить отсчет.
Можно посылать "warning payload" при достижении определенной временной отсечки.
var date = new Date(msg.payload);
msg.payload = {
"hour":date.getHours(),
"minutes":date.getMinutes(),
"seconds":date.getSeconds(),
"day":date.getDate(),
"month":date.getMonth(),
"year":date.getYear(),
}
return msg;
Спасибо за обзор. Напрашивается вопрос, как контроллировать временные параметры, может как то можно через dashboard? Есть там подходящие компоненты? Может знает кто?