Інтеграція ThingsBoard у мобільний IoT-додаток

При розробці мобільного IoT-додатку часто виникає задача інтеграції з ThingsBoard — популярною open-source платформою для збору та аналізу телеметрії. Пряме використання її веб-інтерфейсу не підходить для мобільних клієнтів: потрібна кастомна інтеграція через REST API та WebSocket. Ми розповімо, як

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Інтеграція ThingsBoard у мобільний IoT-додаток
Середній
~3-5 днів

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

Часті запитання

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

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    897
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    784
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1218
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1081
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1004
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    600

При розробці мобільного IoT-додатку часто виникає задача інтеграції з ThingsBoard — популярною open-source платформою для збору та аналізу телеметрії. Пряме використання її веб-інтерфейсу не підходить для мобільних клієнтів: потрібна кастомна інтеграція через REST API та WebSocket. Ми розповімо, як правильно організувати такий зв'язок, щоб додаток працював стабільно, без втрати даних та з мінімальною затримкою.

ThingsBoard надає REST API v2 для авторизації, роботи з телеметрією, RPC-командами та управлінням пристроями. Однак є підводні камені: timeouts, reconnection logic, ієрархія активів. У цій статті ми детально розберемо типові сценарії та дамо робочі приклади коду на Flutter (Dart). Наш досвід — 5+ років інтеграції ThingsBoard у проектах розумного дому, промислового IoT та Asset Tracking. Ми гарантуємо, що запропоновані рішення перевірені в бою.

Як авторизуватися в ThingsBoard API на мобільному пристрої?

Авторизація: POST /api/auth/login з {"username": "...", "password": "..."} → JWT token + refresh token. Токен живе 2,5 години, refresh — 7 днів. Помилка 401 після закінчення токена — робимо silent refresh через interceptor.

На Flutter використовуємо dio з interceptor:

dio.interceptors.add(InterceptorsWrapper( onError: (err, handler) async { if (err.response?.statusCode == 401) { final newToken = await _refreshToken(); err.requestOptions.headers['X-Authorization'] = 'Bearer $newToken'; return handler.resolve(await dio.fetch(err.requestOptions)); } return handler.next(err); }, )); 

Основні endpoints для мобільного додатку:

  • GET /api/plugins/telemetry/DEVICE/{deviceId}/values/timeseries — останні значення телеметрії
  • GET /api/plugins/telemetry/DEVICE/{deviceId}/values/attributes — атрибути (конфігурація, фіксовані параметри)
  • POST /api/plugins/rpc/twoway/{deviceId} — RPC-команда з очікуванням відповіді від пристрою
  • POST /api/plugins/rpc/oneway/{deviceId} — RPC без очікування відповіді

WebSocket для реалтайм-телеметрії: що потрібно врахувати?

Polling телеметрії кожні 5 секунд — неправильний підхід. ThingsBoard підтримує WebSocket API для підписки на зміни:

wss://your-host/api/ws/plugins/telemetry?token=JWT_TOKEN 

Після підключення відправляємо subscription request:

{ "tsSubCmds": [{ "entityType": "DEVICE", "entityId": "device-uuid", "scope": "LATEST_TELEMETRY", "cmdId": 1 }] } 

Сервер надсилає оновлення при кожній зміні телеметрії. На Flutter керуємо підключенням через web_socket_channel. Один WebSocket на весь додаток — мультиплексування через cmdId. При втраті з'єднання — reconnect з exponential backoff, повторна підписка на всі активні канали.

WebSocket у 10 разів ефективніший за polling за навантаженням на мережу та батарею. У таблиці нижче — порівняння.

Параметр Polling (кожні 5 сек) WebSocket
Завантаження мережі Високе (запит+відповідь) Низьке (тільки зміни)
Затримка До 5 секунд <1 секунда
Навантаження на сервер N запитів/сек 0 при idle
Енергоспоживання Вище (часті пробудження радіо) Нижче (постійне з'єднання)

Як керувати пристроями через RPC?

Two-way RPC — це синхронний запит до пристрою через ThingsBoard Rule Engine. Пристрій повинен бути онлайн та підписаний на v1/devices/me/rpc/request/+. Таймаут за замовчуванням 10 секунд, налаштовується в запиті.

final response = await dio.post( '/api/plugins/rpc/twoway/$deviceId', data: {"method": "setTemperature", "params": {"value": 22}}, ); // response.data містить відповідь від пристрою 

One-way RPC використовуємо для команд без підтвердження: ввімкнути/вимкнути, відкрити/закрити. Two-way — для команд, де потрібно знати результат: отримати поточні показники, перевірити статус.

Характеристика One-way RPC Two-way RPC
Очікування відповіді Ні Так (до 10 сек)
Використання Команди без підтвердження Команди, де потрібен результат
Таймаут Не застосовується Налаштовуваний
Приклад Ввімкнути світло Запросити температуру

Чому ієрархія Assets вимагає рекурсивного завантаження?

ThingsBoard підтримує Assets — логічні групування пристроїв (будівля → поверх → приміщення → пристрій). Для додатку розумної будівлі це природна модель.

GET /api/relations?fromId={assetId}&fromType=ASSET&relationType=Contains — отримуємо всі дочірні об'єкти Asset. Будуємо дерево на клієнті. Важливо: API не повертає дерево за один запит — потрібне рекурсивне завантаження або денормалізований endpoint на вашому бекенді-проксі.

Типові проблеми та їх вирішення

  • WebSocket закривається після 30 хвилин бездіяльності — реалізуйте пінг кожні 5 хвилин через відправлення subscription update.
  • Multi-tenancy в Community Edition — для споживчих додатків потрібен Customer на кожного користувача. Якщо пристроїв >1000, розгляньте Professional Edition.
  • RPC таймаути — завжди вказуйте timeout у запиті, інакше можна заблокувати UI.

Процес інтеграції

  1. Аналітика та проектування архітектури (3-5 днів).
  2. Розробка модуля авторизації та REST-клієнта (5-7 днів).
  3. Реалізація WebSocket-підписки з реконнектом (3-5 днів).
  4. Інтеграція RPC-команд (2-3 дні).
  5. Робота з ієрархією Assets (3-5 днів).
  6. Тестування на стенді та завантаження в магазини (3-5 днів).

Що входить в роботу?

  • Документація з архітектури інтеграції та API.
  • Вихідний код модуля для Flutter (або React Native) з підтримкою REST + WebSocket.
  • Тестовий стенд з демо-пристроями для налагодження.
  • Навчання вашої команди (2-годинна сесія).
  • Гарантія 3 місяці на працездатність інтеграції.

Наші компетенції: 5+ років досвіду в IoT-розробці, 30+ проектів з ThingsBoard, сертифіковані спеціалісти з Flutter та Kotlin. Цитата з документації ThingsBoard: 'Платформа забезпечує надійний збір телеметрії та віддалене управління пристроями.'

Строки та вартість (індивідуальний розрахунок)

REST API інтеграція, WebSocket телеметрія, RPC-команди — 2–3 тижні. Ієрархія Assets, багатокористувацький режим, кешування — ще 2 тижні. Вартість залежить від використовуваного видання ThingsBoard та кількості пристроїв. Ми оцінимо ваш проект безкоштовно. Зв'яжіться з нами для консультації. Замовте інтеграцію ThingsBoard — отримайте надійне мобільне рішення з гарантією.