Сценарии - новая версия API
-
Коллеги! Пытаюсь решить простую задачу. Из сценария делаю heater.setAuto('false'), однако режим авто у актюатора таким образом не выключается:
При этом если выключить АВТО вручную из меню актюатора, а потом включить с помощью сценария heater.setAuto('true'), то он включается. Прошу проверить возможность выключения АВТО из сценариев и подправить документацию в этом месте - https://ih-systems.com/ru/command_list/#1.3.3
-
Коллеги! Пытаюсь решить простую задачу. Из сценария делаю heater.setAuto('false'), однако режим авто у актюатора таким образом не выключается:
SetAutoFalse.jpg
При этом если выключить АВТО вручную из меню актюатора, а потом включить с помощью сценария heater.setAuto('true'), то он включается. Прошу проверить возможность выключения АВТО из сценариев и подправить документацию в этом месте - https://ih-systems.com/ru/command_list/#1.3.3
Проверим, но в данном случае причина в том, что для true/false кавычки не нужны.
В JS определены примитивные значения true и false:
heater.setAuto(true)/ heater.setAuto(false) , в принципе можно и так: heater.setAuto(1)/heater.setAuto(0)
Если же брать в кавычки - получается непустая строка, и значение 'false' вычисляется как true
-
Коллеги! Пытаюсь решить простую задачу. Из сценария делаю heater.setAuto('false'), однако режим авто у актюатора таким образом не выключается:
SetAutoFalse.jpg
При этом если выключить АВТО вручную из меню актюатора, а потом включить с помощью сценария heater.setAuto('true'), то он включается. Прошу проверить возможность выключения АВТО из сценариев и подправить документацию в этом месте - https://ih-systems.com/ru/command_list/#1.3.3
Проверим, но в данном случае причина в том, что для true/false кавычки не нужны.
В JS определены примитивные значения true и false:
heater.setAuto(true)/ heater.setAuto(false) , в принципе можно и так: heater.setAuto(1)/heater.setAuto(0)
Если же брать в кавычки - получается непустая строка, и значение 'false' вычисляется как true
Да, вы правы! Но с False/True нормально не работает - при пробном запуске говорит что-то типа "True is not defined"
-
Да, вы правы! Но с False/True нормально не работает - при пробном запуске говорит что-то типа "True is not defined"
Действительно, ошибочка у нас в документации
-
zigbee кнопка,обнаружилась проблема : переключатель выдает токой JSON value = ' {"battery":100,"voltage":3035,"linkquality":65,"click":"single"}'
меня интересует больше всего значение click, ставлю формулу расчета : JSON.parse(value).click и получаю значение single, дальше под это пишу скрипт и всё фурычит.
Но есть проблема : раз в час устройстро когда его не трогают выдает JSON : {"battery":100,"voltage":3035,"linkquality":65}, без параметра click (это ответ на нажатие кнопки ), и моя формула выдает неопределенность undefined и всё подвисает.
Как сделать чтобы если click нету , то пусть его значение будет none, но у нас формула в одной строке… Что то типа !data.click ? 'none' : data.click должно быть , но не работает .
-
zigbee кнопка,обнаружилась проблема : переключатель выдает токой JSON value = ' {"battery":100,"voltage":3035,"linkquality":65,"click":"single"}'
меня интересует больше всего значение click, ставлю формулу расчета : JSON.parse(value).click и получаю значение single, дальше под это пишу скрипт и всё фурычит.
Но есть проблема : раз в час устройстро когда его не трогают выдает JSON : {"battery":100,"voltage":3035,"linkquality":65}, без параметра click (это ответ на нажатие кнопки ), и моя формула выдает неопределенность undefined и всё подвисает.
Как сделать чтобы если click нету , то пусть его значение будет none, но у нас формула в одной строке… Что то типа !data.click ? 'none' : data.click должно быть , но не работает .
Добрый день!
Вы можете использовать тернарный оператор в формуле расчета, например, так:
(value && value.indexOf("click")>0) ? JSON.parse(value).click : 'none'
-
Спасибо, получилось.
-
Коллеги! Есть какая-то бага в pm - если переходишь в раздел "Сценарии" -> "Рабочие сценарии", выбираешь нужный и пытаешься открыть нижнее окно отладчика, то ничего не происходит! Более того, больше ничего не работает (нельзя перейти в "Сценарии", например) в этой вкладке. Решается переходом в другие разделы и возвратом в "Сценарии"…нижнее окно в "Рабочие сценарии" можно открыть только путем танцем с бубном (после перехода в раздел "Сценарии" зайти в "Сценарии", открыть нижнее окно и потом перейти в "Рабочие сценарии").
-
Коллеги! Есть какая-то бага в pm - если переходишь в раздел "Сценарии" -> "Рабочие сценарии", выбираешь нужный и пытаешься открыть нижнее окно отладчика, то ничего не происходит! Более того, больше ничего не работает (нельзя перейти в "Сценарии", например) в этой вкладке. Решается переходом в другие разделы и возвратом в "Сценарии"…нижнее окно в "Рабочие сценарии" можно открыть только путем танцем с бубном (после перехода в раздел "Сценарии" зайти в "Сценарии", открыть нижнее окно и потом перейти в "Рабочие сценарии").
Да, действительно, баг там есть Просто пока руки не дошли
-
Не все из блоков в сценарий попадает.
Сделал простой сценарий для изменения сдвига температуры отключения радиаторов в зависимости от температуры на улице (если на улице ниже -10, радиаторы греют до достижения нужной Т в комнате, т.е. сдвиг 0, если от -10 до +10, до сдвиг 2, т.е. радиаторы выключаются на 2 градуса раньше, остальное теплый пол догревает, если Т выше +10, сдвиг 5, т.е. в последних двух случаях радиаторы подключатся при переключении режимов, когда комнату нагреть нужно до комфортной Т, или при агрессивном проветривании :lol: ).
Сценарий должен срабатывать по изменению показаний датчика температуры улицы,
и в зависимости от температурного диапазона присваивать смещениям одно из 3-х фиксированных значений.
Перед присвоением проверяю текущее значение, присвоение должно происходить если текущее не равно нужному (не равно это "!=" ???).
Все хорошо, но проверка текущего значения смещения в скрипт не попадает.
Скрипт по этой схеме прописывается такой
/** * @name SdvigRO * @desc * @version 4 */ const ACTORA1 = Device("ACTORA1"); const ACTORA76 = Device("ACTORA76"); const ACTORA77 = Device("ACTORA77"); startOnChange([ACTORA1]); script({ start() { if (10 <= ACTORA1.value) { } this.sub1(); this.sub2(); if ((ACTORA1.value > -10) && (ACTORA1.value < 10)) { } this.sub3(); this.sub4(); if (-10 >= ACTORA1.value) { } this.sub5(); this.sub6(); }, sub1() { if (10 <= ACTORA1.value) { ACTORA76.setParam("value",5); } }, sub2() { if (10 <= ACTORA1.value) { ACTORA77.setParam("value",5); } }, sub3() { if ((ACTORA1.value > -10) && (ACTORA1.value < 10)) { ACTORA76.setParam("value",2); } }, sub4() { if ((ACTORA1.value > -10) && (ACTORA1.value < 10)) { ACTORA77.setParam("value",2); } }, sub5() { if (-10 >= ACTORA1.value) { ACTORA76.setParam("value",0); } }, sub6() { if (-10 >= ACTORA1.value) { ACTORA77.setParam("value",0); } } })
-
И расписание утром не сработало.
Вечером скрипты запустились.
Утром - или не запустились, или не отобразилось, что были запущены.
Скрипты одинаковые, в вечернем значение увеличивается на 1, в утреннем уменьшается на 1.
/** * @name Уменьшить.Т.Днем * @desc * @version 4 */ const ActRz = Device("ActorA", "Режим отопления"); const ActComf = Device("ActorA", "Уставка Комфорт"); script({ start() { if (ActRz.value === 0) { let newvalue = ActComf.value-1; ActComf.setValue(newvalue); return; } } });
-
И расписание утром не сработало.
Вечером скрипты запустились.
Утром - или не запустились, или не отобразилось, что были запущены.
Скрипты одинаковые, в вечернем значение увеличивается на 1, в утреннем уменьшается на 1.
> /** > * @name Уменьшить.Т.Днем > * @desc > * @version 4 > */ > > const ActRz = Device("ActorA", "Режим отопления"); > const ActComf = Device("ActorA", "Уставка Комфорт"); > > script({ > start() { > if (ActRz.value === 0) { > let newvalue = ActComf.value-1; > ActComf.setValue(newvalue); > return; > } > } > }); >
В 12 часов посмотрел, скрипты значатся выполненными в 8:00. Они выполнились позже, или выполнились вовремя, а информация о выполнении отобразилась позже?
-
Все хорошо, но проверка текущего значения смещения в скрипт не попадает.
Проверим, спасибо за баг-репорт
-
И расписание утром не сработало.
…
В 12 часов посмотрел, скрипты значатся выполненными в 8:00. Они выполнились позже, или выполнились вовремя, а информация о выполнении отобразилась позже?
Если бы выполнились позже, то и время выполнения было бы позже. Время фиксируется в момент запуска сценария
Экраны в PM динамически не обновляются. Может причина в том, что вкладка была открыта до 8:00 ?
-
И расписание утром не сработало.
…
В 12 часов посмотрел, скрипты значатся выполненными в 8:00. Они выполнились позже, или выполнились вовремя, а информация о выполнении отобразилась позже?
Если бы выполнились позже, то и время выполнения было бы позже. Время фиксируется в момент запуска сценария
Экраны в PM динамически не обновляются. Может причина в том, что вкладка была открыта до 8:00 ?
Там есть кнопка "обновить", я ее нажимал.
Может опять шутки с временным поясом.
Добавил в скрипты уведомление на почту.
Посмотрю, во сколько будут отправлены письма.
-
Все хорошо, но проверка текущего значения смещения в скрипт не попадает.
Проверим, спасибо за баг-репорт
Поменял блок схему на такую
Все в скрипте прописалось
/** * @name SdvigRO * @desc * @version 4 */ const ACTORA1 = Device("ACTORA1"); const ACTORA76 = Device("ACTORA76"); const ACTORA77 = Device("ACTORA77"); startOnChange([ACTORA1]); script({ start() { if (10 <= ACTORA1.value) { } this.sub1(); this.sub2(); if ((ACTORA1.value > -10) && (ACTORA1.value < 10)) { } this.sub3(); this.sub4(); if (-10 >= ACTORA1.value) { } this.sub5(); this.sub6(); }, sub1() { if (10 <= ACTORA1.value || 5) { ACTORA76.setParam("value",5); } }, sub2() { if (10 <= ACTORA1.value || 5) { ACTORA77.setParam("value",5); } }, sub3() { if ((ACTORA1.value > -10) && (ACTORA1.value < 10) || 2) { ACTORA76.setParam("value",2); } }, sub4() { if ((ACTORA1.value > -10) && (ACTORA1.value < 10) || 2) { ACTORA77.setParam("value",2); } }, sub5() { if (-10 >= ACTORA1.value || 0) { ACTORA76.setParam("value",0); } }, sub6() { if (-10 >= ACTORA1.value || 0) { ACTORA77.setParam("value",0); } } })
-
Все хорошо, но проверка текущего значения смещения в скрипт не попадает.
Проверим, спасибо за баг-репорт
Попробовал заменить функцию "И" на "Если А=В" (она сравнивает результат двух других "если").
Просто ошибка в скрипте в результате.
-
Может опять шутки с временным поясом.
Добавил в скрипты уведомление на почту.
Посмотрю, во сколько будут отправлены письма.
Письмо отправляется в 11-00.
Это установка часового пояса на сервере.
Виджет "часы" с сервера время берет, или с компьютера, на котором отображается?
-
Может опять шутки с временным поясом.
Добавил в скрипты уведомление на почту.
Посмотрю, во сколько будут отправлены письма.
Письмо отправляется в 11-00.
Это установка часового пояса на сервере.
Виджет "часы" с сервера время берет, или с компьютера, на котором отображается?
Виджет "часы" время берет с компьютера
-
Может опять шутки с временным поясом.
Добавил в скрипты уведомление на почту.
Посмотрю, во сколько будут отправлены письма.
Письмо отправляется в 11-00.
Это установка часового пояса на сервере.
Виджет "часы" с сервера время берет, или с компьютера, на котором отображается?
Я в тупике.
Часовой пояс на сервере сменил - все равно скрипт выполнятся по UTC, а не по Москве.
РАсписание запуска пересоздал. Результат тот же - запускаются по UTC.
могу, конечно, просто сместить настройку на 3 часа.