docs: add version check on BLE connect to OTA spec

This commit is contained in:
eddy 2026-07-30 06:56:04 +02:00
commit 6df65d9adf

View file

@ -15,6 +15,7 @@ Firmware-updates via Bluetooth LE vanaf de Android app, zonder USB-kabel. Doelgr
### ESP32-S3 kant (`src/main.cpp`)
- Nieuwe BLE characteristic `VERSION_UUID = "beb5483e-36e1-4688-b7f5-ea07361f26db"` — READ, exposeert firmwareversie als string
- Nieuwe BLE characteristic `OTA_UUID = "beb5483e-36e1-4688-b7f5-ea07361f26da"` — WRITE + NOTIFY
- Bestaande relay service blijft volledig intact, aparte characteristic in dezelfde service
- OTA-modus flag: tijdens OTA worden relay-commando's genegeerd, relais vallen UIT
@ -30,8 +31,19 @@ Firmware-updates via Bluetooth LE vanaf de Android app, zonder USB-kabel. Doelgr
- Nieuwe `OtaManager.kt` — leest firmware, hasht, chunkt, verstuurt
- OTA-knop in `SettingsActivity.kt` met progress UI
- Bij BLE connect: leest firmwareversie van ESP via `VERSION_UUID` characteristic, vergelijkt met versie in app. Toont toast bij beschikbare update.
- Firmware bron: `assets/firmware.bin` (of bestandskiezer voor handmatige update)
- SHA-256 hash berekening voor eindverificatie
- Bundled firmwareversie (uit `assets/`) vergeleken met ESP-versie bij connect
## Versie-check bij BLE connect
Bij elke BLE-verbinding leest de Android app de `VERSION_UUID` READ characteristic van de ESP. De ESP retourneert de stringwaarde van `FIRMWARE_VERSION`. De app vergelijkt met de versie van de gebundelde `firmware.bin` in assets. Als de ESP een lagere versie heeft toont de app een toast: "Firmware-update beschikbaar" — de gebruiker kan dan in SettingsActivity de OTA starten.
| VERSION_UUID | "beb5483e-36e1-4688-b7f5-ea07361f26db" |
|---|---|
| Properties | READ |
| Waarde | String, bijv. `"1"` |
## BLE OTA Protocol
@ -99,7 +111,7 @@ Chunk nuttige data: 488 bytes (512 - 24 header overhead)
## Edge cases
- **OTA opnieuw starten:** `ota_1` wordt overschreven, geen clean-up nodig
- **Versie-check:** App kan firmwareversie opvragen voordat OTA start
- **Versie-check:** Bij BLE connect leest de app de firmwareversie van de ESP (`VERSION_UUID` characteristic). Bij mismatch met gebundelde firmware toont app een toast "Firmware-update beschikbaar" en activeert de OTA-knop.
- **Tijdens actieve relais:** relais vallen UIT bij start OTA (rust-toestand)
## Transfertijd schatting
@ -110,7 +122,7 @@ Chunk nuttige data: 488 bytes (512 - 24 header overhead)
| Bestand | Wijziging |
|---|---|
| `src/main.cpp` | OTA characteristic, `esp_ota_*` logica, OTA-modus flag, LED-signalering |
| `src/main.cpp` | VERSION characteristic, OTA characteristic, `esp_ota_*` logica, OTA-modus flag, LED-signalering |
| `platformio.ini` | Geen wijziging (partitietabel al OTA-ready) |
| `android/.../OtaManager.kt` | Nieuw: firmware lezen, hashen, chunken, BLE verzenden |
| `android/.../SettingsActivity.kt` | OTA-knop + progress UI |