Intra Forum
    • Категории
    • Последние
    • Метки
    • Популярные
    • Зарегистрироваться
    • Войти

    JS Плагин: onSub для devices - обработчик не вызывается

    Запланировано Прикреплена Закрыта Перенесена IntraSCADA
    3 Сообщения 2 Posters 22 Просмотры 2 Watching
    Загружаем больше сообщений
    • Сначала старые
    • Сначала новые
    • По количеству голосов
    Ответить
    • Ответить, создав новую тему
    Авторизуйтесь, чтобы ответить
    Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
    • T Не в сети
      tallerhorizon
      отредактировано

      Окружение: Docker образ ubuntu:noble, платформа amd64
      Host машина: mac os 15.7.4, m1 pro, 16gb ram
      Версия ПО: 5.18.55. Никаких дополнительных настроек. Все по умолчанию
      Ожидаемое поведение: при подписке на изменения всех устройств в разрабатываемом JS плагине срабатывает зарегистрированный обработчик.
      Фактическое поведение: обработчик не вызывается.

      Согласно документации (https://docs.intrascada.com/ru/pg142#обработчик-команд-процесса-сканирования-strong-onscan-cb-strong)
      ожидаю, что при использовании метода onSub в app.js плагина будет вызываться переданный на вход этому методу обработчик при изменениях показаний датчиков.

      6ec634fe-2034-4b98-b62b-1738eb06a7f8-image.jpeg

      Однако, при использовании конструкции как на скриншоте выше, ничего не происходит.

      Если же использовать вариант onSub с фильтром - обработчик срабатывает корректно

      I 1 ответ Последний ответ Ответить Цитировать 0
      • I Не в сети
        intrapro Intra Support @tallerhorizon
        отредактировано

        Добрый день, @tallerhorizon
        Вы правы, действительно, вариант без фильтра устарел и сейчас не работает.
        Был убран по причине очень большого потока данных на плагин, поскольку постоянно отправляются свойства всех устройств, включая все системные индикаторы, и это обычно не то, что требуется.

        Если вам действительно нужны в плагине все значения, можно использовать механизм Расширений (флаг "extratab":1 в манифесте). Так работает например плагин opcuaserver.
        Для Расширений также нужно задать фильтры (device | tag | location), но если по location (папка в дереве устройств) выбрать Все, будут приходить абсолютно все изменения всех устройств.

        Подписка должна быть с флагом extra:

        plugin.onSub('devices', { extra: 1 }, data => {
            plugin.log('onSub data: ' + util.inspect(data,null, 4))
            data.forEach(item => {
              // ...
            });
        });
        

        Спасибо за вопрос, внесем изменения в документацию.

        T 1 ответ Последний ответ Ответить Цитировать 0
        • T Не в сети
          tallerhorizon @intrapro
          отредактировано

          @intrapro Спасибо за ответ.

          Согласен по поводу того, что использовать подписку на все датчики не очень оптимально, однако у меня не получилось, ознакомившись с документацией, придумать иного решения.

          Мы хотели бы отправлять во внешнюю систему показания с определенных датчиков как только они изменяются. Однако список датчиков, изменения которых мы наблюдаем может изменяться в процессе работы.

          Подскажите, пожалуйста, как было бы лучше это сделать?

          Спасибо!

          1 ответ Последний ответ Ответить Цитировать 0

          Здравствуйте! Похоже, вам интересна эта беседа, но у вас пока нет учетной записи.

          Вы устали просматривать одни и те же посты каждый раз, когда заходите на сайт? После регистрации, вам не придётся искать обсуждения в которых вы принимали участие, настройте уведомления о новых сообщениях так как вам это удобно (по электронной почте или уведомлением). У вас появится возможность сохранять закладки и ставить лайки постам, чтобы выразить свою благодарность другим участникам сообщества.

          С вашими комментариями этот пост может стать ещё лучше 💗

          Зарегистрироваться Войти
          • Первое сообщение
            Последнее сообщение