Сценарии - новая версия API



  • @Erik:

    Где выполняться будет?

    На сервере.



  • @intrahouse:

    @MAMOHT:

    Все отрабатывает как нужно, но но сообщения в бот валятся при каждом опросе датчика DHT22_t.

    @Erik:

    перед "Action" нужна проверка состояния.

    Если и так все как надо присвоено - ничего не делать.

    Если нет - тогда присвоить и отправить в телеграмм.

    Все верно.

    Надо добавить условие AND:

    Спасибо за подробный ответ!



  • @intrapro:

    Можно, конечно

    Нужно установить слушателя событий this.addListener(device, 'funname')

    Если я устанавливаю слушателя, то сценарий по сути всегда остается в работе?

    У меня происходит так - после редактирования вызываю сценарий и первый раз все ОК. А следующий раз может вызваться, а может нет.

    Так понимаю, что надо где-то сделать принудительный выход? Или после того как устройство переключилось удалить слушателя?

    Как правильно сделать?



  • @Alex_Jet:

    @intrapro:

    Можно, конечно

    Нужно установить слушателя событий this.addListener(device, 'funname')

    Если я устанавливаю слушателя, то сценарий по сути всегда остается в работе?

    У меня происходит так - после редактирования вызываю сценарий и первый раз все ОК. А следующий раз может вызваться, а может нет.

    Так понимаю, что надо где-то сделать принудительный выход? Или после того как устройство переключилось удалить слушателя?

    Как правильно сделать?

    Да, нужно выполнить выход this.exit();

    При завершении сценария все его слушатели и таймеры удаляются



  • Спасибо за полезное обновление! Подскажите как из сценария узнать данные "столбцы Значение и Время в таблице устройств для просмотра текущего значения устройства"?



  • @Alex_Jet:

    Спасибо за полезное обновление! Подскажите как из сценария узнать данные "столбцы Значение и Время в таблице устройств для просмотра текущего значения устройства"?

    Там выводятся value и lastts



  • @intrapro:

    Там выводятся value и lastts

    Жаль. Я думал, что реализовали то что обсуждалось здесь: https://frm.intrahouse.ru/viewtopic.php?f=18&t=5446&start=120#p8867

    Запрос из сценария значений в БД есть в планах реализации? Напомню - речь о формировании сводки (газ/электроэнергия/вода за месяц), которая будет высылаться по е-майл/Телеграм. Или можно как-то по другому сейчас реализовать?

    Еще вопрос - как из сценария вызвать другой сценарий? Например, сценарием обрабатываем голосовые команды и по команде "включи свет" нужно в нескольких помещниях включить свет. Или команда "вечерний свет" - выключаем все и включаем нужное.



  • @Alex_Jet:

    @intrapro:

    Там выводятся value и lastts

    Жаль. Я думал, что реализовали то что обсуждалось здесь: https://frm.intrahouse.ru/viewtopic.php?f=18&t=5446&start=120#p8867

    Запрос из сценария значений в БД есть в планах реализации? Напомню - речь о формировании сводки (газ/электроэнергия/вода за месяц), которая будет высылаться по е-майл/Телеграм. Или можно как-то по другому сейчас реализовать?

    реализовали выполнение (запуск) программы на сервере.

    Можно на сервере сделать скрипт с формированием выписки из базы и отправкой его по почте, а из IH его запускать.



  • @Erik:

    реализовали выполнение (запуск) программы на сервере.

    Можно на сервере сделать скрипт с формированием выписки из базы и отправкой его по почте, а из IH его запускать.

    Я знаю это, но не хотелось бы использовать exec как потенциально опасную команду. iH сам общается с БД, поэтому можно сделать свойство сценария, которая методами iH вытаскивала бы информацию.



  • Зато это прямо "сейчас можно реализовать".



  • добрый день, продскажите как одним нажатием кнопки выключить весь свет в особняке?



  • Ключевое слово особняк 😄



  • @artem521:

    Ключевое слово особняк 😄

    много светильников имел виду



  • @amgstone:

    добрый день, продскажите как одним нажатием кнопки выключить весь свет в особняке?

    Можно сделать сценарий и привязать его к кнопке



  • @intrahouse:

    @amgstone:

    добрый день, продскажите как одним нажатием кнопки выключить весь свет в особняке?

    Можно сделать сценарий и привязать его к кнопке

    можете показать как ето сделеть?



  • например так

    В скриптах создаем новую блоксхему. Называем, сохраняем, открываем нижнее меню

    В нем жмем добавить (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. Ночью не включается, слишком шумный 😉
    scenvent501.jpg



  • Коллеги, уже обращался с этой проблемой… с 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 раза:
    Сценарий_срабатывает_2_раза_утром.png

    PS: не разбирались в чем проблема такой работы - п.3 этого поста?


Авторизуйтесь, чтобы ответить