Статья

Работа с датой и временем в node-red

Установка вашей 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" при достижении определенной временной отсечки.


Кажется, не обязательно редактировать ~/.node-red/settings.js Если на малине настроена Timezone (через sudo raspi-config), то всё и так корректно работает.

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? Есть там подходящие компоненты? Может знает кто?


Вернуться назад
Вернуться назад