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



  • 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

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



  • @dre12007, вы уточните как у вас данные от датчика попадают на сервер? Какой плагин используется? Есть несколько вариантов, поэтому надо понять как лучше сделать. А так - входных данных никаких, но вы помогите...



  • Плагин мега
    Датчик опрашивается каждые 15 секунд
    Отладчик молчит



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

    Плагин мега
    Датчик опрашивается каждые 15 секунд
    Отладчик молчит

    значит скрипт не запускается даже.
    Изменения значения то есть у датчика?



  • Да вроде есть
    Ну данные то после опроса точно приходят



  • @dre12007, ну если MegaD. То тут есть два более легких варианта:
    1.Открываем свойства канала, переходим на вкладку "Обработка" и в поле "Формула расчета входного значения" вписываем

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

    2.То же, но на вкладке "Канал" включаем чек-боксом "Использовать функцию обработки при получении данных", а в ней вписываем:

    function (val)
    {  var result = ( 100 - (val - 20) *100/85 ).toFixed(2);
       
       return result; //Возвращаем значение
    }
    

    Таким образом, входные данные с датчика сразу "скорректируются" и у устройства будет отображаться нужное значение.



  • @dre12007, с виду скрипт рабочий. Вы точно правильно внесли ID устройств в скрипт? И ваш "Actor" - это точно актуатор универсальный аналоговый? А "Roulette" - датчик аналоговый универсальный?
    Данные смотрите через плагин или на мнемосхеме?



  • Actor ДАТЧИК универсальный аналоговый 😬
    ID правильный
    Рулет тоже датчик универсальный аналоговый



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

    @dre12007, ну если MegaD. То тут есть два более легких варианта:

    1. Открываем свойства канала, переходим на вкладку "Обработка" и в поле "Формула расчета входного значения" вписываем
    100 - (Number(value) - 20)*100/85
    
    1. То же, но на вкладке "Канал" включаем чек-боксом "Использовать функцию обработки при получении данных", а в ней вписываем:
    function (val)
    {  var result = ( 100 - (val - 20) *100/85 ).toFixed(2);
       
       return result; //Возвращаем значение
    }
    

    Таким образом, входные данные с датчика сразу "скорректируются" и у устройства будет отображаться нужное значение.

    А этот способ если сделать то не нужен actor получается?
    Просто рулет в виджет добавляю и он рисует нужный процент ?



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

    Actor ДАТЧИК универсальный аналоговый 😬
    ID правильный
    Рулет тоже датчик универсальный аналоговый

    Actor нужно сделать НЕ датчиком, а актуатором.
    Датчику нельзя значение присвоить.



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

    А этот способ если сделать то не нужен actor получается?
    Просто рулет в виджет добавляю и он рисует нужный процент ?

    Да.



  • @Erik
    Вроде работает
    Спасибо огромное за помощь
    Ещё вопрос
    Когда я буду делать какой нибудь сценарий с участием рулетки
    На какие данные сценарий будет ссылаться, те что в плагине или обработанные ?



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

    @Erik
    Вроде работает
    Спасибо огромное за помощь
    Ещё вопрос
    Когда я буду делать какой нибудь сценарий с участием рулетки
    На какие данные сценарий будет ссылаться, те что в плагине или обработанные ?

    На что вы в сценарии сошлетесь, то и будет.



  • Может глупый вопрос
    Да и все работает
    Но спрошу
    Если посчитать ну например 46см
    То получается минус 69 с хвостиком
    А на экран выводит 69 без минуса
    Не ругайтесь сильно я не очень хорошо учился в школе 😊



  • Если посчитать 46 см, получится
    100-(46-20)*100/85 = 69,41
    без минуса.

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

    Не ругайтесь сильно я не очень хорошо учился в школе

    Вам лучше чем нибудь гуманитарным заниматься. Катастрофами, например. 🙂



  • Все правильно, я просто затупил, лет 20 ничего кроме денег не считал 😂
    Я в конце отнимал от полученной суммы 100, а не на оборот
    Получал туже сумму но с минусом



  • Подскажите пожалуйста ещё
    Вот в сценарии пишу
    if (roulette.value > 70)
    Видимо он видит не обработанные значения те что от датчика приходят
    А как написать что бы сценарий видел нужное значения, обработанное ?


Log in to reply