Skip to content

omert08/esp_softap_provisioning

Repository files navigation

esp_softap_provisioning

A Flutter plugin for provisioning ESP32 modules with SoftAP

GitHub release GitHub license pub points

Example App

Tested on

Silicon: ESP32-WROOM-32D

Android Version : 11

iOS Version: 12 and 14

Comparison

Comparison to esp_provisioning:

Repo softap support ble support cryptography protobuf
esp_softap_provisioning ✔️ ✖️ ✔️ (2.0.1) ✔️ (2.0.0)
esp_provisioning ✖️ ✔️ ✔️ (1.4.1) ✔️ (1.0.1)

Last update: 18 / 04 / 2021

Usage

Changes on pubspec.yaml

dependencies:
  ...
  esp_softap_provisioning:
    git:
      url: https://github.com/omert08/esp_softap_provisioning.git
      ref: main

then, run flutter pub get,

We need to give permissions for http connections.

  • Changes on AndroidManifest.xml (<your_app>/android/app/src/main/AndroidManifest.xml):

Add <uses-permission android:name="android.permission.INTERNET"/> and android:usesCleartextTraffic="true" to AndroidManifest.xml.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   <uses-permission android:name="android.permission.INTERNET"/> 
   <application
         ...
         android:usesCleartextTraffic="true" 
         ...
   ...
  • Changes on Info.plist (<your_app>/ios/Runner/Info.plist) :
<plist version="1.0">
<dict>
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsLocalNetworking</key>
        <true/>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
        <key>NSExceptionDomains</key>
        <dict>
            <key>wifi-prov.local</key>
            <dict>
               <key>NSIncludesSubdomains</key>
               <true/>
               <key>NSExceptionAllowsInsecureHTTPLoads</key>
               <true/>
               <key>NSExceptionMinimumTLSVersion</key>
               <string>1.0</string>
               <key>NSExceptionRequiresForwardSecrecy</key>
               <true/>
            </dict>
        </dict>
    </dict>
    ...

For iOS, it's recommended to put platform version >= 9.0 , You can edit this variable from Podfile (<your_app>/ios/Podfile)

Library is ready to use, you can check example app directory for implementation. Notice that Proof of posession (POP) should be matching with ESP's.

Credits

  • I have referred to sunshine-tech esp_provisioning repository for native cipher code.

  • I have referred to Espressif esp_prov repository for provisioning structure.