From 290a87ee655511558ac2136e5ad3756a3d9f2674 Mon Sep 17 00:00:00 2001 From: eddy Date: Wed, 5 Aug 2026 07:28:46 +0200 Subject: [PATCH] docs: remove non-existent features from README (broker, client OTA server mode) --- README.md | 30 ++++++++---------------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 101b670..e647f6b 100644 --- a/README.md +++ b/README.md @@ -123,6 +123,7 @@ module → App: SylDa_Server\n of SylDa_Client\n (device type) App → module: KEY?\n module → App: DEVICE_ID:\n (module UUID, 16 bytes = 32 hex) module → App: PSK:\n (PSK, 32 bytes = 64 hex) +module → App: SERVER_UUID:\n (alleen client: opgeslagen server UUID, 32 hex) module → App: NO_KEY\n (als module nog geen key heeft) App → module: SET_KEY:\n (nieuwe PSK schrijven, 64 hex) @@ -139,15 +140,6 @@ module → App: OK\n De server ondersteunt tot **2 gelijktijdige BLE-clients** (MAX_CLIENTS 2). Elke client krijgt een onafhankelijke ECDH-handshake, AES-sleutel en sequence counter. Relais-commando's van alle clients worden gecombineerd: een relais gaat aan als minimaal één client het aan-commando stuurt (OR-logica). -De server kan OTA-updates distribueren naar verbonden clients via het **broker protocol**: - -``` -BROKER_CMD_UPDATE_AVAILABLE (0x10) — server vertelt client dat er een update klaarstaat -BROKER_CMD_CLIENT_READY (0x20) — client meldt zich klaar voor OTA -``` - -Broker packets zijn versleuteld met AES-256-GCM (48 bytes: 4 seq + 8 nonce + 20 plain + 16 tag), onafhankelijk van relay-commando encryptie. - ### Beveiligingsanalyse | Aanval | Hoe geweerd | @@ -177,16 +169,14 @@ De firmware kan **over-the-air** worden geüpdatet via BLE (zonder USB): Tijdens OTA zijn relais geforceerd UIT en knippert de LED groen. Na afloop (wachtend op confirm) is de LED geel. -> **Client OTA:** Clients kunnen ook OTA ontvangen. De server stuurt `BROKER_CMD_UPDATE_AVAILABLE`, de client antwoordt `BROKER_CMD_CLIENT_READY`, en start vervolgens een eigen BLE OTA-server (`SylDa_Client_OTA_XX`). De app verbindt met de client direct voor de OTA transfer. - ## Firmware De firmware is geschreven in C++ met PlatformIO en de Arduino-framework. BLE: ESP32 NimBLE library, crypto: mbedtls (ingebouwd in ESP-IDF). | Environment | Bronbestand | Rol | |---|---|---| -| `s3lite-server` | `src/main.cpp` | Ontvangt BLE-verbindingen, bedient relais, broker voor OTA-distributie | -| `s3lite-client` | `src/client.cpp` | Verbindt als BLE-central met server, stuurt relais-commando's, ontvangt OTA | +| `s3lite-server` | `src/main.cpp` | Ontvangt BLE-verbindingen, bedient relais | +| `s3lite-client` | `src/client.cpp` | Verbindt als BLE-central met server, stuurt relais-commando's | Firmwareversies: `version.txt` (single source of truth) → `src/version.h` (gegenereerd door `tools/pio_version_pre.py`) + `SylDaVersions.kt` (Android). Versiebeheer via `tools/check_versions.sh`. @@ -217,8 +207,6 @@ De touch sensoren, BLE, en interne knop werken onafhankelijk (OR-logica). De int | VERSION | `beb5483e-36e1-4688-b7f5-ea07361f26db` | READ | Firmware versie string | | OTA | `beb5483e-36e1-4688-b7f5-ea07361f26da` | WRITE_NR, NOTIFY | BLE OTA firmware update | | ECDH | `beb5483e-36e1-4688-b7f5-ea07361f26dc` | WRITE_NR, NOTIFY | ECDH sleuteluitwisseling | -| CLIENT_REGISTRY | `beb5483e-36e1-4688-b7f5-ea07361f26dd` | READ, WRITE_NR, NOTIFY | Client registratie (UUID + versie) | -| CLIENT_CONTROL | `beb5483e-36e1-4688-b7f5-ea07361f26de` | WRITE_NR, NOTIFY | Broker protocol (OTA notificaties) | ### Key provisioning @@ -261,7 +249,7 @@ Setup done. **Client firmware log (geprovisioneerd):** ``` -=== AtomS3 Lite SylDa Client v6 === +=== SylDa Client v5 === PSK loaded from NVS UUID loaded from NVS BLE: scanning... @@ -323,7 +311,6 @@ Firmware binaries: `tools/copy_firmware.sh` kopieert `.bin` bestanden naar `asse - **Key exchange geïntegreerd:** Module bijwerken = versie check → flashen (indien nodig) → PSK-uitwisseling — volledig automatisch - **Thema-selector:** Instellingen → Weergave met Systeem, Licht of Donker - **Permissies:** Vraagt BLUETOOTH_SCAN en BLUETOOTH_CONNECT. Bij weigeren wordt verwezen naar Instellingen -- **Broker protocol:** Ontvangt `CLIENT_CONTROL` notificaties van de server (OTA beschikbaar, client ready) ### Instellingenscherm @@ -346,7 +333,7 @@ De PSK en UUIDs worden opgeslagen in SharedPreferences en overleven app-herstart Vereisten: - Android SDK (API 34+) -- Java 21 (Java 26 werkt niet met Gradle) +- Java 17 target (JDK 21 voor Gradle — Java 26 werkt niet) - Gradle 8.14 (via wrapper) - AGP 8.5.2, Kotlin 2.0.21 (K2 compiler) - USB host support (raw Android USB API, geen externe serial library) @@ -401,8 +388,8 @@ Project_SylDa/ ├── version.txt # Single source of truth voor firmwareversies ├── icon.png / icon.svg # Project icon ├── src/ -│ ├── main.cpp # Server firmware (BLE + ECDH/AES + NVS + USB + touch + relais + OTA + broker) -│ ├── client.cpp # Client firmware (BLE central + ECDH/AES + touch + relais + OTA server mode) +│ ├── main.cpp # Server firmware (BLE + ECDH/AES + NVS + USB + touch + relais + OTA) +│ ├── client.cpp # Client firmware (BLE central + ECDH/AES + touch + relais) │ ├── ecdh_helper.h # ECDH crypto helper (secp256r1, AES-sleutel afleiding, pubkey HMAC) │ └── version.h # Auto-gegenereerd uit version.txt — niet handmatig bewerken ├── tools/ @@ -492,11 +479,10 @@ HMAC-SHA256 (vroegere versies) bood authenticatie maar geen confidentiality. ECD - De app gebruikt raw Android USB API (`UsbDeviceConnection.bulkTransfer`) — geen externe serial library. - `minSdk` is 26 (Android 8.0). `compileSdk`/`targetSdk` blijft op 34. - Sequence counters starten bij 1 (niet 0), wrappen bij 1.000.000. -- BLE MTU: server stelt 248 in (ESP32 NimBLE limiet), app vraagt 512. OTA/ECDH chunks passen zich aan aan `negotiatedMtu - 3`. +- BLE MTU: server stelt 248 in (ESP32 NimBLE limiet), app vraagt 512. OTA/ECDH chunks passen zich aan aan `negotiatedMtu - 7`. - Server krijgt maximaal 2 gelijktijdige BLE-clients. Client slaat server BLE-adres op in NVS voor snelle reconnect (valt terug op scan als adres niet werkt). - Server advertising bevat manufacturer data (0xFFFF) met eerste 4 bytes van device UUID voor snelle identificatie. - OTA: 500-byte chunks (aangepast aan MTU), 3 retries per chunk, SHA-256 hash verificatie, 10s 0xFF confirm timeout. -- Client in OTA server modus advertiseert als `SylDa_Client_OTA_XX` (XX = laatste 2 hex van device UUID). ## Release