Этот проект представляет собой комплексное решение для мониторинга и логирования тегов OPC UA сервера в базу данных PostgreSQL с визуализацией данных в режиме реального времени с помощью Grafana. Приложение построено с использованием Spring Boot, Grafana и Docker, что обеспечивает простую интеграцию, хранение данных и их визуальный анализ.
- OPC UA клиент: Подключается к OPC UA серверу и подписывается на указанные теги для сбора данных.
- Логирование данных: Сохраняет значения тегов в базе данных PostgreSQL.
- Визуализация в реальном времени: Использует Grafana для визуализации собранных данных в режиме реального времени, предоставляет дашборды с графиками и текущими значениями.
- Обработка ошибок: Включает обработку ошибок для управления переподключением к OPC UA серверу и исключениями при обработке данных.
- Docker-контейнеры: Использует Docker Compose для развертывания PostgreSQL и Grafana, что облегчает развертывание проекта.
- Java, Spring Boot
- PostgreSQL
- OPC UA (Eclipse Milo)
- Grafana
- Docker, Docker Compose
- Установленные Docker и Docker Compose
- Java Development Kit (JDK) 17 или выше
- Maven
git clone https://github.com/Bunchiek/scada-service.gitНастройте Application.yml файл в корневой директории для указания переменных окружения для подключения к базе данных:
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_DB=opcua_dbНастройте tags.yml для динамического добавления\удаления тегов из OPC сервера:
opcua:
tags:
- "Simulation Examples.Functions.Random1"
- "Simulation Examples.Functions.Random2"
- "Simulation Examples.Functions.Random3"
...Соберите приложение Spring Boot с помощью Maven:
mvn clean installЭтот проект включает docker-compose.yml файл для запуска контейнеров PostgreSQL, Grafana и Prometheus. Выполните команду для запуска всех сервисов:
docker-compose up -d- Grafana: Доступна по адресу http://localhost:3000
- PostgreSQL: Работает на порту 5432
- Откройте Grafana в браузере по адресу: http://localhost:3000.
- Войдите, используя стандартные учетные данные:
- Логин:
admin - Пароль:
admin
- Логин:
- Добавьте новый источник данных:
- Тип: PostgreSQL
- Хост:
postgres:5432 - База данных:
opcua_db - Пользователь:
postgres - Пароль:
postgres
- Создайте дашборды и панели для визуализации данных, хранящихся в таблице
opcua_data.
Благодаря записанным в БД данным мы можем отслеживать поведение того или иного тега

Здесь дополнительно настроен аларминг, если показания (допустим температура) привысит 80 градусов, то будет оповещение

