Плагины



  • @intrapro
    понятно, в 5-ой версии будет ?



  • @fanagor, в пятой будет точно. Возможно, что и в текущей добавим в следующем релизе



  • Добрый день.

    1. Написал на стороне контроллера wago аварийную программу. Если включен определённый выключатель, то переменные от плагина ih не принимаются, а состояния устройств изменяются по логике программы на стороне ПЛК. Но это ручной режим. Вопрос, можно ли на стороне wago отловить не поступление данных от плагина и сервера IH ? Не пингуется, отвалился, и тп.
    2. Modbus. Есть необходимость отделить часть устройств и завести их на отдельный преобразователь интерфейсов. Пробовал загрузить второй плагин modbus. Идея была на одном плагине один шлюз, на втором другой. На одном одни устройства, на другом другие. Настройки, скорость опроса, все разное. Не даёт. Точнее загрузился но не появился как новый. Есть такая возможность ?
    3. После перезагрузки сервера нужно руками перезапускать MySQL. Затем делать перезагрузку проекта. Сама база не стартует.
      Подскажете скрипт ? В сценарий запихать и запускать при перезагрузке.
      Спс.


  • Пользователь @fanagor написал в Плагины:

    Добрый день.

    1. Modbus. Есть необходимость отделить часть устройств и завести их на отдельный преобразователь интерфейсов. Пробовал загрузить второй плагин modbus. Идея была на одном плагине один шлюз, на втором другой. На одном одни устройства, на другом другие. Настройки, скорость опроса, все разное. Не даёт. Точнее загрузился но не появился как новый. Есть такая возможность ?

    Модбас однозадачный. К одному модбас устройству можно открыть одновременно один канал. Один клиент подключается к одному устройству и считывает/записывает все регистры.
    Одному клиенту дать один перечень регистров, второму - другой не получится.



  • По Modbus - можно запускать несколько экземпляров плагина. В терминологии modbus плагин IH является мастером, и их может быть сколько угодно. Подключение нескольких мастеров к одному клиенту определяется клиентом - сколько одновременно открытых соединений он разрешает. Многие контроллеры разрешают только одно подключение, но это не обязательно.
    Вопрос, так понимаю, о подключении к отдельному шлюзу - здесь не должно быть проблем. Новый экземпляр плагина добавляется кнопкой '+' - он заново не ставится, просто запускается новый процесс с другими настройками
    lotofplugins.png



  • @intrapro отлично, попробуем



  • Пользователь @fanagor написал в Плагины:

    Добрый день.

    1. Написал на стороне контроллера wago аварийную программу. Если включен определённый выключатель, то переменные от плагина ih не принимаются, а состояния устройств изменяются по логике программы на стороне ПЛК. Но это ручной режим. Вопрос, можно ли на стороне wago отловить не поступление данных от плагина и сервера IH ? Не пингуется, отвалился, и тп.

    Добрый день, потеря связи отслеживается библиотекой на контроллере и выполняется переподключение. Можно попробовать уменьшить таймаут TCP соединения на стороне сервера, так как по умолчанию с учетом проб keep-alive этот таймаут стандартно порядка 10 минут

    sudo sysctl -w net.ipv4.tcp_keepalive_intvl=15  // интервал между пробами=15 сек, по дефолту 75
    sudo sysctl -w net.ipv4.tcp_keepalive_probes=3  // количество проб=3, по дефолту 9
    

    Эти настройки влияют на все TCP соединения на сервере и сохранятся до перезагрузки. Если это поможет, можно будет прописать в конфиге sysctl

    Насколько часто происходит это зависание? Сервер и контроллер в одной сети?
    Можно попробовать установить Период синхронизации времени в параметрах плагина каждую минуту - две, тогда сервер будет постоянно слать время, и потерю связи можно будет увидеть.
    Но в целом ситуация странная, у себя мы пока ее воспроизвести не смогли.

    Modbus. Есть необходимость отделить часть устройств и завести их на отдельный преобразователь интерфейсов. Есть такая возможность ?

    Да, это абсолютно нормальный вариант использования. Ответ выше

    1. После перезагрузки сервера нужно руками перезапускать MySQL. Затем делать перезагрузку проекта. Сама база не стартует.
      Подскажете скрипт ? В сценарий запихать и запускать при перезагрузке.

    Нет, сценарий тут не нужен. База должна стартовать сама, это обеспечивается скриптами, которые ставятся при установке MySQL
    Какая у Вас ОС?
    Для начала проверьте в файле /etc/systemd/system/intrahouse-c.service последний блок, он должен быть таким (IH стартует после mysql)

    [Install]
    WantedBy=multi-user.target mysql.service
    


  • Пользователь @intrapro написал в Плагины:

    Нет, сценарий тут не нужен. База должна стартовать сама, это обеспечивается скриптами, которые ставятся при установке MySQL
    Какая у Вас ОС?
    Для начала проверьте в файле /etc/systemd/system/intrahouse-c.service последний блок, он должен быть таким (IH стартует после mysql)

    OC Ubuntu 18.04
    В файле все гуд ( WantedBy=multi-user.target mysql.service )
    Еще раз проверил, после отключения питания IH запускается а база нет.
    Делаешь sudo systemctl restart mysql, затем рестарт IH. База доступна.
    Изначально база криво могла встать ?



  • @fanagor, возможно, при запуске сервера что-то мешает MySQL запуститься.

    Сразу после перезагрузки, не запуская вручную, посмотрите статус службы:

     sudo systemctl status mysql -l
    

    Еще можно глянуть лог ошибок: /var/log/mysql/error.log



  • Пользователь @intrapro написал в Плагины:

    @fanagor, добрый день!

    Можно ли из сценария делать перезапуск плагина, или обновлять каналы ?

    Сейчас можно отправлять плагину из сценария любые команды, кроме перезапуска.
    Команды плагина прописаны в манифесте плагина в разделе "commands".
    Например:

    // Обновить значения переменных для плагина Wago IP
    this.plugincommand({ unit: 'wip1', command: 'getdata' });
    
    // Получить каналы с контроллера:
    this.plugincommand({ unit: 'wip1', command: 'channels' });
    

    По поводу перезапуска плагина, пока такой возможности нет.
    Рассматривается два варианта:

    1. Команды stop-start-restart из сценария
    2. Введение тайм-аута плагина, за которым следит сервер и перезагружает плагин, если от него не поступает сообщений в течение заданного тайм-аута.

    в сценарий добавил команду this.plugincommand({ unit: 'wip1', command: 'getdata' });
    лог плагина WAGO
    ошибка IH.png
    но ничего не происходит, переменные не обновляются. Из самого плагина кнопка обновить переменные стабильно работает. Что не так ? Вернее где ?



  • Пользователь @fanagor написал в Плагины:

    в сценарий добавил команду this.plugincommand({ unit: 'wip1', command: 'getdata' });
    лог плагина WAGO
    ошибка IH.png
    но ничего не происходит, переменные не обновляются. Из самого плагина кнопка обновить переменные стабильно работает. Что не так ? Вернее где ?

    Да, извините за неточность. В команде нужен еще любой канал контроллера. Так как плагин поддерживает подключение нескольких контроллеров, ему нужен любой канал, из него плагин извлекает идентификатор конкретного контроллера (часть после подчеркивания). Интерактивно вам тоже нужно выбрать строку в каналах, иначе команды нет в меню.

    // Обновить значения переменных для плагина Wago IP
    this.plugincommand({ unit: 'wip1', command: 'getdata', id:'STATUS_21C102'});
    


  • @intrapro, спасибо, теперь все работает.



  • Пользователь @intrapro написал в Плагины:

    Насколько часто происходит это зависание? Сервер и контроллер в одной сети?
    Можно попробовать установить Период синхронизации времени в параметрах плагина каждую минуту - две, тогда сервер будет постоянно слать время, и потерю связи можно будет увидеть.
    Но в целом ситуация странная, у себя мы пока ее воспроизвести не смогли.

    когда зависает вот что пишет отладчик плагина wago

    Завис wago.png

    Да, в одной сети, раз в сутки-двое виснет. Нет четкого времени.
    Лечится командой обновить значения с каналов или получить команды. Уже добавил в расписание сценарий. который раз в час обновляет.
    Но это костыль. Проблема то есть.



  • можно создать плагин для устройств бренда Miele? https://www.miele.com/developer/swagger-ui/index.html
    И конешно lg телевизоры https://youtu.be/f0i2R1cMWBg



  • Пользователь @fanagor написал в Плагины:

    Пользователь @intrapro написал в Плагины:

    Насколько часто происходит это зависание? Сервер и контроллер в одной сети?
    Можно попробовать установить Период синхронизации времени в параметрах плагина каждую минуту - две, тогда сервер будет постоянно слать время, и потерю связи можно будет увидеть.
    Но в целом ситуация странная, у себя мы пока ее воспроизвести не смогли.

    когда зависает вот что пишет отладчик плагина wago

    Завис wago.png

    Да, в одной сети, раз в сутки-двое виснет. Нет четкого времени.
    Лечится командой обновить значения с каналов или получить команды. Уже добавил в расписание сценарий. который раз в час обновляет.
    Но это костыль. Проблема то есть.

    Нет ответа ?



  • Возможно ли в плагин WAGO все-таки добавить команду перезапуска. Возможно из командной строки, либо что необходимо отредактировать в самом плагине. Не получается добиться стабильной работы. Раз в неделю виснет. Перезагрузка самого контроллера WAGO не помогает. Команда обновить данные помогает в 8 случаях из 10. Однозначно лечится: "Остановить плагин" затем "Запустить плагин", затем перезагрузить IH, "Получить каналы", "Обновить значение переменных". Перезагрузить, получить, обновить,- знаю как сделать, а вот остановить и запустить нет.



  • @fanagor
    Когда перезагружаете iH, нет необходимости перед этим перезагружать плагин.
    При запуске сервиса iH все плагины запускаются вновь автоматически.



  • @intrahouse, спасибо за добавление возможности из сценария делать перезапуск плагинов. Решило множество вопросов. То, что нужно !



  • Вопрос, где в проекте хранятся настройки плагинов ? Не сами плагины, а их настройки ip, каналы и т.д.
    При перезагрузке IH возникает ситуация, что плагины вдруг становятся "чистые": ip по умолчанию, каналов нет и т.д . Слетают все настройки. Загружаешь резервную копию проекта - настройки восстанавливаются.
    Спасибо.



  • Все хранится в папке jbase проекта: /var/lib/intrahouse-c/projects/YourProject/jbase

    Настройки плагинов в файле units.json

    Настройки каналов и привязки к устройствам devhard.json

    Для плагинов, которые сами передают свои каналы, создаются файлы во вложенной папке channels отдельно для каждого экземпляра плагина, например: channels/wip1.json, channels/wip2.json

    Привязка канал-устройство так же в devhard.json


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