Интеграция Azure IoT Hub в мобильное IoT-приложение

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

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

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

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1735 услуг
Интеграция Azure IoT Hub в мобильное 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

Интеграция Azure IoT Hub в мобильное IoT-приложение

Azure IoT Hub отличается от AWS IoT Core прежде всего моделью аутентификации и протоколами. Здесь нет MQTT over WebSocket через SigV4 — вместо этого SAS-токены (Shared Access Signatures) или X.509. Для мобильного приложения это означает другую стратегию: не давать SAS Connection String пользователю, а генерировать короткоживущие SAS-токены на бэкенде.

Аутентификация через SAS-токены

SAS Connection String (HostName=...;SharedAccessKeyName=...;SharedAccessKey=...) — это эквивалент root credentials. Встраивать его в мобильное приложение нельзя. Решение — бэкенд-прокси: пользователь авторизуется в вашей системе, бэкенд генерирует SAS-токен с ограниченным сроком действия (8–24 часа) для конкретного device ID и возвращает его клиенту.

Генерация токена на Node.js:

const crypto = require('crypto');
function generateSasToken(resourceUri, signingKey, expiresInMins) {
  const expiry = Math.ceil(Date.now() / 1000 + expiresInMins * 60);
  const stringToSign = `${encodeURIComponent(resourceUri)}\n${expiry}`;
  const hmac = crypto.createHmac('sha256', Buffer.from(signingKey, 'base64'));
  const signature = hmac.update(stringToSign).digest('base64');
  return `SharedAccessSignature sr=${encodeURIComponent(resourceUri)}&sig=${encodeURIComponent(signature)}&se=${expiry}`;
}

Мобильный клиент получает этот токен и подключается к IoT Hub через AMQP over WebSocket или MQTT. На Flutter используем mqtt_client с SAS-токеном в поле password. На React Native — azure-iot-device npm-пакет через react-native-tcp-socket или AMQP через rhea (AMQP 1.0).

Cloud-to-Device и Device-to-Cloud сообщения

IoT Hub поддерживает несколько паттернов обмена сообщениями:

Device-to-Cloud (D2C) — телеметрия от устройства к хабу. Мобильное приложение как «виртуальное устройство» публикует команды через D2C messages. Лимит: 256 KB на сообщение, не более 8000 сообщений в день на free tier.

Cloud-to-Device (C2D) — команды от облака к устройству. Используем для push-команд: бэкенд отправляет C2D message на конкретный deviceId, устройство принимает и выполняет. Delivery acknowledgment — positive/negative/none.

Direct Methods — синхронный запрос-ответ с таймаутом (1–300 сек). Идеально для команд, требующих подтверждения: «установи температуру 22°C» → ответ от устройства с текущим статусом. Вызов из мобильного приложения идёт через REST API IoT Hub: POST /twins/{deviceId}/methods.

Device Twin

Аналог AWS Device Shadow — Device Twin. Хранит desired и reported properties. Для мобильного приложения — основной способ читать текущее состояние устройства без постоянного MQTT-соединения: GET /twins/{deviceId} через IoT Hub REST API с Bearer-токеном.

Типичная ошибка: обращаться к Device Twin напрямую из мобильного приложения, передавая IoT Hub connection string. Правильно — через собственный API-слой, который проксирует запросы и проверяет права доступа пользователя к конкретному устройству.

Azure Notification Hubs для push

Push-уведомления по IoT-событиям — через Azure Event Grid + Azure Function + Azure Notification Hubs. Event Grid подписывается на IoT Hub events (Microsoft.Devices.DeviceTelemetry), триггерит Function, Function отправляет push через Notification Hubs на FCM/APNs.

На Flutter интегрируем через firebase_messaging (для FCM) — Azure Notification Hubs управляет регистрацией устройств и таргетингом, а доставку делегирует FCM/APNs. Тегирование регистраций по userId позволяет отправлять push конкретному пользователю без хранения токенов на стороне IoT-бэкенда.

Сроки

Базовая интеграция (SAS-токены, MQTT/AMQP подключение, Device Twin) — 2–3 недели. Direct Methods, Event Grid, push-уведомления — дополнительно 2 недели. Стоимость зависит от количества устройств, тира IoT Hub и требуемой частоты сообщений.