Сценарии пользователей



  • Простой сценарий управления вытяжным вентилятором в санузле.

    Вентилятор (VENT1) работает по датчику влажности (SHUMIDITY1).
    scenvent101.jpg
    Уставку (SETPOINT) датчика влажности можно задавать в пользовательском интерфейсе.

    Долгим нажатием на датчике влажности открывается окно свойств датчика:
    scenvent701.jpg
    Сценарий, показанный выше, будет работать всегда. Желательно иметь возможность отключения автоматического режима работы вентилятора. Добавим проверку автоматического режима:
    scenvent301.jpg
    Теперь в пользовательском интерфейсе на вкладке "Параметры" можно отключить автоматический режим. На иконке вентилятора пропадет буква "А" и вентилятор не будет включаться/выключаться по датчику влажности:
    scenvent702.jpg



  • Все вроде хорошо. Но когда сидишь в ванной желательно чтобы вентилятор не включался. Продует :roll:

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

    То есть пусть помещение вентилируется когда нас нет 😉
    scenvent401.jpg
    Возникла еще проблема. Вентилятор шумит и мешает спать :evil:

    Добавим условие включения вентилятора. Пусть включается только днем с 7-00 до 23-00:
    scenvent501.jpg
    Вот теперь нормально 😄



  • @intrahouse:

    Вот теперь нормально 😄

    Зачётный блокли получился! Особенно A



  • А можно сделать так, чтобы в пользовательском интерфейсе на вкладке "Параметры" можно было задавать время когда вентилятор не работает?



  • @gis:

    А можно сделать так, чтобы в пользовательском интерфейсе на вкладке "Параметры" можно было задавать время когда вентилятор не работает?

    На данный момент такой возможности нет.



  • @gis:

    Спасибо за разъяснение, но так как часто бывают перебои с электричеством, и время заката/восхода может быть пропущено, поэтому приходится делать сценарий. Вообще хорошо бы доработать запуск по времени, таким образом, чтобы при загрузке системы проверять, какие задания должны выполнятся и запускать их. Можно добавить для этого переключатель "запускать задание, если он вовремя не запущено". Это значительно повысило бы надежность малыми средствами, так как организация бесперебойного питания дело довольно хлопотное и затратное. Из-за отсутствия такой возможности, например, я практически не использую Cron в MegaD.

    Это достаточно спорный вопрос. Если при запуске сервера запускать пропущенные сценарии, то можно получить другие проблемы. Если сценарий вовремя не отработал, не факт что его нужно запускать в другое время.



  • Да, случаи могут быть разные - для этого можно данную возможность реализовать опцией - по умолчанию данная возможность отключена, а кому нужно - включит (при загрузке система будет проверять и нужные сценарии запустит).



  • Не хватает возможности для скриптов "запускать каждые …" например, когда нужно запускать скрипт каждые 5 секунд



  • @homa:

    Не хватает возможности для скриптов "запускать каждые …" например, когда нужно запускать скрипт каждые 5 секунд

    Можно сделать так. Установить плагин Sensor Emulator https://ih-systems.com/ru/product/plugin-sensors-emulator/

    В нем запускать какой нибудь виртуальный дискретный датчик с периодом 5 сек.

    А в сценарии этот датчик поставить как триггер запуска сценария.



  • @gis:

    Да, случаи могут быть разные - для этого можно данную возможность реализовать опцией - по умолчанию данная возможность отключена, а кому нужно - включит (при загрузке система будет проверять и нужные сценарии запустит).

    В принципе согласен. Этот функционал не лишний. Надо думать по реализации



  • Коллеги, у меня каждый день по расписанию утром (-3 час от рассвета) и вечером (-0 час от заката) запускается скрипт тупо переключающий режим отопления - если ночь, то день, если день, то ночь. Но с 16.01.19 по вечерам он стал запускаться по два раза… В чем может быть дело?

    /** 
    * @name Переключение режимов отопления  
    * @desc При запуске включается День, если была Ночь или Ночь, если был День 
    * @version 4  
    */
    
    const mode = Device("SWITCH_HEATING");
    
    script({
        start() {
          if(mode.value == 1) {
            mode.setValue(2);
          }
          else {
            if(mode.value == 2)
            mode.setValue(1);
          }
          this.log("Режим отопления - " +mode.stateName);
        } 
    });
    
    

    Расписание_вечером_срабатывает_два_раза.png



  • @Alex_Jet:

    Коллеги, у меня каждый день по расписанию утром (-3 час от рассвета) и вечером (-0 час от заката) запускается скрипт тупо переключающий режим отопления - если ночь, то день, если день, то ночь. Но с 16.01.19 по вечерам он стал запускаться по два раза… В чем может быть дело?

    > /** 
    > * @name Переключение режимов отопления  
    > * @desc При запуске включается День, если была Ночь или Ночь, если был День 
    > * @version 4  
    > */
    > 
    > const mode = Device("SWITCH_HEATING");
    > 
    > script({
    >     start() {
    >       if(mode.value == 1) {
    >         mode.setValue(2);
    >       }
    >       else {
    >         if(mode.value == 2)
    >         mode.setValue(1);
    >       }
    >       this.log("Режим отопления - " +mode.stateName);
    >     } 
    > });
    > 
    

    Расписание_вечером_срабатывает_два_раза.png

    Было такое, но в позапрошлой по-моему версии исправили. У Вас актуальная версия?



  • @homa:

    Было такое, но в позапрошлой по-моему версии исправили. У Вас актуальная версия?

    Да, конечно, версия самая последняя - 4.4.11. Может что-то ещё делали? Расписание заново сделать?



  • @Alex_Jet:

    @homa:

    Было такое, но в позапрошлой по-моему версии исправили. У Вас актуальная версия?

    Да, конечно, версия самая последняя - 4.4.11. Может что-то ещё делали? Расписание заново сделать?

    Тогда ждём что скажут разработчики. У меня после обновления все стало работать



  • @intrahouse:

    @homa:

    Не хватает возможности для скриптов "запускать каждые …" например, когда нужно запускать скрипт каждые 5 секунд

    Можно сделать так. Установить плагин Sensor Emulator https://ih-systems.com/ru/product/plugin-sensors-emulator/

    В нем запускать какой нибудь виртуальный дискретный датчик с периодом 5 сек.

    А в сценарии этот датчик поставить как триггер запуска сценария.

    А можно период виртуального датчика получить и задать из кода сценария? И можно ли сделать на мнемосхема устройство у которого период будет устанавливаться уставкой?



  • @homa:

    А можно период виртуального датчика получить и задать из кода сценария? И можно ли сделать на мнемосхема устройство у которого период будет устанавливаться уставкой?

    На оба вопроса ответ нет.

    Но если вы опишите задачу подробнее, вероятно это можно будет реализовать сценарием.



  • @intrahouse:

    @homa:

    А можно период виртуального датчика получить и задать из кода сценария? И можно ли сделать на мнемосхема устройство у которого период будет устанавливаться уставкой?

    На оба вопроса ответ нет.

    Но если вы опишите задачу подробнее, вероятно это можно будет реализовать сценарием.

    Настроил замер "мгновенной нагрузки", которая вычисляется по среднему значению за минуту, решил что минута долго и нужно сделать за полминуты, получается нужно изменить код плагина и настройки виртуального сенсора. Вот когда начал менять и подумал, что было бы удобнее через интерфейс это поменять один раз и пользоваться переменной. Вообще использовать глобальные переменные было бы удобно/

    Еще хотелось бы выводить таймер на мнемосхему. Например есть сценарий, который ставит квартиру на охрану через 90секунд (время через которое выключится свет и устройства безопасности будут реагировать на изменения). Хочется видеть сколько еще осталось



  • Добрый день! Подскажите пожалуйста каким образом можно реализовать счётчик моточасов? И как в сценарии при передаче сообщения о срабатывании датчика движения кроме передачи имени датчика, зоны срабатывания передать и время его срабатывания?



  • @sergeyygr:

    Добрый день! Подскажите пожалуйста каким образом можно реализовать счётчик моточасов? И как в сценарии при передаче сообщения о срабатывании датчика движения кроме передачи имени датчика, зоны срабатывания передать и время его срабатывания?

    Первый вопрос реализовал сценарием (помогла идея по использованию плагина эмулятора). Вроде работает нормально (в эмуляторе устройство изменяет свое состояние 1 раз в 60 секунд).

    /**

    • @name Счетчик моточасов

    • @desc

    • @version 4

    */

    const meter = Device("Meter","Счетчик Моточасов");

    const pulse = Device("SensorD","Датчик импульсов");

    const sensor = Device("SensorD","Датчик напряжения генератора");

    startOnChange(pulse);

    script ({

    weight:1, // коэффициент

    start() {

    if (sensor.isOn()) {

    this.assign(meter, 'aval', meter.value+this.weight);

    this.assign( pulse, 'value', 0); // сброс импульса

    }

    }

    });

    А вот по второму вопросу все таки прошу помочь 🙂



  • @sergeyygr:

    @sergeyygr:

    Добрый день! Подскажите пожалуйста каким образом можно реализовать счётчик моточасов? И как в сценарии при передаче сообщения о срабатывании датчика движения кроме передачи имени датчика, зоны срабатывания передать и время его срабатывания?

    Первый вопрос реализовал сценарием (помогла идея по использованию плагина эмулятора). Вроде работает нормально (в эмуляторе устройство изменяет свое состояние 1 раз в 60 секунд).

    А вот по второму вопросу все таки прошу помочь 🙂

    Добрый день!

    Отлично, что придумали реализацию, пока мы не сделали циклический запуск по расписанию 🙂

    По второму вопросу - вы хотите передать время срабатывания датчика в сценарии, который вызван при сработке? То есть текущую дату и время?

    	let dt = new Date(); // это текущее время 
    	this.log('Время  '+dt.toLocaleString()) ;  // 'Время  2019-1-29 11:25:13', 
    
    
    

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