Wi-Fi Provisioning IoT: реалізація через мобільний додаток

Уявіть: користувач вмикає новий IoT-пристрій, але не може його налаштувати, оскільки додаток не бачить пристрій на Android 12. Помилка в `WifiNetworkSpecifier` — і на підтримку йде година. Такі кейси — наша рутина. Wi-Fi Provisioning — передача мережевих credentials (SSID, пароль) від мобільного дод

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Wi-Fi Provisioning 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-пристрій, але не може його налаштувати, оскільки додаток не бачить пристрій на Android 12. Помилка в WifiNetworkSpecifier — і на підтримку йде година. Такі кейси — наша рутина. Wi-Fi Provisioning — передача мережевих credentials (SSID, пароль) від мобільного додатка до IoT-пристрою, який ще не знає, до якої мережі підключатися. Звучить просто, але Android-фрагментація, відмінності в поведінці ConnectivityManager між версіями та особливості конкретних чипів роблять це нетривіальним завданням. Наприклад, на Android 10+ необхідно явно вказувати removeCapability(NET_CAPABILITY_INTERNET), інакше система не дозволить підключення до SoftAP без інтернету. Ми вирішуємо це завдання під ключ, спираючись на 5+ років досвіду в IoT-розробці та 20+ реалізованих проєктів. Це знижує витрати на підтримку та зменшує бюджет на налагодження. Отримайте консультацію — ми оцінимо ваш проєкт і запропонуємо оптимальне рішення.

Методи Wi-Fi Provisioning: порівняння

Метод Принцип Надійність Краще застосовувати
Soft AP Пристрій створює Wi-Fi точку, телефон підключається і передає дані через HTTP/UDP Висока на Android 9, середня на 10+ (потрібен WifiNetworkSpecifier) Універсальний варіант, коли немає BLE
SmartConfig / EZ Connect Телефон надсилає credentials зашифрованими UDP-пакетами широкомовно Низька при AP-ізоляції, на 5 ГГц не працює Просте налаштування вдома, не для B2B
BLE + Wi-Fi комбо BLE передає credentials, Wi-Fi вмикається після Найвища, не вимагає перемикання мережі Завжди, коли пристрій має BLE
QR-код з credentials Credentials зашиті в QR на виробництві Висока Enterprise-деплой, поодинокі пристрої

Soft AP надійніший за SmartConfig у 2–3 рази, але поступається BLE-комбо за UX.

Як правильно вибрати метод Provisioning?

Вибір залежить від:

  • Наявності BLE на пристрої (якщо є — робіть BLE-комбо)
  • Цільової аудиторії (споживчий або корпоративний сегмент)
  • Вимог до безпеки (при BLE можна використовувати шифрування на рівні з'єднання)

Для B2B-пристроїв ми завжди рекомендуємо BLE-комбо або SoftAP, оскільки SmartConfig блокується корпоративними роутерами в 95% випадків. У будь-якому випадку, ми проєктуємо мультиметодний підхід з fallback.

Soft AP Provisioning на Android 10+: деталі реалізації

Основна складність — явне прив'язування HTTP-запитів до потрібної мережі. Без цього OkHttp використовує дефолтний маршрут (мобільні дані):

val specifier = WifiNetworkSpecifier.Builder() .setSsid("MyDevice_AP") .setWpa2Passphrase("provisioning_key") .build() val request = NetworkRequest.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED) .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .setNetworkSpecifier(specifier) .build() val callback = object : ConnectivityManager.NetworkCallback() { override fun onAvailable(network: Network) { val client = OkHttpClient.Builder() .socketFactory(network.socketFactory) .dns { hostname -> network.getAllByName(hostname).toList() } .build() postWifiCredentials(client, ssid, password) } override fun onUnavailable() { onProvisioningFailed("Не вдалося підключитися до пристрою") } } connectivityManager.requestNetwork(request, callback, 30_000) // 30 сек таймаут 

removeCapability(NET_CAPABILITY_INTERNET) — критично. Без цього Android 10 відхилить запит на підключення до AP без інтернету.

На Android 9 і нижче — WifiManager.enableNetwork() + WifiManager.disconnect(). API застаріле, але працює.

ESP-IDF SoftAP Provisioning: офіційний підхід

Для Espressif пристроїв — esp_wifi_prov_mgr компонент + офіційний provisioning-android SDK від Espressif (документація ESP-IDF):

val wifiProvisioningManager = ESPProvisionManager.getInstance(context) val device = wifiProvisioningManager.createESPDevice( ESPConstants.TransportType.TRANSPORT_SOFTAP, ESPConstants.SecurityType.SECURITY_1 ) device.connectWiFiDevice { isConnected -> if (isConnected) { device.scanNetworks { networks, _ -> // Показати список мереж користувачеві } } } 

SDK шифрує transport через sec1 (Curve25519 key exchange). Сканування мереж через пристрій — цінна фіча: пристрій сам сканує оточення і повертає список, знижуючи помилки введення.

Коли SmartConfig працює, а коли ні?

Ti SmartConfig та Espressif ESP-TOUCH працюють лише якщо:

  • Роутер не ввімкнув AP-ізоляцію клієнтів
  • Телефон підключений до 2.4 ГГц (не 5 ГГц)
  • Пристрій знаходиться в зоні впевненого прийому

У корпоративних мережах AP-ізоляція ввімкнена в 80% випадків. SmartConfig тут не працює. М'яко кажучи, це поганий вибір для B2B-пристроїв.

Типові помилки користувачів та як їх перехопити

Користувачі часто вводять пароль від мережі 5 ГГц, а ESP32 підтримує лише 2.4 ГГц. Перевірити заздалегідь:

val wifiManager = context.getSystemService(Context.WIFI_SERVICE) as WifiManager val currentNetwork = wifiManager.connectionInfo val is5Ghz = currentNetwork.frequency > 4000 // 5 ГГц > 4000 МГц if (is5Ghz) showWarning("Переконайтеся, що IoT-пристрій підтримує 5 ГГц, інакше використовуйте 2.4 ГГц") 

На Android 10+: WifiInfo доступний лише з дозволом ACCESS_FINE_LOCATION — запитуйте явно.

Перевірка частоти економить до 40% часу на підтримку, оскільки користувач не витрачає 10 хвилин на введення неправильного пароля.

Порівняння платформ: Android vs iOS

Параметр Android iOS
SoftAP Вимагає WifiNetworkSpecifier (10+) або enableNetwork (9-). Працює на всіх версіях Вимагає NEHotspotConfiguration. Працює на всіх версіях
SmartConfig Працює, але нестабільно під Android 12+ через обмеження Не підтримується (iOS обмежує широкомовну відправку)
BLE-комбо Повна підтримка Core Bluetooth Повна підтримка Core Bluetooth
QR-код Проста реалізація через камеру Проста реалізація через AVFoundation

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

  1. Аналіз вимог та вибір оптимального методу Provisioning (SoftAP, SmartConfig, BLE-комбо)
  2. Інтеграція SDK для конкретної платформи (Android, iOS, Flutter)
  3. Реалізація UX: сканування пристроїв, введення/вибір мережі, обробка помилок
  4. Тестування на 10+ моделях роутерів та версіях ОС
  5. Документація та передача вихідного коду
  6. Підтримка після запуску (в рамках гарантії)

Замовте консультацію для аналізу вашого пристрою — ми розберемо конфігурацію та підберемо best practice. Зв'яжіться з нами для оцінки проєкту.