Інтеграція CoAP-протоколу для IoT-пристроїв у мобільному додатку

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

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

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

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

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

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

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

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

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Інтеграція CoAP-протоколу для IoT-пристроїв у мобільному додатку

CoAP (Constrained Application Protocol, RFC 7252) — це HTTP для мікроконтролерів. Семантика та сама: GET, POST, PUT, DELETE, коди відповідей як у HTTP (2.05 Content = 200, 4.04 Not Found = 404), URL-ресурси. Але працює поверх UDP, а не TCP, займає десятки байтів замість сотень, і розроблений для пристроїв з 10 КБ RAM і CR2032 живленням.

Мобільний додаток, який спілкується з такими пристроями безпосередньо або через CoAP-proxy — нішеве, але зростаюче поле. Thread-мережі (Matter-стандартний розумний дім), промислові датчики, медичні носимі пристрої — там CoAP.

UDP і втрати пакетів: як CoAP вирішує надійність

CoAP визначає два типи повідомлень:

  • CON (Confirmable) — відправник чекає ACK. При відсутності — exponential backoff і повтор (по замовчуванню: 2 спроби, інтервал 2–32 секунди). Аналог TCP-гарантій.
  • NON (Non-confirmable) — fire and forget. Для телеметрії з високою частотою оновлення.

Кожне CON-повідомлення несе Message ID (2 байти) для дедупліки — одержувач кешує останні оброблені ID і ігнорує повторення. Строк зберігання в кеші — EXCHANGE_LIFETIME (247 секунд по RFC). При роботі через NAT mobile → IoT-мережу врахуйте, що NAT binding теж має timeout (~30 секунд для UDP через багато carrier NAT).

Observe: підписка на ресурс без поллінгу

RFC 7641 додає Observe option — аналог WebSocket subscription для CoAP. Клієнт відправляє GET /sensor/temperature з Observe: 0 (subscribe). Сервер відправляє поточне значення й потім сповіщення при кожній зміні. Observe: 1 — відписка.

Це ключова фіча для мобільного IoT-клієнта: замість поллінгу кожні 5 секунд — один запит, серверні push'и. Обмеження: по RFC сервер ведучи список спостерігачів. При смені IP клієнта (мобільний інтернет, Wi-Fi → 4G) сервер не знає про зміну — потрібно повторно реєструвати Observe з нової адреси.

На практиці: при кожній смені мережі (визначаємо через ConnectivityManager.NetworkCallback на Android, NWPathMonitor на iOS) — перевідправляємо всі активні Observe-запити.

DTLS: безпека поверх UDP

CoAP без шифрування — небезпечен для production. DTLS (Datagram TLS, RFC 6347) — TLS-аналог для UDP. Handshake важчий за TCP TLS (4–6 RTT проти 1–2 для TLS 1.3), що критично для пристроїв з повільними процесорами.

Профілі безпеки CoAP:

  • NoSec — без шифрування. Тільки для ізольованих мереж.
  • PreSharedKey (PSK) — симетричний ключ, прошитий в пристрій на фабриці. Найпоширеніший у промислових сценаріях.
  • RawPublicKey — без PKI-інфраструктури, але з публічними ключами.
  • Certificate — повноцінна PKI. Рідко на constrained-пристроях.

Для мобільного клієнта, який підключається до PSK-пристроїв: безпечно зберігайте PSK-ключі (Keychain / EncryptedSharedPreferences) та реалізуйте DTLS-handshake через бібліотеку з PSK-підтримкою.

Клієнтські бібліотеки для мобіля

CoAP-бібліотек для мобіля значно менше, ніж MQTT. Реальні варіанти:

Платформа Бібліотека DTLS Observe
Android Californium (Eclipse) + (via Scandium) +
iOS libcoap (C, via FFI) + +
Flutter coap (pub.dev) частково +
React Native немає готового

Для React Native єдиний робочий шлях — нативний модуль (Californium на Android, libcoap на iOS через Objective-C bridge) або CoAP-to-HTTP proxy на бекенді.

Californium (org.eclipse.californium:californium-core) — найзрілішша реалізація. Observe через CoapClient.observe() з CoapHandler. DTLS через окремий scandium артефакт. Приклад ініціалізації PSK-з'єднання:

DtlsConnectorConfig config = new DtlsConnectorConfig.Builder()
    .setPskStore(new StaticPskStore("device-id", pskBytes))
    .build();
DTLSConnector connector = new DTLSConnector(config);
CoapEndpoint endpoint = new CoapEndpoint.Builder()
    .setConnector(connector).build();
CoapClient client = new CoapClient("coaps://192.168.1.100/sensor/temperature");
client.setEndpoint(endpoint);

Для iOS libcoap компілюється через CocoaPods з кастомним podspec або через SPM як binary target (потрібна пересборка під arm64/x86_64). Це не 15-хвилинна задача.

CoAP через CoAP-HTTP proxy

Якщо пристрої в ізольованій IoT-мережі, а мобільний клієнт повинен спілкуватись через інтернет — CoAP-to-HTTP proxy (або CoAP-to-MQTT proxy) знімає складність з мобільної сторони. Eclipse Hono, AWS IoT Core з CoAP endpoint, або самостійно розгорнутий Californium-proxy.

Мобільний клієнт працює через звичайні HTTPS/WebSocket, proxy транслює в CoAP. Втрачаємо прямий Observe (потрібна його емуляція через SSE або WebSocket на рівні proxy), отримуємо простоту клієнтського коду й надійність TCP.

Оцінка та орієнтири

CoAP-інтеграція — нестандартна задача. Орієнтири залежать від сценарію: якщо через proxy — 2–3 тижні. Пряма CoAP з DTLS на нативних платформах — 4–8 тижнів з урахуванням налаштування Californium/libcoap, DTLS-handshake та Observe. Обов'язково уточнюємо профіль безпеки пристроїв та наявність готової мережної інфраструктури перед оцінкою.