Разработка мобильного приложения для настройки IoT-устройств (Provisioning)

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

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

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

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1735 услуг
Разработка мобильного приложения для настройки IoT-устройств (Provisioning)
Средний
от 1 недели до 3 месяцев
Часто задаваемые вопросы

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

Этапы разработки

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

  • 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

Разработка мобильного приложения для настройки IoT-устройств (Provisioning)

Provisioning — первое, с чем сталкивается пользователь при распаковке нового IoT-устройства. Если этот процесс занимает больше 2 минут или требует инструкции, конверсия в активных пользователей падает. Задача разработки — сделать из технического процесса (передача Wi-Fi credentials, регистрация на платформе, первичная конфигурация) линейный UX из 3–4 шагов.

Что такое IoT Provisioning технически

Устройство «из коробки» не знает Wi-Fi пароль и не привязано к аккаунту пользователя. Нужно передать ему три вещи:

  1. Сетевые credentials (SSID + password)
  2. Идентификатор владельца (user_id или token с платформы)
  3. Начальную конфигурацию (часовой пояс, имя устройства, endpoint сервера)

Технически это делается через:

  • BLE (Bluetooth Low Energy) — устройство в режиме provisioning поднимает GATT-сервер, мобильное приложение пишет данные в характеристики
  • Wi-Fi Soft AP — устройство поднимает собственную точку доступа, телефон подключается и передаёт данные через HTTP
  • SoftAP + BLE комбо — BLE для discovery и начального обмена, Wi-Fi для передачи сертификатов
  • QR-код — базовые credential зашиты в QR при производстве, телефон сканирует и дополняет данными аккаунта

Выбор метода зависит от железа устройства. Если ESP32 — поддерживает все варианты. nRF52 — только BLE. RTL8710 — только Wi-Fi.

ESP-IDF Provisioning: практика

Espressif предоставляет готовый esp_prov компонент на стороне прошивки и официальные SDK для мобильных приложений:

  • Android: com.espressif:provisioning-android
  • iOS: ESPProvision (Swift Package Manager)

Флоу через BLE с Android SDK:

ESPProvisionManager.getInstance(context).searchBleEspDevices("PROV_") { devices, error ->
    // devices — найденные устройства с префиксом PROV_
    val device = devices?.firstOrNull() ?: return@searchBleEspDevices
    device.connectBLEDevice(bleScanResult) { session ->
        device.provision(ssid, passphrase) { status ->
            when (status) {
                ProvisioningStatus.SUCCESS -> onProvisioned()
                ProvisioningStatus.FAILURE -> onFailed(status.error)
                ProvisioningStatus.CONFIG_SENT -> updateProgress(50)
            }
        }
    }
}

Под капотом SDK устанавливает зашифрованную сессию через Session Security (протокол sec1 — Curve25519 + AES-CTR), передаёт Wi-Fi credentials через protocomm layer. Протокол Protobuf — бинарный, компактный.

Типичная проблема: searchBleEspDevices не находит устройство, хотя оно включено. Причина чаще всего — устройство уже прошло provisioning и не рекламирует BLE-сервисы. Нужна кнопка «сброс к заводским настройкам» в инструкции.

Wi-Fi Provisioning через Soft AP

Устройство поднимает точку PROV_XXXXXX. Телефон должен подключиться к ней — это нетривиально на Android, потому что система может решить, что эта сеть «без интернета» и переключиться обратно на сотовые данные.

На Android 10+ явное подключение через WifiNetworkSpecifier:

val specifier = WifiNetworkSpecifier.Builder()
    .setSsid("PROV_${deviceSuffix}")
    .setWpa2Passphrase(apPassword)
    .build()
val request = NetworkRequest.Builder()
    .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
    .setNetworkSpecifier(specifier)
    .build()
connectivityManager.requestNetwork(request, object : ConnectivityManager.NetworkCallback() {
    override fun onAvailable(network: Network) {
        // Все HTTP-запросы к устройству нужно делать через этот network объект
        val client = OkHttpClient.Builder()
            .socketFactory(network.socketFactory)
            .build()
        sendProvisioningData(client)
    }
})

Без явного network.socketFactory в OkHttp запросы уйдут через дефолтный интерфейс (сотовая сеть), а не через AP устройства — соединение не установится.

UX-сценарий и обработка ошибок

Плохой UX: бесконечный спиннер. Хороший: прогресс с конкретными шагами — «Поиск устройства», «Подключение», «Отправка сети», «Устройство подключается к Wi-Fi», «Регистрация». Каждый шаг — таймаут. Если устройство не подключилось к Wi-Fi за 30 секунд — предложить проверить пароль.

Самая частая ошибка пользователей: вводят пароль от 5 ГГц сети, а устройство поддерживает только 2.4 ГГц. Детектировать это заранее — через WifiManager.scanResults проверить, на какой частоте работает выбранная SSID. На Android 30+ для этого нужны ACCESS_FINE_LOCATION или NEARBY_WIFI_DEVICES разрешения.

Сроки

Provisioning через один канал (BLE или Soft AP) с использованием Espressif SDK: 2–4 недели. Кастомный протокол, мультивендорная поддержка, полный flow с регистрацией на платформе: 5–8 недель. Стоимость рассчитывается индивидуально.