From 6df65d9adf291a085e018c1f283382cc2c6c6b71 Mon Sep 17 00:00:00 2001 From: eddy Date: Thu, 30 Jul 2026 06:56:04 +0200 Subject: [PATCH] docs: add version check on BLE connect to OTA spec --- .../specs/2026-07-30-ble-ota-design.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/docs/superpowers/specs/2026-07-30-ble-ota-design.md b/docs/superpowers/specs/2026-07-30-ble-ota-design.md index 96df1ae..93d33be 100644 --- a/docs/superpowers/specs/2026-07-30-ble-ota-design.md +++ b/docs/superpowers/specs/2026-07-30-ble-ota-design.md @@ -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 |