Мобільний моніторинг промислового обладнання: IIoT-застосунок

Оператору складно встежити за потоком даних із сотень датчиків на виробництві, а критичні відхилення можуть залишитися непоміченими. Ми розробляємо мобільні IIoT-застосунки, які збирають телеметрію з обладнання та в реальному часі показують лише важливе. Наша команда реалізує проєкт під ключ — від архітектури збору даних до сповіщень на смартфоні, забезпечуючи стабільну роботу та подальшу підтримку.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Мобільний моніторинг промислового обладнання: IIoT-застосунок

Інтеграція з пристроями (BLE, NFC, IoT, HomeKit)Складнийвід 1 тижня до 3 місяців
Часті запитання

Уявіть: виробнича лінія, 500 датчиків вібрації, температури та тиску. Щосекунди — 250 000 семплів. Оператор не встигає стежити за всім. Потрібен мобільний застосунок, який покаже лише критичні відхилення. Ми розробляємо такі рішення — від збору даних з PLC до сповіщень на смартфоні. Зв'яжіться з нами для обговорення архітектури вашого IIoT-рішення. Наш досвід — понад 10 років у промисловому інтернеті речей (IIoT), понад 50 проєктів для заводів. Без правильної архітектури застосунок захлинеться в потоці даних. Тому на першому етапі ми проєктуємо систему збору та нормалізації даних на Edge-шлюзах, а потім будуємо надійний real-time канал передачі.

Мобільний моніторинг промислового обладнання: ключові технічні рішення

Edge-компонент — промисловий шлюз (Moxa, Advantech, Siemens IPC) або кастомний Linux-сервер — нормалізує дані з різних протоколів та публікує агрегати в MQTT або віддає через REST/WebSocket. Для мобільного застосунку важливі два потоки: реальний час — поточні значення ключових параметрів, оновлення раз на 1-5 секунд через WebSocket; та історія — тренди за зміну, добу, тиждень через REST API з пагінацією та агрегацією.

Як влаштований збір даних у реальному часі?

На рівні обладнання дані збирає Edge-компонент: промисловий шлюз (Moxa, Advantech, Siemens IPC) або кастомний Linux-сервер. Він нормалізує дані з різних протоколів (OPC-UA, Modbus, MQTT) та публікує агрегати в MQTT або віддає через REST/WebSocket.

Датчики → PLC / Edge Gateway → Time-Series DB (InfluxDB / TimescaleDB)
↓
Backend API (REST + WebSocket)
↓
Мобільний застосунок

Агрегація та нормалізація на Edge-шлюзі — мобільний моніторинг промислового

Згідно з документацією OPC-UA Part 6, шлюз перетворює адресний простір OPC-UA на плоскі теги. Для Modbus — мапінг регістрів на фізичні величини (наприклад, регістр 40001 = температура з коефіцієнтом 0.1). Агрегація: середнє, мінімум, максимум за вікно 1 секунда. Це знижує трафік у 10-100 разів.

Протокол Застосування Частота опитування Складність інтеграції
OPC-UA PLC, CNC 1-1000 мс Середня
Modbus RTU/TCP Датчики, контролери 10-1000 мс Низька
MQTT IoT-пристрої 1-60 с Низька
Siemens S7 SIMATIC S7 10-100 мс Висока

Чому архітектура збору даних — головний виклик?

Використовуємо Flutter з WebSocket. Для надійності — автоматичне перепідключення з експоненційною затримкою.

class EquipmentMonitorRepository {
  WebSocketChannel? _channel;
  final StreamController<EquipmentState> _stateController = StreamController.broadcast();
  Stream<EquipmentState> get stateStream => _stateController.stream;

  void connect(String equipmentId, String token) {
    _channel = WebSocketChannel.connect(
      Uri.parse('wss://iiot.factory.com/ws/equipment/$equipmentId'),
    );
    _channel!.stream
        .map((event) => json.decode(event as String))
        .map(EquipmentState.fromJson)
        .listen(
          _stateController.add,
          onError: _handleError,
          onDone: _scheduleReconnect,
        );
    _channel!.sink.add(json.encode({'auth': token}));
  }

  void _scheduleReconnect() {
    Future.delayed(const Duration(seconds: 5), () => connect(_lastId, _lastToken));
  }
}
Приклад реалізації BLoC для керування станом
class EquipmentMonitorBloc extends Bloc<EquipmentEvent, EquipmentMonitorState> {
  StreamSubscription<EquipmentState>? _subscription;

  EquipmentMonitorBloc(this._repository) : super(EquipmentMonitorInitial()) {
    on<StartMonitoring>((event, emit) async {
      _subscription = _repository.stateStream.listen(
        (state) => add(StateUpdated(state)),
      );
      _repository.connect(event.equipmentId, event.token);
    });

    on<StateUpdated>((event, emit) {
      final current = event.state;
      final isAlert = current.temperature > 85.0 || current.vibrationRms > 12.5;
      emit(EquipmentMonitorRunning(state: current, hasAlert: isAlert));
    });
  }
}

WebSocket у 20 разів швидший за HTTP polling при передачі телеметрії. Порівняйте:

Спосіб Затримка Навантаження на батарею Навантаження на сервер
HTTP polling >1 сек Висока Висока
WebSocket <100 мс Низька Низька
gRPC-stream <50 мс Середня Середня

Візуалізація трендів та відхилень

Для історичних даних використовуємо fl_chart (Flutter) або MPAndroidChart. Ключова оптимізація — агрегація на стороні API. Запит до InfluxDB-based API:

GET /api/v1/equipment/{id}/trend? parameter=temperature& from=2023-01-15T06:00:00Z& to=2023-01-15T18:00:00Z& resolution=300 # агрегація по 5 хвилин 

Відповідь — масив із 144 точок замість 43 200. Чарт малює без фризів.

Baseline та відхилення

Корисна функція — відображення baseline (нормального діапазону) на графіку. Якщо струм двигуна в нормі 12-15А, виділяємо зону, і оператор одразу бачить відхилення:

LineChartData buildTrendChart(List<TrendPoint> data, Range baseline) {
  return LineChartData(
    extraLinesData: ExtraLinesData(
      horizontalLines: [
        HorizontalLine(y: baseline.min, color: Colors.green.withOpacity(0.3)),
        HorizontalLine(y: baseline.max, color: Colors.green.withOpacity(0.3)),
      ],
    ),
    betweenBarsData: [
      BetweenBarsData(
        fromIndex: 0,
        toIndex: 0,
        color: Colors.green.withOpacity(0.1),
      ),
    ],
    lineBarsData: [
      LineChartBarData(
        spots: data.map((p) => FlSpot(p.timestamp.toDouble(), p.value)).toList(),
        color: data.any((p) => p.value > baseline.max || p.value < baseline.min) ? Colors.red : Colors.blue,
      ),
    ],
  );
}

Що потрібно врахувати при розробці?

  • Агрегація даних — не передавати сирі семпли, лише агрегати.
  • Офлайн-режим — кешувати останні показники та алерти в локальній БД.
  • Ескалація алертів — якщо оператор не прийняв алерт за 5 хвилин, сповістити майстра.
  • Безпека — TLS, JWT, шифрування на пристрої.
  • Тестування — симуляція до 10 000 пристроїв.

Для зниження трафіку на Edge-шлюзі застосовується ковзне вікно: з 25 600 семплів з вібродатчика формується 1-10 агрегатів — середнє, пік, RMS, частота основного тону.

Етапи розробки

  1. Аудит джерел даних — розбір протоколів та частоти опитування.
  2. Проектування архітектури — вибір Edge-компонента та Time-Series DB.
  3. Розробка бекенду — API агрегації, WebSocket, алерти.
  4. Розробка мобільного застосунку — UI, тренди, push-сповіщення.
  5. Інтеграція та тестування — на реальному обладнанні.
  6. Деплой та підтримка — App Store / Google Play, моніторинг.

Що входить у результат?

  • Вихідний код мобільного застосунку (iOS/Android/Flutter).
  • Бекенд-сервіс з API та WebSocket.
  • Документація з інтеграції та розгортання.
  • Доступ до репозиторію та CI/CD.
  • Навчання операторів (до 2 годин).
  • Гарантія 6 місяців на баги.

Вартість та терміни

Розробка застосунку для одного типу обладнання з WebSocket та трендами — від 4 до 8 тижнів. Повний цикл з офлайн-режимом та ескалацією — від 2 до 4 місяців. Вартість розраховується індивідуально після аналізу ваших джерел даних. Типова економія від впровадження становить мільйони гривень на рік за рахунок зниження простоїв та витрат на позапланові зупинки. Замовте консультацію інженера з мобільної розробки.

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

Останні роботи

  • Розробка мобільного додатка для компанії FEEDME
    Розробка мобільного додатка для компанії FEEDME
    1011
  • Розробка мобільного додатку для компанії XOOMER
    Розробка мобільного додатку для компанії XOOMER
    903
  • Розробка мобільного додатку для компанії RHL
    Розробка мобільного додатку для компанії RHL
    1332
  • Розробка мобільного додатку для компанії ZIPPY
    Розробка мобільного додатку для компанії ZIPPY
    1180
  • Розробка мобільного додатку для компанії Affhome
    Розробка мобільного додатку для компанії Affhome
    1107
  • Розробка мобільного додатку для компанії FLAVORS
    Розробка мобільного додатку для компанії FLAVORS
    714