Дни рождения, праздники и другие тематические календари
-
Данный сниппет позволяет присвоить к устройству необходимое значение из списка исходя из текущей даты сервера.
Заполняем список, переменнуюdays
по аналогии и пользуемсяmodule.exports = callback => { const days = { '06.04': 'Василиса', '31.05': 'Глеб', '24.12': 'Святослав', // 24 - день, 12 - месяц Декабрь '23.02': 'День защитника Отечества!', '08.03': 'Международный женский день!', '31.12': 'Новый год!', } const dt = new Date(); const currentDay = String(dt.getDate()).padStart(2,'0')+'.'+String(dt.getMonth()+1).padStart(2,'0'); if (days[curentDay]) { callback(null, days[curentDay]); } else { callback(null, ''); } };
-
@dev, прошу помощи. Не работает сниппет. Значение устройства получалось все время 0. Вывел значение переменной curentDay, а оно в виде 2020-04-08, соответсвенно в русскую локаль не переводится. Проверил на сервере. Стояла только локаль en-GB.UTF-8. Поставил en-US.UTF-8 и ru-RU.UTF-8, ru по умолчанию, пергрузил сервер. А значение curentDay опять 2020-04-08. Что можно сделать, чтобы заработал скрипт сниппета?
-
@dev, несколько вопросов. Сниппет должен быть применен к аналоговому датчику/актюатору? Можно как-то из вкладки "Параметры" устройства задавать дату? Интересует применение сниппета к задаче промывки/замены фильтра в системе водоснабжения.
Хотелось бы:- На мнемосхеме на значке (устройстве) фильтра увидеть сообщение красным цветом "Необходимо заменить" в заданную дату.
- Получить Push-сообщение или email/telegram.
-
@int144 Метод toLocaleDateString использует функционал операционной системы для форматирования текстового представления даты. Если не работает, можно напрямую форматировать дату в вид dd.mm :
module.exports = callback => { const days = { '12.04': 'С днем космонавтики!', '31.12': 'Новый год!' } const dt = new Date(); const currentDay = String(dt.getDate()).padStart(2,'0')+'.'+String(dt.getMonth()+1).padStart(2,'0'); if (days[currentDay]) { callback(null, days[currentDay]); } else { callback(null, ''); } };
-
@intrapro спасибо за ответ. А я сделал примерно тоже, только на уровне чайника
const date = new Date();
const dt = date.getDate();
if (dt < 10) day = '0' + dt;
else day = dt;
const mn = date.getMonth() + 1;
if (mn < 10) month = '0' + mn;
else month = mn;
const curentDay = day + '.' + month;
-
@int144 Вполне себе рабочий вариант
-
Обновлено исправление в топике, всем спасибо
-
Пользователь @Alex_Jet написал в Дни рождения, праздники и другие тематические календари:
аналоговому датчику
Все верно
Можно как-то из вкладки "Параметры" устройства задавать дату?
такой возможности нет, если только отдельный сниппет на каждое устройство