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



  • 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)
    Видимо он видит не обработанные значения те что от датчика приходят
    А как написать что бы сценарий видел нужное значения, обработанное ?



  • Если вы использовали способ корректировки значения в плагине, то в roulette проценты.
    Если скрипт и актуатор, то нет. В этом случае % у актуатора, а у roulette исходное значение из диапазона 20-105.

    Если вам нужно работать с %, то в первом случае в скрипте используйте значение roulette, во втором - значение актуатора.



  • Значения в плагине



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

    Пользователь @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 получается?
    Просто рулет в виджет добавляю и он рисует нужный процент ?

    Понаблюдал, все работает но, если удалить эту строку 100 - (Number(value) - 20)*100/85
    С ней какие то неправильные цифры показывает
    В отладчике 3 значения
    1 Размер до обработки
    2 Обработанный правильный
    3 И какая то херь, которая выводится на экран
    Без этой строки все норм
    Спасибо за помощь



  • @dre12007, надеюсь вы сделали один из двух вариантов? Либо обработка входного значения, либо функция обработки! В конце-концов - покажите что отладчик лпагина показывает!



  • 29.07 14:50:19.735 megad2: localhost => 192.168.0.241 HTTP GET /drept=30&dev=sr04 echo=31 29.07 14:50:19.754 megad2: localhost <= 192.168.0.241 response: statusCode=200 contentType = text/html
    
    29.07 14:50:19.755 megad2: body: 52.83
    
    29.07 14:50:19.759 IH: get [ { id: 3031', value: '61.38' } ]
    
    set { roulette: { aval: 61.38, err: 0 } }
    


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

    29.07 14:50:19.735 megad2: localhost => 192.168.0.241 HTTP GET /drept=30&dev=sr04 echo=31
    29.07 14:50:19.754 megad2: localhost <= 192.168.0.241 response: statusCode=200 contentType = text/html
    29.07 14:50:19.755 megad2: body: 52.83
    29.07 14:50:19.759 IH: get [ { id: 3031', value: '61.38' } ]
    set { roulette: { aval: 61.38, err: 0 } }
    

    А почему у Вас в отладчике запрос на MegaD выглядит так "/drept=30&dev=sr04 echo=31", а не так "/sec/?pt=30&dev=sr04&echo=31"???
    А если в принципе, то конечное значение получается правильным. Так какой вариант использовали - 1 ("Формула расчета входного значения") или 2 ("Функция обработки...")???



  • Функция обработки при получении данных



  • /dre/?pt=30 на самом деле выглядит так
    Просто гугл объектив так скопировал криво



  • Всем привет. Подскажите строки кода которые нужно добавить в сценарий, чтобы свет включался по датчика движения в заданное время. Кот ночью тоскается и включает свет! Сценарий из примеров на сайте. Спасибо.



  • @Sergeus, вставьте в конец сценария функцию:

      //Функция возвращает цифровое значение периода дня
      GetPeriodDay() {
        let date = new Date();
        let hour = date.getHours();
        let period = 0;
        
        if(hour > 6 && hour < 10)       period = 0; // Период 7-9
        else if(hour > 9 && hour < 20)  period = 1; // Период 10-19
        else if(hour > 19 && hour < 23) period = 2; // Период 20-22
        else                            period = 3; // Период 23-6
        
        return period;
      },
    

    А в start обращайтесь к ней так:

    if(this.GetPeriodDay() != 3) {
       //Тут выполняем то что нужно выполнять с утра и до самого вечера
    };
    

    Или еще проще просто в start:

    let date = new Date();
    
    if(date.getHours() > 7 || date.getHours() < 23) {
       //Тут выполняем то что нужно выполнять с утра и до самого вечера
    }
    

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