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



  • Сценарий - Управление светильником при открытии 2 дверей

    При открытии любой из дверей включить свет.

    Если обе двери закрыты, свет выключить через 60 сек.
    scen301.jpg



  • Сценарий - включить свет при открытии двери с у четом датчика освещенности.

    Этот сценарий аналогичен предыдущему. Но еще проверяет аналоговый датчик освещенности (SENSORA1) с учетом уставки.
    scen303.jpg



  • Реализация понравилась - все современно и красочно. Для чайников, разбирающихся что такое NOT, AND и прочим - самое то. Опытные юзеру предпочтут скрипты, поскольку толковый мультисценарий, мне кажется, не сделать. Тот же пример с датчиком протечки - как сделать с помощью блокли чтобы пользователю отсылалось сообщение в Telegram с названием датчика протечки и названием клапана/насоса, которые отключены? В скрипте это сделать очень просто…

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

    В некоторых случая почему-то не удаляются линии. Выбираешь ее, а минус не активен - выбираешь какой-нибудь элемент, а потом снова линию и тогда минус активен. Линию можно протянуть только от предыдущего элемента к следующему обратно не получается. Это с точки зрения юзабилити.

    Что такое "Новый скрипт" и "Новый шаблонный скрипт" - обычный сценарий и мультисценарий? Теперь придется ломать парадигму прошлых представлений?

    За иконки сценариев и мультисценариев - спасибо! их не хватало.

    Еще предлагаю сделать иконки с версией скриптов.



  • @Alex_Jet:

    Опытные юзеру предпочтут скрипты, поскольку толковый мультисценарий, мне кажется, не сделать. Тот же пример с датчиком протечки - как сделать с помощью блокли чтобы пользователю отсылалось сообщение в Telegram с названием датчика протечки и названием клапана/насоса, которые отключены? В скрипте это сделать очень просто…

    Согласен. Каждому свое. Опытные будут писать скрипт. Для меня, как инженера-схемотехника, блок-схемы нагляднее. Я не программист 😞

    Чтобы отсылалось сообщение с названием устройства можно в сообщение подставлять: x.id, x.name, x.placeName, x.zoneName, x.fullName

    Формат такой: Внимание! Протечка воды. ${SLEAKAGE1.zoneName}
    scen121.jpg

    @Alex_Jet:

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

    Можно способом copy/paste. Скопировать созданный в блок-схеме скрипт и сделать из него новый сценарий.

    Кроме этого чуть позже можно будет одной командой сделать из блок-схемы мультисценарий.
    @intrahouse:

    Что такое "Новый скрипт" и "Новый шаблонный скрипт" - обычный сценарий и мультисценарий? Теперь придется ломать парадигму прошлых представлений?

    Ломать не надо. Мы поправим названия. Должно быть Сценарий, Мультисценарий, Блок-схема



  • Добрый день,
    @Alex_Jet:

    В некоторых случая почему-то не удаляются линии. Выбираешь ее, а минус не активен - выбираешь какой-нибудь элемент, а потом снова линию и тогда минус активен.

    Линии удаляются только по клавише Backspace или с элементом вместе. (исправим в следующей версии)

    Элементы также можно удалить по клавише Backspace или кнопки минус.

    При удерживание клавиши Shift можно выделять несколько элементов или линий

    При удерживание клавиши Ctrl на линиях можно ставить точки.

    @Alex_Jet:

    Линию можно протянуть только от предыдущего элемента к следующему обратно не получается. Это с точки зрения юзабилити.

    Все верно, данное ограничение штатное, не является ошибкой.



  • Все вышеописанное Вами, надо в статью/вики добавить.

    PS: а я радиотехник… но языки программирования очень нравятся. Хотя никак с программированием не связан - все в русле хобби.



  • Добрый день!

    А как в блоксхеме при информировании (email\telegramm) сделать перенос на новую строку? Если в телеграмме еще сойдет передать все показания разными сообщениями, то несколько параметров разными письмами высылать неудобно, а в одну строку тоже не вариант.

    Заранее спасибо!

    ps

    извините, разобрался. работает с \n



  • @homa:

    А как в блоксхеме при информировании (email\telegramm) сделать перенос на новую строку? Если в телеграмме еще сойдет передать все показания разными сообщениями, то несколько параметров разными письмами высылать неудобно, а в одну строку тоже не вариант.

    Мы уже обратили внимание на это. В следующей версии будут многострочные сообщения



  • @homa:

    ps

    извините, разобрался. работает с \n

    Это хорошо. 🙂 Но вписывать многострочное сообщение в одну строку все равно неудобно. Будет многострочное поле.



  • Еще вопрос… можно ли получить значение счетчика через конфигуратор блок-схем? Не получается его выбрать ни в одном из типов устройств



  • @homa:

    Еще вопрос… можно ли получить значение счетчика через конфигуратор блок-схем? Не получается его выбрать ни в одном из типов устройств

    А зачем? Отправлять показания можно из расписания.



  • @Alex_Jet:

    Все вышеописанное Вами, надо в статью/вики добавить.

    Спасибо. Добавили.



  • В новой версии перестали прицепляться сценарии в расписаниях. Новые сценарии не отображаются, старые, которые были удалены, отображаются. Кроме того в рабочих сценариях отображаются сценарии, которых уже нет и удалить их не получается.
    сценарии.JPG
    расписание.JPG



  • Проанализировали ситуацию.

    1.В список сценариев в расписание попадают только те сценарии, которые не имеют триггеров. Поэтому вы не видите в этом списке всех ваших сценариев.

    2.Нельзя редактировать сценарии в разделе "Рабочие сценарии". Наша ошибка. Не убрали эту возможность. :oops:

    Попробуйте перезагрузить систему. В списке рабочих сценариев "лишние" сценарии должны пропасть.

    Если проблема останется прошу выслать проект нам на support.



  • @intrahouse:

    Проанализировали ситуацию.

    1.В список сценариев в расписание попадают только те сценарии, которые не имеют триггеров. Поэтому вы не видите в этом списке всех ваших сценариев.

    2.Нельзя редактировать сценарии в разделе "Рабочие сценарии". Наша ошибка. Не убрали эту возможность. :oops:

    Попробуйте перезагрузить систему. В списке рабочих сценариев "лишние" сценарии должны пропасть.

    Если проблема останется прошу выслать проект нам на support.

    Перезагружать несколько раз пробовал, не помогло… Выслал проект.

    Просьба посмотреть также сценарии на JS4 и блок-схемах. Там вроде нет триггеров, но они не отображаются... Может я что-то не понимаю



  • Сценарии теперь видны из расписания и их можно запускать по времени, но при автоматическом вызове из расписания сценарий отрабатывает дважды. Если запустить сценарий вручную, то приходит одно сообщение в телеграмм, если сценарий срабатывает из расписания, то приходит два сообщения, причем это не дубль сообщения, а именно второй вызов сценария, т.к. значения датчиков в выводе различаются. Тоже самое при оповещении на почту



  • если создать сценарий-блоксхему с несколькими триггерами, то при изменении одного из триггеров уведомления происходят по всем триггерам. Это правильная работа или же нужно создать отдельный сценарий на каждый триггер?
    ping.JPG



  • подскажите как можно получить название состояния устройства? x.value возвращает №состояния, а хотелось бы получать именно название состояния

    Также предложение - для уведомления по email добавить возможность указания темы письма



  • @homa:

    подскажите как можно получить название состояния устройства?

    x.stateName

    В описании системы команд не было. Добавили https://ih-systems.com/ru/command_list/
    @homa:

    Также предложение - для уведомления по email добавить возможность указания темы письма

    Сделаем позже.
    @homa:

    если создать сценарий-блоксхему с несколькими триггерами, то при изменении одного из триггеров уведомления происходят по всем триггерам. Это правильная работа или же нужно создать отдельный сценарий на каждый триггер?

    Работает правильно.

    По идее в блок-схемах не хватает проверки isChanged() Добавим этот элемент в блок-схемы позже.

    В вашем примере я бы сделал мультисценарий и привязал к нужным устройствам

    Но можно и отдельными сценариями 😉
    @homa:

    Сценарии теперь видны из расписания и их можно запускать по времени, но при автоматическом вызове из расписания сценарий отрабатывает дважды

    Это баг. Исправим сегодня в новой версии.



  • Несколько вопросов по js:

    1. Как в callback передать параметры? В отладчике такая ошибка:

    29.12 09:26:38.091 Done timer T2
    29.12 09:26:38.091 exec function TurnOffOLED(megad5,30)
    29.12 09:26:38.092 Error function TurnOffOLED(megad5,30):sceneSet[name][func] is not a function
    
    

    Задача - после передачи данных на дисплей хочу чтобы он через 10 секунд выключился:

        DataToOLED(text, value, nameunit, channel) {
          this.TurnOnOLED(nameunit, channel);
    
          //Форматирование цифровых значений
          value = value.toFixed(1);
          let str = value.toString();
          if(str.length < 4 && value > 0) str = 's+' +str;
          else if(str.length < 4) str = 'ss' +str;
          else if(str.length < 5) str = 's' +str;
    
          //Вывод команд на дисплей
          this.pluginCommand({unit: nameunit, command: '/sec/?pt=' +channel+ '&text=' +text+ '&col=0&row=0'});
          this.pluginCommand({unit: nameunit, command: '/sec/?pt=' +channel+ '&text=' +str+ ':'});
    
          this.startTimer("T2", 10, "TurnOffOLED(" +nameunit+ "," +channel+ ")");
        },
    
    
    

    Сама функция выключения:

        TurnOffOLED(nameunit, channel) {
          this.pluginCommand({unit: nameunit, command: '/sec/?cmd=' +channel+ ':0'});
        }
    
    
    

    2. Первый раз столкнулся с задачей конвертировать строку из utf-8 в cp866…в js это сделать оказалось не тривиальной задачей 😞 . Люди на форумах так и пишут - делайте это в php... можете помочь?

    3. Придумал алгоритм отображения различных показаний на OLED-экране. Подскажите как при срабатывании кнопки в сценарии можно каждый раз увеличивать значение переменно? Пока сделал с помощью глобальной переменной:

          //Перебор параметров при каждом нажатии кнопки
          let value = global.get('Button_Guest') + 1;
          if(isNaN(value) || value > 2) global.set('Button_Guest', 0);
          global.set('Button_Guest', value);
    
    
    

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