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



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



  • Участник @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
    И вот это неудобно каждый раз добавлять одинаковое устройство в "Запускать для устройств". Было бы удобно прописать в коде устройство напрямую, но это не поддерживается в мультисценариях


Log in to reply