Flutter iOS/Android app for the ePaper service.
- Email/password cloud account.
- ESP32-C3 BLE provisioning with ESP-IDF Wi-Fi provisioning protocol.
- QR payload binding:
device_id + claim_code + pop. - User-owned device list.
- Image upload, preview decode, and assign-to-device flow.
The app expects the service API described in the implementation plan:
POST /api/auth/registerPOST /api/auth/loginGET /api/mePOST /api/me/devices/claimGET /api/me/devicesGET /api/me/devices/{device_id}DELETE /api/me/devices/{device_id}POST /api/me/devices/{device_id}/assignPOST /api/imageswith Bearer token support
The existing ESP32 endpoints remain unchanged:
GET /api/devices/{device_id}/currentGET /api/images/{image_id}/dataPOST /api/devices/{device_id}/status
{
"ver": "v1",
"name": "PROV_123456",
"transport": "ble",
"security": 1,
"pop": "abcd1234",
"device_id": "device001",
"claim_code": "one-time-claim-code"
}Flutter calls com.inksplash.app/provisioning through a method channel.
Android uses:
com.github.espressif:esp-idf-provisioning-android:lib-2.4.4
iOS uses:
pod 'ESPProvision'
Run iOS pods after dependency changes:
cd ios
pod installflutter pub get
flutter analyze
flutter testRun on a real phone for BLE provisioning:
flutter run