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



  • На форуме Ab-log родился интересный сценарий управления трехходовым клапаном.
    В этой теме.
    Этот сценарий.

    Но там он на python.

    Переделайте его в API v 4, в качестве примера мультисценария пожалуйста.



  • @Erik Добрый день.

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

    Текущее значение (curr) считается линейной интерполяцией значений на часовом интервале, 
    прогноз выполняется линейной экстраполяцией часового временного ряда на полтора часа, 
    температура контура и коллектора на подаче (contour & collector) считается так же линейной интерполяцией но на 5 минутах, 
    

    Сама интерполяция выполняется не скриптом, а, вероятно, хранимыми процедурами БД (или еще как-то?)
    То есть нужно постоянно подсчитывать средние с заданной частотой на заданном интервале.
    В IH сейчас можно рассчитывать это сценарием, но кода получится весьма много.

    В версии V5 планируется создавать вычисляемые поля, тогда интерполяцию можно будет выполнять прямо на уровне устройства. И к новому отопительному сезону, надеюсь, такой скрипт можно будет сделать достаточно просто.



  • Не получается в графическом редакторе сделать управление одной кнопкой toggle по IR каналу.
    Первичное нажатие включает LAMP_1_3, повторное нажатие должно отключать, но отключает
    только после нажатия на любую другую кнопку + повторное нажатие начальной.... т.е предварительный сброс компаратора в 0. (т.е любой другой код) . Как сделать чтобы после выполнения сценария 1.jpg компаратор сбрасывался, и повторная передача кода 2962 приводила к toggle Lamp_1_3. Наилучшими.



  • @ra2fgomm после блока ACTION добавьте блок изменения значения устройства SENSORA_IR
    8a9ba311-cd0b-4d52-ad51-ebf6093de3a0-image.png
    У вас не происходит изменения, поэтому скрипт не отрабатывает второй раз



  • Огромное спасибо за подсказку !!!! Работает !!!



  • Добрый день
    Помогите сделать сценарий
    Я вообще не представляю как это сделать
    Есть датчик который присылает на сервер расстояние в см
    Мне нужно сантиметры перевести в проценты, от 0 до 100% и вывести их на экран
    105 см = 0%
    20 см = 100%
    Это примерно точные сантиметры



  • Пользователь @dre12007 написал в Сценарии пользователей:

    Добрый день
    Помогите сделать сценарий
    Я вообще не представляю как это сделать
    Есть датчик который присылает на сервер расстояние в см
    Мне нужно сантиметры перевести в проценты, от 0 до 100% и вывести их на экран
    105 см = 0%
    20 см = 100%
    Это примерно точные сантиметры

    = 100 - (value - 20)*100/85



  • если не сложно можно подробнее?



  • @dre12007

    1. Узнаем сколько % составляет значение уменьшенное на 20 от верхней границы - 105 минус 20.
    2. "переворачиваем" проценты. Вам нужно минимальное значение - 100%, максимальное - 0. Поэтому от 100 отнимаем полученное в п.1

    Стесняюсь спросить, вы в школе зачем учились то? 🙂



  • Причем тут школа, я понял что вы высчитали
    Где это прописать в ih, как это сделать в самой программе?
    Такого в школе не преподают



  • @amgstone Вот я сделал. У меня вроде работает. 2020-07-27_05-58-37.png



  • Вот ещё один рабочий. При входе срабатывает геркон, если нет движения выключается свет. 2020-07-24_20-04-21.png



  • @dre12007
    Если ваше устройство sensor1, а % присваиваете actor1

    let newvalue = 100-(sensor1.value-20)*100/85;
    actor1.setValue(newvalue);



  • Пользователь @Sergeus написал в Сценарии пользователей:

    @amgstone Вот я сделал. У меня вроде работает. 2020-07-27_05-58-37.png

    Не, всё таки не работает. Где косяк, хз.



  • @Sergeus
    Элемент AND в данном случае лишний. Он необходим при сравнении как минимум двух свойств.
    Зачем элемент сравнения A>B, не понятно. Этот элемент имеет смысл когда сравниваете аналоговые величины. Например температура1 больше температуры2.

    Если цель выключить светильник (H20) через 600 сек. после прекращения движения (триггер smotion2), то логичней такой сценарий:

    2b569710-d7dc-4673-9f18-afe12c0c9e9a-image.jpeg
    Хотя смысла у такого сценария нет. Можно было просто выключать светильник без проверки его состояния. Я просто показал применение блока AND



  • @intrahouse Понятно. А как его привязать к сценарию с герконом, чтоб был как один или нет в этом разницы?



  • const roulette = Device( "Roulette"); 
    const actor = Device( "Аctor"); 
    
    startOnChange ([roulette]);
    
    script({
        start() {
       let newvalue = 100-(roulette.value-20)*100/85;
       actor.setValue(newvalue);
        } 
    });
    

    Что то не так я делаю



  • Актуатор в устройствах создали?
    Он же не может быть просто actor, он actorаХХ (с цифрой на конце).
    Вы же конкретному значение присваиваете.

    И что такое "roulette"?

    У вас есть датчик. Он в "устройствах" как назван? Его ID?
    И "актуатор универсальный аналоговый" в устройствах же создайте, и в скрипте используйте его ID.

    Если вы мультисценарий создаете, первым делом типы устройств указываются. Нет такого типа - "Roulette"



  • Да создал и назвал его actor
    Roulette это датчик расстояния, в устройствах он так и назван
    Не мульти сценарий



  • @dre12007

    А что отладчик говорит?


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