Настраиваемый Telegram бот (для Windows), который читает и записывает переменные промышленных ПЛК по протоколам OPC DA 2.0 и OPC UA и предоставляет к ним удобный доступ через Telegram.
Источники данных
- 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) — в лог попадает всё, как раньше.


