README.md
1# Provisioning Application Examples
2
3This primarily consists of a single unified example wifi_prov_mgr
4
5* wifi_prov_mgr
6 Abstracts out most of the complexity of Wi-Fi provisioning and allows easy switching between the SoftAP (using HTTP) and BLE transports. It also demonstrates how applications can register and use additional custom data endpoints.
7
8Provisioning applications are available for various platforms:
9
10* Android:
11 - [BLE Provisioning app on Play Store](https://play.google.com/store/apps/details?id=com.espressif.provble).
12 - [SoftAP Provisioning app on Play Store](https://play.google.com/store/apps/details?id=com.espressif.provsoftap).
13 - Source code on GitHub: [esp-idf-provisioning-android](https://github.com/espressif/esp-idf-provisioning-android).
14* iOS:
15 - [BLE Provisioning app on app store](https://apps.apple.com/in/app/esp-ble-provisioning/id1473590141)
16 - [SoftAP Provisioning app on app Store](https://apps.apple.com/in/app/esp-softap-provisioning/id1474040630)
17 - Source code on GitHub: [esp-idf-provisioning-ios](https://github.com/espressif/esp-idf-provisioning-ios)
18* For all other platforms a python based command line tool is provided under "$IDF_PATH/tools/esp_prov"
19
20The Android and iOS provisioning applications allow the user to configure the device manually or by scanning a QR code. QR codes can be generated by any online QR code generator. QR code payload is encoded with a JSON string containing the device name, proof-of-possession key (if used) and transport type (BLE or softAP), for example:
21
22```
23{"ver":"v1","name":"PROV_000318","pop":"a1000318","transport":"softap"}
24```
25
26The more details about QR code format, you can refer to [QR Code Scan](https://github.com/espressif/esp-idf-provisioning-android#qr-code-scan).
27
28## Legacy Examples
29
30The legacy examples require own implementation of provisioning functions and handlers. The Wi-Fi provisioning component abstracts out most of this complexity and provides a simpler interface and so, that is recommended for use. However, if you want to use lower level provisioning and protocomm APIs, you can check the these examples under legacy/ folder:
31
32* softap_prov
33 Provisioning involves Wi-Fi station configuration via an HTTP server running on the device, which is initially configured to be in SoftAP mode. After provisioning, device runs in Wi-Fi station mode only and connects to the AP whose credentials were provided during provisioning.
34
35* ble_prov
36 Provisioning involves Wi-Fi station configuration via BLE service endpoints running on the device initially. After provisioning, BLE is turned off and device runs in Wi-Fi station mode, connecting to the AP whose credentials were provided during provisioning.
37
38* console_prov
39 Provisioning involves Wi-Fi station configuration via UART console. This is intended for debugging protocomm and provisioning related features.
40
41* custom_config
42 Similar to softap_prov examples, but allows for configuration of custom (device-local) information during provisioning. This is intended as an example for implementing custom provisioning schemes.
43
44Refer to the README.md files in each example directory for more information.
45