/better_esp_provisioning

Yet Another Flutter Provisioning library for ESP-IDF ESP32 Unified provisioning

Primary LanguageDartApache License 2.0Apache-2.0

esp_provisioning

Made with love in Vietnam Pub Version

Espressif BLE Provisioning library for ESP32

A library for Flutter was developed to provide network credentials and/or custom data to an ESP32 over Bluetooth BLE. The company makes chips ESP32, Espresif, they have 2 libraries for each Platform iOS and Android

However, the mobile application development on Flutter is easier now, and many will need this.

Getting Started

 EspProv prov = EspProv(
        transport: TransportBLE(ble_peripheral), security: Security1(pop: pop));
 var success = await prov.establishSession();
 await prov.sendWifiConfig(ssid: event.ssid, password: event.password);
 await prov.applyWifiConfig();

Protocol Communication Overview

Protocol Communication (protocomm) component manages secure sessions and provides framework for multiple transports. The application can also use protocomm layer directly to have application specific extensions for the provisioning (or non-provisioning) use cases.

Following features are available for provisioning :

  • Communication security at application level

    • protocomm_security1 (curve25519 key exchange + AES-CTR encryption)
  • Proof-of-possession (support with protocomm_security1 only)

Protocomm internally uses protobuf (protocol buffers) for secure session establishment. Though users can implement their own security (even without using protobuf). One can even use protocomm without any security layer.

Protocomm provides framework for various transports - WiFi (SoftAP+HTTPD), BLE, console - in which case the handler invocation is automatically taken care of on the device side (see Transport Examples below for code snippets).

Note that the client still needs to establish session (only for protocomm_security1) by performing the two way handshake. See Unified Provisioning for more details about the secure handshake logic.

License

Apache License Version 2.0