Сценарии - новая версия API
-
добрый день, продскажите как одним нажатием кнопки выключить весь свет в особняке?
Можно сделать сценарий и привязать его к кнопке
-
@intrahouse:
добрый день, продскажите как одним нажатием кнопки выключить весь свет в особняке?
Можно сделать сценарий и привязать его к кнопке
можете показать как ето сделеть?
-
например так
В скриптах создаем новую блоксхему. Называем, сохраняем, открываем нижнее меню
В нем жмем добавить (1), переходим в закладку "команды" (2), выбираем "команда группы устройств" (3) и размещаем ее в поле скрипта (4), сохраняем.
Потом открываем свойства этого объекта
и выбираем
"команда" (1) - OFF (если нужно все выключить).
"подсистема" (2) - Свет (это у меня так названо. Выбирайте у себя подсистему, в которой находятся все светильники. Чтобы работало, нужно все устройства распределить по подсистемам, уровням и зонам.)
"уровни" (3) и "зоны" (4) - отмечаем все уровни и зоны, в который должны выключиться светильники. Чтобы работало, нужно все устройства распределить по подсистемам, уровням и зонам.
"тип устройства" (5) - отмечаем "светильник". У меня все светильники сделаны этим типом устройства. Если у вас другим - выбирайте другой тип.
После этого в виджете размещаете "кнопку", и ей в свойствах прописываете выполнение созданного скрипта.
-
Подскажите, как работать со временем и датой в сценариях. Необходимо, чтобы сценарий отрабатывал в определенные промежутки времени.
-
@gis:
Подскажите, как работать со временем и датой в сценариях. Необходимо, чтобы сценарий отрабатывал в определенные промежутки времени.
new Date() возвращает стандартный объект JavaScript - дата и время СЕЙЧАС
const dt = new Date(); // // Например, c 22:00 - 7:00 ночной тариф if (dt.getHours() < 7 || dt.getHours()>22) { .... // Если суббота if (dt.getDay() == 6) { ... //1-пн 6-суббота 0-воскресенье!! // С мая по октябрь if (dt.getMonth() >= 4 && dt.getMonth() <= 9) { ... //0-январь, 11-декабрь
Полное описание всех методов Date: https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Date
Еще примеры были в этой ветке: https://frm.intrahouse.ru/viewtopic.php?f=18&t=5339&start=80
-
@gis:
Подскажите, как работать со временем и датой в сценариях. Необходимо, чтобы сценарий отрабатывал в определенные промежутки времени.
Можно так: задать константами временной интервал и сравнивать с текущем временем.
В примере вентилятор VENT1 включается по датчику влажности только в промежутке с 7-00 до 23-00. Ночью не включается, слишком шумный
-
Коллеги, уже обращался с этой проблемой… с 13.02 у меня по утрам сценарий стал срабатывать 2 раза, из-за этого нарушается логика работы отопления в доме. Срабатывать стал именно по утрам (восход солнца - 2 часа), вечером (закат + 0 часов) срабатывает однократно. Скрипт сценария простой:
script({ start() { //Перебор значений переключателя отопления switch(mode.value) { case 0: this.log("Режим отопления - " +mode.stateName); break; case 1: mode.setValue(2); break; case 2: mode.setValue(1); break; } } });
Три дня подряд срабатывает утром по 2 раза:
PS: не разбирались в чем проблема такой работы - п.3 этого поста?
-
аналогичная проблема.
ПРостой блок на информирование по почте. ПРи включении или выключении актуатора сообщает о событии по почте с указанием времени срабатывания.
В случае с аналоговым актуатором, который переключаетсясторонним контроллером, сообщения в почту приходят 1 раз.
В случае с дискретным актуатором, который переключается нажатием на актуатор в интерфейсе - сообщения приходят по 2 раза.
ПРи этом время в информировании указывается по гринвичу.
Хотя в базу и графики событие попадает с московским временем.
-
аналогичная проблема.
ПРостой блок на информирование по почте. ПРи включении или выключении актуатора сообщает о событии по почте с указанием времени срабатывания.
В случае с аналоговым актуатором, который переключаетсясторонним контроллером, сообщения в почту приходят 1 раз.
В случае с дискретным актуатором, который переключается нажатием на актуатор в интерфейсе - сообщения приходят по 2 раза.
ПРи этом время в информировании указывается по гринвичу.
Хотя в базу и графики событие попадает с московским временем.
Так понимаю, два вопроса
1. Время выводится по Гринвичу (UTC)
2. Сценарий срабатывает дважды
По времени - timeZone выставляется глобально для ОС.
В документации на dateObj.toLocaleString https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString "Значением по умолчанию является часовой пояс по умолчанию среды выполнения"
Вероятно, timeZone на сервере не установлена.
попробуйте new Date().toString(), timeZone будет выведена явно:
'Fri Feb 15 2019 10:14:06 GMT+0300 (MSK)'
В базу пишутся таймштампы в UTC, при запросе браузер берет время с клиентской машины и преобразует в UTC, поэтому все работает. Можно посмотреть время в любом журнале или отладчике - эти времена формируются сервером.
По сценарию - на дискретном актуаторе активизировано свойство АВТО?
-
Коллеги, уже обращался с этой проблемой… с 13.02 у меня по утрам сценарий стал срабатывать 2 раза, из-за этого нарушается логика работы отопления в доме. Срабатывать стал именно по утрам (восход солнца - 2 часа), вечером (закат + 0 часов) срабатывает однократно. Скрипт сценария простой:
Три дня подряд срабатывает утром по 2 раза:
PS: не разбирались в чем проблема такой работы - п.3 этого поста?
Пока не смогли воспроизвести
У Вас тоже не всегда происходит? Попробуйте сервер перезагрузить. Будем разбираться
-
аналогичная проблема.
ПРостой блок на информирование по почте. ПРи включении или выключении актуатора сообщает о событии по почте с указанием времени срабатывания.
В случае с аналоговым актуатором, который переключаетсясторонним контроллером, сообщения в почту приходят 1 раз.
В случае с дискретным актуатором, который переключается нажатием на актуатор в интерфейсе - сообщения приходят по 2 раза.
ПРи этом время в информировании указывается по гринвичу.
Хотя в базу и графики событие попадает с московским временем.
Так понимаю, два вопроса
1. Время выводится по Гринвичу (UTC)
2. Сценарий срабатывает дважды
По времени - timeZone выставляется глобально для ОС.
В документации на dateObj.toLocaleString https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString "Значением по умолчанию является часовой пояс по умолчанию среды выполнения"
Вероятно, timeZone на сервере не установлена.
попробуйте new Date().toString(), timeZone будет выведена явно:
'Fri Feb 15 2019 10:14:06 GMT+0300 (MSK)'
В базу пишутся таймштампы в UTC, при запросе браузер берет время с клиентской машины и преобразует в UTC, поэтому все работает. Можно посмотреть время в любом журнале или отладчике - эти времена формируются сервером.
По сценарию - на дискретном актуаторе активизировано свойство АВТО?
Установлено.
Первым делом проверял.
Вот проверка
а вот почта после проверки
-
попробуйте new Date().toString(), timeZone будет выведена явно:
'Fri Feb 15 2019 10:14:06 GMT+0300 (MSK)'
По сценарию - на дискретном актуаторе активизировано свойство АВТО?
Присылает время в UTC
Зона на сервере установлена.
Автоматический режим выключен. У обоих акуаторов.
-
Коллеги, уже обращался с этой проблемой… с 13.02 у меня по утрам сценарий стал срабатывать 2 раза, из-за этого нарушается логика работы отопления в доме. Срабатывать стал именно по утрам (восход солнца - 2 часа), вечером (закат + 0 часов) срабатывает однократно. Скрипт сценария простой:
Три дня подряд срабатывает утром по 2 раза:
PS: не разбирались в чем проблема такой работы - п.3 этого поста?
Пока не смогли воспроизвести
У Вас тоже не всегда происходит? Попробуйте сервер перезагрузить. Будем разбираться
Да, Вы правы - не всегда. Позавчера под утро замерзли, поэтому сегодня решил журнал полистать. Думал, что в 4.4.17 - 4.4.18 что-нибудь исправили…
-
попробуйте new Date().toString(), timeZone будет выведена явно:
'Fri Feb 15 2019 10:14:06 GMT+0300 (MSK)'
По сценарию - на дискретном актуаторе активизировано свойство АВТО?
Присылает время в UTC
Зона на сервере установлена.
Автоматический режим выключен. У обоих акуаторов.
Для контроля перезагрузил сервер - стала приходить почта с московским временем.
-
Пока не смогли воспроизвести
У Вас тоже не всегда происходит? Попробуйте сервер перезагрузить. Будем разбираться
Да, Вы правы - не всегда. Позавчера под утро замерзли, поэтому сегодня решил журнал полистать. Думал, что в 4.4.17 - 4.4.18 что-нибудь исправили…
Сценарий все так же срабатывает по утрам два раза. Сегодня перезагрузил iH, понаблюдаю как себя будет вести дальше.
-
Коллеги, подскажите - когда в Расписании можно будет сценариям передавать дополнительный параметр? Для кнопок такой функционал доступен (у меня используются кнопки переключения режимов работы отопления из оперативного меню), а для расписания нет…приходится писать "костыльные" скрипты:
const mode = Device("SWITCH_HEATING"); script({ start(param) { //Передача входного параметра переключателю отопления if(param !== undefined) { mode.setValue(param); } else { switch(mode.value) { case 0: this.log("Режим отопления - " +mode.stateName); break; case 1: mode.setValue(2); break; case 2: mode.setValue(1); break; } } } });
-
Какую функцию использовать в сценариях, чтобы уменьшить количество знаков после запятой? В настройках устройства стоит 2 цифры после запятой, но выводится на другое устройство (не мнемосхему) 10 цифр после запятой. Как их обрезать до 2-x?
-
@gis:
Какую функцию использовать в сценариях, чтобы уменьшить количество знаков после запятой? В настройках устройства стоит 2 цифры после запятой, но выводится на другое устройство (не мнемосхему) 10 цифр после запятой. Как их обрезать до 2-x?
Если значение с одного устройства присваивается другому устройству - нужно обоим поставить ограничения 2 знака после запятой.
-
@gis:
Какую функцию использовать в сценариях, чтобы уменьшить количество знаков после запятой? В настройках устройства стоит 2 цифры после запятой, но выводится на другое устройство (не мнемосхему) 10 цифр после запятой. Как их обрезать до 2-x?
Я использую Math.ceil(METER1.value) для округления до целых и METER1_v.toFixed(2) для округления до нужного количества знаков после запятой. Тоже не понимаю откуда берется 10 цифр после запятой на счетчике, который каждый импульс добавляет 0,01. Приходится заниматься округлением практически в каждом скрипте.
-
@gis:
Какую функцию использовать в сценариях, чтобы уменьшить количество знаков после запятой? В настройках устройства стоит 2 цифры после запятой, но выводится на другое устройство (не мнемосхему) 10 цифр после запятой. Как их обрезать до 2-x?
Если значение с одного устройства присваивается другому устройству - нужно обоим поставить ограничения 2 знака после запятой.
Неправильно выразился - в данном случае устройство физическое (экран TFT на который выводятся данные). При выводе надо уменьшить количество знаков после запятой для показаний датчика. Какие функции лучше для этого можно использовать в сценариях? Просьба привести примеры.
homa спасибо, попробую использовать эти функции, использовал стандартные для js , но они не работают.