Orientação gerada a partir de informações públicas. Apenas para referência.
Um plugin Flutter projetado para simplificar a configuração de módulos ESP32 via Bluetooth Low Energy (BLE). Permite configuração sem fio contínua, permitindo que dispositivos descubram, conectem e configurem unidades ESP32 por meio de uma interface simples e consistente. Ideal para projetos IoT que exigem implantação rápida e onboarding de dispositivos sem fiação complexa ou entrada manual de rede. O plugin suporta tanto plataformas Android quanto iOS, garantindo compatibilidade ampla em ambientes móveis.
Casos de uso
onboarding de dispositivo IoT
Configuração sem fio do ESP32
Configuração de dispositivo doméstico inteligente
Provisionamento automático de firmware
Gerenciamento de dispositivos remotos
Principais recursos
Provisionamento de dispositivo baseado em BLE
Suporte multiplataforma (Android e iOS)
API simples para descoberta de dispositivos
Gerenciamento de conexão segura
Feedback de status em tempo real
Indicado para
desenvolvedores de IoT
engenheiros de sistemas embarcados
Criadores de aplicativos móveis para dispositivos inteligentes
Startups de hardware
Técnicos de campo implantando dispositivos conectados
Considerações
Requer dispositivos compatíveis com BLE
Limitado a módulos ESP32 com firmware compatível
O modo de fundo pode exigir configuração adicional
Permissões de rede necessárias no Android
Limitações de execução em segundo plano do iOS
README original
Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.
esp_provisioning_ble
A library for provisioning a ESP32 with Bluetooth BLE
The transport attribute accepts only the ProvTransport type, and the security attribute accepts only the ProvSecurity type, which has an implementation called Security1 that you will use to pass the Proof-of-Possession (PoP).
Establish a session with the device:
After that, you will need to establish a session with the device. You can do this using the establishSession function, which returns three types of EstablishSessionStatus:
Connected: When the device establishes a connection successfully.
Disconnected: When an error occurs while establishing a connection with the device.
KeyMismatch: When the Proof-of-Possession (PoP) is incorrect.
var sessionStatus = await prov.establishSession();
log.d("Session Status = $sessionStatus");
switch (sessionStatus) {
caseEstablishSessionStatus.Connected:
emit(BleWifiEstablishedConnectionState());
caseEstablishSessionStatus.Disconnected:
emit(BleWifiEstablishedConnectionFailedState());
caseEstablishSessionStatus.Keymismatch:
emit(BleWifiEstablishedConnectionKeyMismatch());
}
Scan networks from the device:
To scan Wi-Fi networks, use the startScanWifi function, which returns a list of WifiAp objects, each of which has the following attributes:
String ssid
int rssi
bool active
bool private
var listWifi = await prov.startScanWiFi();
log.d('Found ${listWifi.length} Wi-Fi networks');
for (var obj in listWifi) {
log.d('Wi-Fi network: ${obj.ssid}');
}
Send and Apply WI-Fi Config:
To send and apply config use the sendWifiConfig and applyWifiConfig functions, respectively.
The Protocol Communication (protocomm) component manages secure
sessions and provides the framework for multiple transports. The
application can also use the protocomm layer directly to have
application-specific extensions for the provisioning or non-provisioning
use cases.
Following features are available for provisioning:
Proof-of-possession (support with protocomm_security1 only)
Salt and Verifier (support with protocomm_security2 only)
Protocomm internally uses protobuf (protocol buffers) for secure
session establishment. Users can choose to implement their own security
(even without using protobuf). Protocomm can also be used without any
security layer.
Protocomm provides the framework for various transports:
Bluetooth LE
Wi-Fi (SoftAP + HTTPD)
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 for protocomm_security1 and protocomm_security2, the client
still needs to establish sessions by performing the two-way handshake.
See Unified Provisioning for more details about the secure handshake logic.
Comparasion:
Comparison with esp_provisioning_softap package:
Repo
softap support
ble support
cryptography
protobuf
esp_provisioning_softap
✔️
✖️
✔️ (2.0.1)
✔️ (2.0.0)
esp_provisioning_ble
✖️
✔️
✔️ (2.5.0)
✔️ (3.0.0)
Last update: 10/06/2023 (Octorber 6, 2023).
TODOS:
Test and create examples of the package with others Bluetooth packages.