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:

Reposoftap supportble supportcryptographyprotobuf
esp_softap_provisioning:heavy_check_mark::heavy_multiplication_x::heavy_check_mark: (2.0.1):heavy_check_mark: (2.0.0)
esp_provisioning:heavy_multiplication_x::heavy_check_mark::heavy_check_mark: (1.4.1):heavy_check_mark: (1.0.1)

Last update: 18 / 04 / 2021

Usage

Changes on pubspec.yaml

dependencies:
  ...
  esp_softap_provisioning: 1.0.1

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.

Libraries

esp_softap_provisioning