הגדרת Wi-Fi פשוטה למכשירי IoT באמצעות מובייל

משתמשים מדליקים מכשיר IoT חדש אך לא מצליחים להגדיר אותו—האפליקציה לא מזהה את המכשיר, והתמיכה נמשכת שעה. אנחנו מיישמים הגדרת Wi-Fi דרך אפליקציה ניידת, תוך שימוש ב-SoftAP, SmartConfig או הגדרה בסיוע BLE לפי הצורך. הצוות שלנו מטפל בכל התהליך, מבדיקת היתכנות ועד יישום ותמיכה שוטפת, ומבטיח חיבור אמין של המכשירים ללא פשרות על לוחות זמנים.

פיתוח ותמיכה בכל סוגי היישומים הניידים:

יישומים ניידים למידע ובידור
אפליקציות חדשות, משחקים, מדריכים, קטלוגים מקוונים, אפליקציות מזג אוויר, אפליקציות כושר ובריאות, אפליקציות נסיעות, אפליקציות חינוכיות, רשתות חברתיות ומסנג'רים, חידונים, בלוגים ופודקאסטים, פורומים, אגרגטורים
יישומים ניידים למסחר אלקטרוני
חנויות מקוונות, אפליקציות B2B, מרקטפלייסים, בורסות מקוונות, שירותי קאשבק, בורסות, פלטפורמות דרופשיפינג, תוכניות נאמנות, משלוחי מזון ומוצרים, מערכות תשלום.
יישומים ניידים לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, ניהול פרויקטים, כלים לצוותי מכירות, ניהול פיננסי, ניהול ייצור, ניהול לוגיסטיקה ומשלוחים, ניהול משאבי אנוש, מערכות ניטור נתונים
יישומים ניידים לשירותים אלקטרוניים
פלטפורמות מודעות מסווגות, בתי ספר מקוונים, בתי קולנוע מקוונים, פלטפורמות שירות אלקטרוניות, פלטפורמות קאשבק, אירוח וידאו, פורטלים נושאיים, פלטפורמות הזמנות ותזמון מקוונות, פלטפורמות מסחר מקוונות

אלה הם רק חלק מסוגי היישומים הניידים שאנו עובדים איתם, ולכל אחד מהם עשויים להיות מאפיינים ופונקציונליות ספציפיים משלו, המותאמים לצרכים ולמטרות הספציפיות של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
הגדרת Wi-Fi פשוטה למכשירי IoT באמצעות מובייל
בינוני
~3-5 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית מובייל עבור FEEDME
    פיתוח אפליקציית מובייל עבור FEEDME
    971
  • פיתוח אפליקציית מובייל עבור XOOMER
    פיתוח אפליקציית מובייל עבור XOOMER
    869
  • פיתוח אפליקציית מובייל עבור RHL
    פיתוח אפליקציית מובייל עבור RHL
    1289
  • פיתוח אפליקציית מובייל עבור ZIPPY
    פיתוח אפליקציית מובייל עבור ZIPPY
    1143
  • פיתוח אפליקציית מובייל עבור Affhome
    פיתוח אפליקציית מובייל עבור Affhome
    1076
  • פיתוח אפליקציית מובייל עבור חברת FLAVORS
    פיתוח אפליקציית מובייל עבור חברת FLAVORS
    677

תארו לעצמכם שמשתמש מדליק מכשיר IoT חדש אך אינו יכול להגדיר אותו כי האפליקציה לא רואה אותו באנדרואיד 12. השגיאה נמצאת ב-WifiNetworkSpecifier — והתמיכה נמשכת שעה. מקרים כאלה הם המציאות היומיומית שלנו. Wi-Fi Provisioning הוא העברת פרטי רשת (SSID, סיסמה) מאפליקציה ניידת למכשיר IoT שעדיין לא יודע לאיזו רשת להתחבר. זה נשמע פשוט, אבל פיצול אנדרואיד, הבדלים בהתנהגות ConnectivityManager בין גרסאות, ומוזרויות ספציפיות של שבבים הופכים את זה ללא טריוויאלי. לדוגמה, באנדרואיד 10+ עליכם לקרוא במפורש ל-removeCapability(NET_CAPABILITY_INTERNET), אחרת המערכת דוחה חיבורים ל-SoftAP ללא אינטרנט. אנחנו פותרים זאת במפתח מלא, תוך הסתמכות על 5+ שנות פיתוח IoT ו-20+ פרויקטים שהושלמו. זה מפחית עלויות תמיכה ותקציבי ניפוי שגיאות בעד 40%. קבלו ייעוץ — נעריך את הפרויקט שלכם ונציע את הפתרון הטוב ביותר.

שיטות Wi-Fi Provisioning: השוואה

שיטה עיקרון אמינות מקרה שימוש מומלץ
SoftAP המכשיר יוצר נקודה חמה Wi-Fi; הטלפון מתחבר ושולח פרטי כניסה דרך HTTP/UDP גבוהה באנדרואיד 9, בינונית ב-10+ (דורש WifiNetworkSpecifier) אוניברסלי, כשאין BLE
SmartConfig / EZ Connect הטלפון משדר פרטי כניסה מוצפנים UDP נמוכה תחת בידוד AP; נכשל ב-5 GHz התקנה ביתית פשוטה, לא ל-B2B
שילוב BLE + Wi-Fi BLE מעביר פרטי כניסה; Wi-Fi מתחיל לאחר מכן הגבוהה ביותר; אין צורך במעבר רשת תמיד, כשהמכשיר כולל BLE
קוד QR עם פרטי כניסה פרטי כניסה מוטמעים ב-QR בייצור גבוהה פריסה ארגונית, מכשיר יחיד

SoftAP אמין פי 2–3 מ-SmartConfig אך נופל מ-BLE combo בחוויית משתמש. ב-95% מהסביבות הארגוניות, SmartConfig נכשל; SoftAP מצליח ב-99% מהמקרים.

איך לבחור את שיטת ה-Provisioning הנכונה?

הבחירה תלויה ב:

  • זמינות BLE במכשיר (אם כן, לכו על BLE combo)
  • קהל היעד (צרכני לעומת ארגוני)
  • דרישות אבטחה (BLE מאפשר הצפנה ברמת חיבור)

למכשירי B2B, אנו תמיד ממליצים על BLE combo או SoftAP, כי SmartConfig חסום על ידי נתבים ארגוניים ב-95% מהמקרים. בכל תרחיש, אנו מתכננים גישה מרובת שיטות עם גיבוי.

SoftAP Provisioning באנדרואיד 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 сек таймаут

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 сек таймаут הוא קריטי. בלעדיו, אנדרואיד 10 דוחה את הבקשה להתחבר לנקודה חמה ללא אינטרנט.

באנדרואיד 9 ומטה — removeCapability(NET_CAPABILITY_INTERNET) + WifiManager.enableNetwork(). ה-API מופחת אך עובד.

ESP-IDF SoftAP Provisioning: גישה רשמית

למכשירי Espressif — רכיב WifiManager.disconnect() בתוספת ה-SDK הרשמי esp_wifi_prov_mgr (תיעוד 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 מצפין את התעבורה דרך provisioning-android (החלפת מפתחות Curve25519). סריקת רשת דרך המכשיר היא תכונה חשובה: המכשיר סורק את סביבתו ומחזיר רשימה, מה שמפחית שגיאות קלט ב-30%.

מתי SmartConfig עובד ומתי לא?

Ti SmartConfig ו-Espressif ESP-TOUCH עובדים רק אם:

  • הנתב לא הפעיל בידוד לקוחות AP
  • הטלפון מחובר ל-2.4 GHz (לא 5 GHz)
  • המכשיר נמצא בטווח אות חזק

ברשתות ארגוניות, בידוד AP מופעל ב-80% מהמקרים. SmartConfig פשוט לא עובד שם. זו בחירה גרועה למכשירי B2B.

טעויות משתמש נפוצות ואיך לתפוס אותן

משתמשים לעיתים קרובות מזינים את הסיסמה לרשת 5 GHz בעוד ESP32 תומך רק ב-2.4 GHz. בדקו מראש:

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 ГГц")

באנדרואיד 10+: 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, _ -> // Показать список сетей пользователю } } } נגיש רק עם הרשאת sec1 — בקשו זאת במפורש.

בדיקת תדר חוסכת עד 40% מזמן התמיכה, כי המשתמש לא מבזבז 10 דקות בהזנת סיסמה שגויה.

השוואת פלטפורמות: אנדרואיד לעומת iOS

תכונה אנדרואיד iOS
SoftAP דורש 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 ГГц") (10+) או WifiInfo (9-). עובד בכל הגרסאות דורש NEHotspotConfiguration. עובד בכל הגרסאות
SmartConfig עובד אך לא יציב באנדרואיד 12+ עקב הגבלות לא נתמך (iOS מגביל שליחת שידורים)
BLE combo תמיכה מלאה ב-Core Bluetooth תמיכה מלאה ב-Core Bluetooth
קוד QR יישום פשוט דרך מצלמה יישום פשוט דרך AVFoundation

מה כלול בעבודה שלנו?

  1. ניתוח דרישות ובחירת שיטת provisioning אופטימלית (SoftAP, SmartConfig, BLE combo)
  2. אינטגרציית SDK לפלטפורמות ספציפיות (אנדרואיד, iOS, Flutter)
  3. יישום UX: סריקת מכשירים, בחירת/הזנת רשת, טיפול בשגיאות
  4. בדיקות על 10+ דגמי נתבים וגרסאות מערכת הפעלה
  5. מסירת תיעוד וקוד מקור
  6. תמיכה לאחר השקה (במסגרת אחריות)

צרו קשר לייעוץ — ננתח את תצורת המכשיר שלכם ונבחר שיטות מומלצות. עם 5+ שנות ניסיון ו-20+ פרויקטים שהושלמו, נוכל לקצץ בעלויות התמיכה שלכם ב-40%. פנו אלינו להערכת פרויקט.