Реализация просмотра SCADA-данных в мобильном IoT-приложении

Когда мастеру смены приходится возвращаться на пульт, чтобы проверить параметры оборудования, это замедляет работу и увеличивает простои. Мы разрабатываем мобильные SCADA-приложения, которые дают актуальные данные тегов, тренды и алерты прямо на смартфоне — без права управления. Наша команда реализует проект под ключ: от интеграции с OPC UA до последующей поддержки, обеспечивая надёжное и безопасное подключение.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Реализация просмотра SCADA-данных в мобильном IoT-приложении
Сложный
~1-2 недели
Часто задаваемые вопросы

Мы сталкивались с ситуацией, когда мастер смены вынужден возвращаться на пульт, чтобы проверить параметры печи. Мобильное SCADA-приложение решает эту проблему. Реализуем просмотр SCADA-данных под ключ: от интеграции с OPC UA до построения исторических трендов. Наши инженеры имеют 5+ лет опыта в разработке мобильных SCADA-решений и гарантируют надёжное подключение без права управления.

SCADA-система — Supervisory Control and Data Acquisition — живёт на стационарных рабочих станциях оператора. WinCC, Ignition, InduSoft, Aveva — у каждой свой формат данных, свои API, своя история совместимости. Мобильное приложение для просмотра SCADA-данных — это не замена стационарного клиента, а «вторые глаза» для мастера смены, который ходит по цеху. Задача: актуальные данные тегов, тренды, алерты — без права управления.

Почему OPC UA — универсальный путь к SCADA-данным?

Большинство современных SCADA-систем поддерживают OPC UA сервер. Это стандартный путь получить данные без проприетарных API. Мобильное приложение подключается к OPC UA серверу через TCP или WebSocket (OPC UA over WebSocket, UA Binary транспорт). OPC UA обеспечивает шифрование на транспортном уровне и аутентификацию, что критично для промышленной безопасности.

Библиотека для Android/Kotlin — Eclipse Milo через JVM-слой, или Eclipse4J. Для Flutter — нет официальной OPC UA библиотеки, используем Platform Channels к нативному клиенту или REST-шлюз:

// Android, Eclipse Milo OPC UA Client
val client = OpcUaClient.create(
    "opc.tcp://scada-server.factory.local:4840",
    endpointFilter = { endpoints ->
        endpoints.filter { it.securityMode == MessageSecurityMode.SignAndEncrypt }
            .minByOrNull { it.securityPolicyUri }
    },
    configConsumer = { configBuilder ->
        configBuilder.setIdentityProvider(
            UsernameProvider("operator", "password")
        )
        configBuilder.setRequestTimeout(UInteger.valueOf(5000))
    }
)
client.connect().get()
// Чтение тегов по NodeId
val nodeId = NodeId(2, "Furnace1.Temperature")
val dataValue = client.readValue(0.0, TimestampsToReturn.Both, nodeId).get()
val temperature = (dataValue.value.value as Float).toDouble()
val serverTimestamp = dataValue.serverTime

Для просмотра нескольких сотен тегов одновременно — подписка через OPC UA Subscription вместо polling:

val subscription = client.subscriptionManager
    .createSubscription(1000.0) // publishing interval 1000ms
    .get()
val monitoredItems = nodeIds.map { nodeId ->
    MonitoredItemCreateRequest(
        ReadValueId(nodeId, AttributeId.Value.uid(), null, null),
        MonitoringMode.Reporting,
        MonitoringParameters(
            UInteger.valueOf(clientHandleCounter++),
            500.0, // sampling interval
            null,
            UInteger.valueOf(10), // queue size
            true
        )
    )
}
subscription.createMonitoredItems(
    TimestampsToReturn.Both,
    monitoredItems,
    { item, value ->
        handleTagUpdate(item.readValueId.nodeId, value)
    }
).get()
Протокол Задержка обновления Безопасность Совместимость
OPC UA <50 мс (подписка) Шифрование + аутентификация Почти все современные SCADA
REST API 200–500 мс Зависит от реализации Только системы с REST модулем

Ignition SCADA: как получить данные через REST API?

Ignition (Inductive Automation) популярен на новых производствах. В нём есть WebDev модуль, который позволяет создавать REST endpoints прямо из Ignition Python scripts. Более современный путь — Ignition Perspective с WebSocket API для мобильных клиентов.

Для прямого REST доступа к тегам через Ignition Gateway REST API:

GET https://ignition.factory.com/system/webdev/api/tags?tagPaths= Furnaces/Furnace1/Temperature, Furnaces/Furnace1/Pressure
Authorization: Bearer {token}

Ignition отдаёт значения тегов с quality (Good, Bad, Uncertain) и timestamp. Quality — важный параметр: если датчик потерял связь, значение может быть устаревшим с quality = Bad, а UI должен это показать.

WinCC REST API через OpenPCS

WinCC (Siemens) — через REST API OpenPCS или через WinCC OA WebClient. Siemens TIA Portal поддерживает WinCC Unified, который имеет собственный WebSocket API через nginx-прокси. Для старых WinCC Classic — только OPC DA (DCOM) или OPC UA с установкой шлюза Matrikon/Kepware на сервере SCADA.

Как реализовать исторические тренды?

SCADA хранит историю тегов во встроенной БД (Ignition — MySQL/MSSQL, WinCC — SIMATIC historian). Запрос через OPC UA Historical Data Access (HDA):

val historyReadRequest = HistoryReadValueId(
    nodeId = NodeId(2, "Furnace1.Temperature"),
    indexRange = null,
    dataEncoding = null
)
val readDetails = ReadRawModifiedDetails(
    isReadModified = false,
    startTime = startDateTime.toOpcDateTime(),
    endTime = endDateTime.toOpcDateTime(),
    numValuesPerNode = UInteger.valueOf(500),
    isReturnBounds = true
)
val historyData = client.historyRead(
    readDetails,
    TimestampsToReturn.Source,
    false,
    listOf(historyReadRequest)
).get()

Для отображения трендов в Flutter — fl_chart с LineChart. При 500+ точках используем showingTooltipIndicators только для выбранного диапазона, иначе chart тормозит при скролле.

Как обеспечить безопасность доступа к SCADA-данным?

SCADA-данные — чувствительная информация. Несколько обязательных мер:

  • Мобильное приложение никогда не должно иметь прямой доступ к OPC UA серверу из интернета. Только через VPN или обратный прокси с mTLS.
  • Авторизация через корпоративный IdP (Active Directory / LDAP).
  • Только чтение: роль «mobile viewer» без прав на запись тегов.
  • Сессионные логи: кто читал какие теги и когда.

Что входит в работу?

  • Анализ SCADA-системы и выбор оптимального протокола (OPC UA, REST, WebSocket).
  • Настройка шлюза безопасности (VPN, mTLS).
  • Разработка мобильного приложения под iOS или Android (Kotlin/Swift/Flutter).
  • Интеграция real-time дашбордов и исторических трендов.
  • Тестирование на производственных данных.
  • Документация по эксплуатации.
  • Обучение операторов.
  • Поддержка в течение 1 месяца.

Разработка мобильного SCADA-вьювера с OPC UA и историческими трендами: 4-6 недель для одной платформы. Поддержка нескольких SCADA-систем одновременно и сложные дашборды с real-time чартами — 2-3 месяца. Стоимость рассчитывается индивидуально.

Свяжитесь с нами для оценки вашего проекта. Получите консультацию по интеграции SCADA-данных в мобильное приложение. Наш опыт и гарантия качества — основа надёжного решения.

Наши компетенции:

Последние работы

  • Разработка мобильного приложения для компании FEEDME
    Разработка мобильного приложения для компании FEEDME
    1010
  • Разработка мобильного приложения для компании XOOMER
    Разработка мобильного приложения для компании XOOMER
    903
  • Разработка мобильного приложения для компании RHL
    Разработка мобильного приложения для компании RHL
    1332
  • Разработка мобильного приложения для компании ZIPPY
    Разработка мобильного приложения для компании ZIPPY
    1180
  • Разработка мобильного приложения для компании Affhome
    Разработка мобильного приложения для компании Affhome
    1107
  • Разработка мобильного приложения для компании FLAVORS
    Разработка мобильного приложения для компании FLAVORS
    714