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



  • Есть тригер : датчик температуры, значения до десятой, н.р 5.3 град. Сейчас тригер срабатывает при каждом изменении на 0.1 град. Как сделать чтобы он срабатывал по целым числам, т.е при изменении на один градус ? Можно загрубить значение при выводе с датчика, но это нежелательно.



  • @Anatol:

    Есть тригер : датчик температуры, значения до десятой, н.р 5.3 град. Сейчас тригер срабатывает при каждом изменении на 0.1 град. Как сделать чтобы он срабатывал по целым числам, т.е при изменении на один градус ? Можно загрубить значение при выводе с датчика, но это нежелательно.

    Если делаете через JS, то напрашивается деление с остатком. Делите показание на единицу, если остаток равен нулю, то продолжаете выполнять сценарий



  • @Anatol:

    Есть тригер : датчик температуры, значения до десятой, н.р 5.3 град. Сейчас тригер срабатывает при каждом изменении на 0.1 град. Как сделать чтобы он срабатывал по целым числам, т.е при изменении на один градус ? Можно загрубить значение при выводе с датчика, но это нежелательно.

    Как вариант - делать сравнение текущего значения с запомненным в start.

    То есть скрипт будет срабатывать при изменении значения на датчике. Но в основной функции мы это значение округляем до целого, сравниваем с запомненным +-1 и выполняем свою функцию (doFunction), ну или делаем какие-то действия. Что-то типа этого:

    const dt = Device("STEMP4_01");
    
    startOnChange(temp);
    
    script({
      temp_storage: 0;
    
      start() {
        let temp = Math.round(dt.value);
    
        if(temp < temp_storage - 1 || temp > temp_storage + 1) {
          this.temp_storage = temp;
          this.doFunction();
        }
        else this.exit();
      }
    });
    
    
    


  • temp_storage: 0; здесь выдает ошибку Unexpected token



  • @Anatol:

    temp_storage: 0; здесь выдает ошибку Unexpected token

    Замените ; на ,



  • Коллеги! Подскажите как сделать мультисценарий: Датчик движения - Snapshot с камеры с ID?

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



  • @Alex_Jet:

    Замените ; на ,

    Спасибо, получилось, в JS я не силен



  • Подскажите, в сценарии есть

    const dt = new Date();

    startOnChange([STEMP0_1], (dt.getHours() < STEMP0_1.getParam("hstop") || dt.getHours() > STEMP0_1.getParam("hstart"))

    script({….

    Если делать пробный запуск, то все работает, а так выдает ошибку dt is not defined ??



  • @Anatol:

    Подскажите, в сценарии есть

    const dt = new Date();

    startOnChange([STEMP0_1], (dt.getHours() < STEMP0_1.getParam("hstop") || dt.getHours() > STEMP0_1.getParam("hstart"))

    script({….

    Если делать пробный запуск, то все работает, а так выдает ошибку dt is not defined ??

    Нужно new Date() включить внутрь выражения. Так должно работать:

    startOnChange([STEMP0_1], ((new Date()).getHours() < STEMP0_1.getParam("hstop") || (new Date()).getHours() > STEMP0_1.getParam("hstart")));
    
    

    Причина в том, что область вне script - это декларативная область. Команды там размещать не надо, они выполняться не будут.

    При запуске сценария по триггеру, если есть входное условное выражение (второй аргумент в startOnChange), оно вычисляется. Если выражение истинно - начинается выполнение функции start.

    При пробном запуске startOnChange игнорируется, сразу запускается функция start, поэтому срабатывает



  • Поясните, пожалуйста, как послать команду плагину. Просьба привести пример.



  • @gis:

    Поясните, пожалуйста, как послать команду плагину. Просьба привести пример.

    Команды плагину можно послать из сценария (блок-схемы) или с кнопки.

    Плагин должен принимать от сервера сообщения с типом 'command'. Не все плагины поддерживают такую возможность.

    Набор команд и их формат также определяется плагином. Часто это служебные команды.

    Например, плагин xiaomi выполняет только команды 'scan' и 'remove'

    Для MegaD можно посылать любые запросы, которые принимает контроллер: см раздел "Отправка команды плагину из сценария"

    https://ih-systems.com/ru/product/plugin-megad/

    Например, выдать импульс:

    this.pluginCommand({unit:'megad1', command:'/%pwd%/?cmd=7:1;p10;7:0'});
    
    

    При использовании блок-схемы (или команды с кнопки) сначала из списка выбирается плагин, затем в поле Команда нужно прописать строку command без кавычек:

    /%pwd%/?cmd=7:1;p10;7:0
    
    


  • Добрый день. Обновился до версии 4.6.1. Перестали работать сценарии включения освещения по датчикам движения. В таблице сценариев lamp считается триггером, smotion не видит. 😞



  • Проблему уже заметили. Через час будет обновление.



  • @intrahouse:

    Проблему уже заметили. Через час будет обновление.

    Понял. Пока откатился на 4.6.0 - работает 🙂



  • Исправили. Можно обновить - 4.6.2



  • @intrahouse:

    Исправили. Можно обновить - 4.6.2

    Работает!



  • Коллеги! Подскажите когда примерно ждать реализации двух моментов:

    1. Возможность временного отключения задачи по расписанию

    2. Передача дополнительных параметров в сценарий при настройке задачи по расписанию.



  • Вопрос к разработчикам: почему не появилось в интерфейсе на закладке "Параметры" для устройства VOLL_ALL дополнительное свойство "Пониженная громкость"? Устройство VOLL_ALL работает через плагин http без обратной связи.

    * @name Оповещение о входной двери 
    * @desc Оповещение об открытой входной двери 
    * @version 4  
    */
    
    const SGERK_M1_P0 = Device("SGERK_M1_P0");
    const VOLL = Device("VOLL_ALL", "Общая громкость", [
    {"name":"VOLDOWN", "note":"Пониженная громкость",  "type":"number", "val":5},
      ]); 
    
    startOnChange([SGERK_M1_P0]);
    script({
      start() { 
         require("http").get(`http://192.168.0.43/mp3play?cmd=6&data=${VOLL.getParam("VOLDOWN")}`);
         this.startTimer("T1",1,"onTimerT1");
      },
      onTimerT1() { 
        require("http").get(`http://192.168.0.43/mp3playqueue?data=100,0,300,0,301,1002,300,0,301` );
      }
    })
    
    

    Просьба пояснить механизм назначения дополните свойств, сценарием. Можно ли назначать эти свойства с использованием графического редактора сценариев? Также интересует типы дополнительных свойств (можно ли вводить время, дату)? Просьба привести примеры.



  • @gis:

    Вопрос к разработчикам: почему не появилось в интерфейсе на закладке "Параметры" для устройства VOLL_ALL дополнительное свойство "Пониженная громкость"? Устройство VOLL_ALL работает через плагин http без обратной связи.

    > * @name Оповещение о входной двери 
    > * @desc Оповещение об открытой входной двери 
    > * @version 4  
    > */
    > 
    > const SGERK_M1_P0 = Device("SGERK_M1_P0");
    > const VOLL = Device("VOLL_ALL", "Общая громкость", [
    > {"name":"VOLDOWN", "note":"Пониженная громкость",  "type":"number", "val":5},
    >   ]); 
    > 
    > startOnChange([SGERK_M1_P0]);
    > script({
    >   start() { 
    >      require("http").get(`http://192.168.0.43/mp3play?cmd=6&data=${VOLL.getParam("VOLDOWN")}`);
    >      this.startTimer("T1",1,"onTimerT1");
    >   },
    >   onTimerT1() { 
    >     require("http").get(`http://192.168.0.43/mp3playqueue?data=100,0,300,0,301,1002,300,0,301` );
    >   }
    > })
    > 
    

    Просьба пояснить механизм назначения дополните свойств, сценарием. Можно ли назначать эти свойства с использованием графического редактора сценариев? Также интересует типы дополнительных свойств (можно ли вводить время, дату)? Просьба привести примеры.

    Где-то в этом месте рассказывали:

    1. https://frm.intrahouse.ru/viewtopic.php?f=18&t=5375&hilit=свойства&start=150#p9381

    2. https://frm.intrahouse.ru/viewtopic.php?f=18&t=5375&p=9478&hilit=свойства#p9478



  • @Alex_Jet:

    Коллеги! Подскажите когда примерно ждать реализации двух моментов:

    1. Возможность временного отключения задачи по расписанию

    2. Передача дополнительных параметров в сценарий при настройке задачи по расписанию.

    Задачи небольшие, постараемся сделать в течение мая.


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