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



  • Участник @kostinanton написал в Сценарии пользователей:

    Добрый вечер! Есть связка RPi4 + Mega (пока по USB). Подскажите, как работать с Serial для выдачи команды в канал от IHS к устройству, подключенному к Ардуино, и приема из канала ответа устройства, подключенного к Ардуино? Только по Modbus, или есть еще какие решения? Заранее спасибо!

    Только по Modbus. Других вариантов сейчас нет



  • @intrahouse в есть наработки по МЭК-61850?



  • @intrapro а подскажите, как из свойства time получить значения минут и секунд? Устанавливаю на 00:00:00, в логе вижу значение:
    03.03 16:49:47.867 log: 4492800
    как преобразовать?



  • @homa, если Вы имеете в виду параметр сценария type:"time", там банальные секунды 🙂
    Вот например сценарий определяет параметры auto_afterOn, auto_afterOff

    const kev_speed_status = Device("SensorD","Состояние скоростей", [
      {"name":"auto_afterOn", "note":"После ручного включения", "type":"time", "val":0},
      {"name":"auto_afterOff", "note":"После ручного выключения", "type":"time", "val":0}
      ]);
    
    script({
        start() {
         .....
          this.log("auto_afterOn="+kev.getParam('auto_afterOn'))
         ......
        } 
    });
    

    Задаем 1 час
    timeParam.png

    Результат:
    03.03 17:55:42.230 log: auto_afterOn=3600

    Если поставить 00:00:00
    03.03 17:55:04.036 log: auto_afterOn=0

    Или что-то другое имелось в виду?



  • @intrapro я и ожидал секунды... но почему-то значение в 52 дня лежит, хотя выставлено 0



  • @homa да странно 😞 А если изменить?



  • @intrapro значение всегда секунды с уставки + ровно 52 дня)



  • @homa для любого параметра типа time??



  • @intrapro в рамках одного сценария для обоих параметров такая ситуация



  • @homa а меняете вы значения параметров интерактивно? Или из сценария?



  • @intrapro нашел проблему. изначально я в сценарии задал значение 4573457, потом крутил бегунки, потом поставил 0. На других устройствах все работает штатно, а вот те, на которых изначально было не то значение, не получается вернуть в строй.



  • @homa придется из сценария разово записать 0 или другое кол-во секунд в пределах суток.



  • @intrapro да, получилось. спасибо! И сразу другой вопрос: нельзя запускать мультисценарий из расписания? там можно выбрать только экземпляр с конкретным устройством...



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

    И сразу другой вопрос: нельзя запускать мультисценарий из расписания? там можно выбрать только экземпляр с конкретным устройством...

    Запустить можно конкретный сценарий. Мультисценарий - это как бы шаблон. Имеется в виду запустить все экземпляры мультисценария сразу? Нет, пока только по одному 😞



  • @intrapro

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

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



  • @Erik Да, верно. Нормальный вариант



  • @Erik я добавил бинарный датчик и через плагин сенсорэмулятор задал период изменения. Суть таже - триггер) неудобно одинаковое устройство писать всем экземплярам мультисценария. Нужно групповое добавление устройств в мультисценарий)



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

    неудобно одинаковое устройство писать всем экземплярам мультисценария.

    Почему?

    У системы есть состояния.
    Это режим охраны, режим работы отопления, присутствие, и все что угодно еще.
    И если в разных состояниях должны быть разные сценарии, нужно создавать устройства - признаки этих состояний, и проверять их значения в скриптах.
    Или запускать скрипты при изменении их состояний.
    И это как раз удобно. Можно не только состояниями оперировать, но и сочетаниями состояний. Например "экономичный режим отопления в отсутствии хозяев при включенной охране".
    Полностью развязывает руки. И вы можете менять состояния вручную, скриптом, по расписанию, по событию, и менять поведение системы.
    А добавить эти устройства в мультисценарии нужно 1 (один) раз. Зачем вам другой механизм?



  • @Erik Вы меня не поняли) чтобы выполнять мультисценарий циклически делаем виртуальное устройство, которое меняет состояние каждые 50сек:
    efdb998f-42e4-4dff-a706-2c5ce928f982-image.png
    Запускаем мультисценарий по изменению этого датчика:
    e0f5a39e-76dd-4635-9cef-e0ce1ce3f0c1-image.png
    чтобы все экземпляры сценария срабатывали каждые 50сек нужно добавить этот бинарный датчик ко всем экземплярам:
    62a6317a-01a2-4258-9359-4a3443640228-image.png
    И вот это неудобно каждый раз добавлять одинаковое устройство в "Запускать для устройств". Было бы удобно прописать в коде устройство напрямую, но это не поддерживается в мультисценариях



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

    И вот это неудобно каждый раз добавлять одинаковое устройство в "Запускать для устройств". Было бы удобно прописать в коде устройство напрямую, но это не поддерживается в мультисценариях

    Зачем добавлять "каждый раз"? Один раз за всю историю вашего УД добавьте, и пусть домашние всю жизнь потом пользуются.

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


Log in to reply