Skip to content

Latest commit

 

History

33 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IndustryBridgeBot

Настраиваемый Telegram бот (для Windows), который читает и записывает переменные промышленных ПЛК по протоколам OPC DA 2.0 и OPC UA и предоставляет к ним удобный доступ через Telegram.

🇬🇧 English version

Возможности

Источники данных

  • OPC DA 2.0 — классическое COM/DCOM-подключение к серверам на этом же ПК или в сети.
  • OPC UA — подключение по opc.tcp://, обзор дерева сервера, периодическое чтение через подписку, запись значений; распознаются как встроенные типы OPC UA, так и элементарные типы IEC 61131-3 (BYTE/WORD/DWORD/TIME и др.).
  • Оба источника работают одновременно, тэги хранятся в едином реестре и одинаково доступны для чтения, записи и использования в сообщениях бота.
  • Обработка значений тэга: масштабирующий коэффициент и подстановка текстовых значений (например, 0 → "Выключено").

Конфигурируемый бот

  • Сообщения — текст с произвольной вёрстовкой Markdown и подстановкой текущих значений тэгов прямо в текст (#TAG:id#).
  • Сообщения с ожиданием ответа — бот присылает вопрос, присланное пользователем значение проверяется и записывается в выбранный тэг ПЛК.
  • Встраиваемые кнопки — с произвольным набором сообщений и/или фиксированной записью значений в тэги по нажатию.
  • Команды (/имя_команды) — запускают отправку набора сообщений и/или запись тэгов; могут быть добавлены в главное меню бота.
  • События — по изменению значения тэга (условие "больше/меньше/равно/изменилось", с гистерезисом) или по расписанию (ежеминутно/ежечасно/ежедневно/еженедельно/ежемесячно/ежегодно).

Пользователи и права доступа

  • Роли: незарегистрированный / зарегистрированный / администратор / забаненный.
  • При первом обращении нового пользователя администраторам приходит уведомление с кнопками "Зарегистрировать" и "Забанить".
  • Все команды и действия по умолчанию требуют регистрации; отдельные команды/события/кнопки можно ограничить более высоким уровнем доступа.
  • Панель администратора в самом Telegram (/admin): список пользователей, статус OPC-соединения, перезапуск опроса, перезапуск приложения.

Приложение

  • Работа в системном трее, автозапуск опроса OPC и бота при старте приложения.
  • Сохранение конфигурации (тэги, сообщения, команды, кнопки, события, пользователи) в JSON, включая автосохранение при закрытии.

Как это устроено

  • src/sourcedrivers/ — драйверы источников данных: OPCDADriver/COPCClient (COM/DCOM, классический OPC DA) и OPCUADriver/COPCUAClient (поверх Qt6::OpcUa), объединённые общим интерфейсом DriverInterface.
  • src/datatag*, src/datatagregistry* — единая модель тэга (DataTag и его специализации DataTagOpcDA/DataTagOpcUA) и реестр тэгов приложения.
  • src/tgobjects/ — доменная логика Telegram-бота: пользователи и права (TGParent, USER_TYPE), сценарии (TGMessage, TGMessageWaitAnswer, TGTriggerUserCommand, TGTriggerTagValue, TGScheduledEvent, TGButtonWCallback) и их менеджер TgBotManager.
  • third_party/tgbot/ — готовая сборка библиотеки tgbot-cpp (динамическая TgBot.dll) для работы с Telegram Bot API.
  • src/*widget*, src/*configurationwidget* — Qt Widgets интерфейс конфигурации: обзор и просмотр тэгов, настройка сообщений/команд/кнопок/событий, настройки самого бота.
  • src/logger.* — запись лога в файл с ротацией по размеру; поддерживает фильтрацию по минимальному уровню (см. раздел "Настройка").

Зависимости для сборки

  • Qt 6 (модули Widgets, OpcUa) — сборка велась и тестировалась на Qt 6.10.
  • OPC Core Components — заголовки классического OPC DA (OPC_Foundation/Include).
  • OpenSSL, libcurl, zlib — используются tgbot-cpp для работы с Telegram Bot API (пути ожидаются в third_party/openssl, third_party/curl, third_party/zlib).
  • Boost — заголовочные зависимости tgbot-cpp (asio).
  • Компилятор с поддержкой C++20 (сборка проверялась на MinGW из комплекта Qt).
  • Windows

Сборка

cmake -S . -B build -G Ninja ^
  -DCMAKE_PREFIX_PATH="C:/Qt/6.10.1/mingw_64"
cmake --build build

Перед сборкой убедитесь, что пути к OPC Foundation Core Components и содержимому third_party/ (tgbot, openssl, curl, zlib) на месте — они подключаются в src/CMakeLists.txt относительными путями от корня репозитория.

Настройка

Вся конфигурация — источники данных, тэги, сообщения, команды, кнопки, события и права пользователей — выполняется через графический интерфейс приложения.

Токен Telegram-бота указывается один раз через параметр запуска и сохраняется в зашифрованном виде в bin/token.dat:

IndustryBridgeBot.exe -token="<токен>"
IndustryBridgeBot.exe -show-token

Для этого рядом с исполняемым файлом есть готовые industrybridgebot_set_token.bat и industrybridgebot_show_token.bat.

bin/settings.json (необязательный) — дополнительные параметры запуска:

{
  "start_application_on_tray": true,
  "log_level": "Warning"
}
  • start_application_on_tray — запуск сразу свёрнутым в системный трей.
  • log_level — минимальный уровень логирования (Debug/Info/Warning/Critical/Fatal). Если указан, в лог попадают только сообщения самого приложения не ниже этого уровня (сторонний шум, например диагностика плагина OPC UA, отфильтровывается). Если не указан (или значение не распознано, например None) — в лог попадает всё, как раньше.

About

Telegram bot able to provide data from industrial PLC via OPC DA 2.0 interface.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages