{"id":14971047,"url":"https://github.com/unicloudvn/esp_provisioning","last_synced_at":"2026-01-11T04:45:50.666Z","repository":{"id":39890104,"uuid":"254318941","full_name":"unicloudvn/esp_provisioning","owner":"unicloudvn","description":"Flutter Provisioning library for ESP-IDF ESP32 Unified provisioning","archived":false,"fork":false,"pushed_at":"2023-08-23T08:18:15.000Z","size":426,"stargazers_count":66,"open_issues_count":17,"forks_count":54,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-01-31T20:16:58.596Z","etag":null,"topics":["ble","bluetooth","esp32","espressif","flutter","made-in-vietnam","provisioning"],"latest_commit_sha":null,"homepage":"https://unicloudgroup.dev","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/unicloudvn.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-04-09T08:49:29.000Z","updated_at":"2024-11-11T02:30:49.000Z","dependencies_parsed_at":"2023-02-18T11:08:42.750Z","dependency_job_id":null,"html_url":"https://github.com/unicloudvn/esp_provisioning","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unicloudvn%2Fesp_provisioning","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unicloudvn%2Fesp_provisioning/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unicloudvn%2Fesp_provisioning/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unicloudvn%2Fesp_provisioning/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/unicloudvn","download_url":"https://codeload.github.com/unicloudvn/esp_provisioning/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238347534,"owners_count":19456951,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ble","bluetooth","esp32","espressif","flutter","made-in-vietnam","provisioning"],"created_at":"2024-09-24T13:44:38.632Z","updated_at":"2025-10-26T14:31:01.459Z","avatar_url":"https://github.com/unicloudvn.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# esp_provisioning\n\n![Made with love in Vietnam](https://madewithlove.now.sh/vn?heart=true) ![Pub Version](https://img.shields.io/pub/v/esp_provisioning)\n\nEspressif BLE Provisioning library for ESP32\n\n![](https://github.com/sunshine-tech/esp_provisioning/blob/master/img.gif?raw=true)\n\nA library for Flutter was developed to provide network credentials and/or custom data to an ESP32 over Bluetooth BLE.\nThe company makes chips ESP32, Espresif, they have 2 libraries for each Platform iOS and Android\n\n- [esp-idf-provisioning-ios](https://github.com/espressif/esp-idf-provisioning-ios)\n- [esp-idf-provisioning-android](https://github.com/espressif/esp-idf-provisioning-android)\n\nHowever, the mobile application development on Flutter is easier now, and many will need this.\n\n## Getting Started\n\n- Need [flutter_ble_lib](https://github.com/Polidea/FlutterBleLib) for BLE transport in your application\n- API (Check [exmaple](./exmaple))\n\n```dart\n EspProv prov = EspProv(\n        transport: TransportBLE(ble_peripheral), security: Security1(pop: pop));\n var success = await prov.establishSession();\n await prov.sendWifiConfig(ssid: event.ssid, password: event.password);\n await prov.applyWifiConfig();\n\n```\n\n\n## Protocol Communication Overview\n\nProtocol Communication ([protocomm](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/provisioning/protocomm.html)) 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.\n\nFollowing features are available for provisioning :\n- Communication security at application level\n\n    - protocomm_security1 (curve25519 key exchange + AES-CTR encryption)\n\n- Proof-of-possession (support with protocomm_security1 only)\n\nProtocomm 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.\n\nProtocomm 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).\n\nNote 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.\n\n### License\n\n[Apache License Version 2.0](./LICENSE)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funicloudvn%2Fesp_provisioning","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funicloudvn%2Fesp_provisioning","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funicloudvn%2Fesp_provisioning/lists"}