docs: LED stable connection design spec (#4)
This commit is contained in:
parent
0bf2dcd00f
commit
bb9701dac5
1 changed files with 97 additions and 0 deletions
|
|
@ -0,0 +1,97 @@
|
|||
# LED-signalering: stabiele verbinding
|
||||
|
||||
**Issue:** [#4](https://git.eddydevink.nl/eddy/Project_SylDa/issues/4) — Leds mogen uit na een minuut stabiele verbinding
|
||||
**Datum:** 2026-08-02
|
||||
**Status:** goedgekeurd
|
||||
|
||||
## Doel
|
||||
|
||||
Uniforme LED-signalering voor zowel server als client. De LED dient als debug-indicator tijdens opstarten en bij verbindingsproblemen. Na 60 seconden continue stabiele verbinding schakelt de LED uit.
|
||||
|
||||
## Kleurenschema
|
||||
|
||||
Identiek voor server (`main.cpp`) en client (`client.cpp`):
|
||||
|
||||
| State | LED | Prioriteit |
|
||||
|-------|-----|-----------|
|
||||
| OTA in progress | Groen knipperend (100ms interval) | 1 (hoogst) |
|
||||
| OTA completed, waiting confirm | Geel vast | 1 |
|
||||
| Geen verbinding | Rood | 2 |
|
||||
| Verbinding actief (< 60s) | Geel | 3 |
|
||||
| Verbinding stabiel (>= 60s) | **Uit** | 4 (laagst) |
|
||||
| Relais-flash (overlay) | Groen 150ms | overlay |
|
||||
|
||||
Relais-flash is een overlay: toont kort groen bij verandering in relais-status, daarna keert LED terug naar de kleur die hoort bij de huidige verbindingsstatus.
|
||||
|
||||
## Timer-logica
|
||||
|
||||
- Timer (`connectionStableMs`) start zodra de **eerste** verbinding tot stand komt
|
||||
- `connectionStableMs` telt op zolang er minstens 1 verbinding is (connectedCount > 0 voor server, connected == true voor client)
|
||||
- Nieuwe verbindingen die later bijkomen resetten de timer **niet**
|
||||
- Bij disconnect van een verbinding terwijl er nog andere verbindingen zijn: timer loopt door
|
||||
- Pas als **alle** verbindingen wegvallen: `connectionStableMs` = 0, LED direct rood
|
||||
- Drempel: `STABLE_LED_TIMEOUT_MS = 60000`
|
||||
|
||||
### Server-specifiek
|
||||
|
||||
- `connectedCount`: aantal actieve BLE-clients (0-2)
|
||||
- Timer loopt als `connectedCount > 0`
|
||||
- Alle clients disconnect = reset
|
||||
|
||||
### Client-specifiek
|
||||
|
||||
- `connected`: boolean, of client verbonden is met server
|
||||
- Timer loopt als `connected == true`
|
||||
- Disconnect = reset
|
||||
|
||||
## Relais-flash mechanisme
|
||||
|
||||
- Detectie: vergelijk huidige relais-state met vorige loop-iteratie
|
||||
- Bij verandering: zet `relayFlashUntil = millis() + 150`
|
||||
- Zolang `millis() < relayFlashUntil`: LED groen (overschrijft verbindingskleur)
|
||||
- Flash reset de 60s timer **niet**
|
||||
- **Server:** detecteert verandering in `relay1State || relay2State` (combinatie van touch, button, en BLE-commands)
|
||||
- **Client:** detecteert verandering in `relay1State || relay2State` (alleen touch/button)
|
||||
|
||||
## OTA (beide firmwares)
|
||||
|
||||
OTA heeft hoogste prioriteit en override alle andere LED-states:
|
||||
|
||||
- **OTA in progress** (`otaInProgress == true`): groen knipperend, 100ms interval
|
||||
- **OTA completed, waiting confirm** (`otaEnded == true && !otaConfirmed`): geel vast
|
||||
- **OTA confirm timeout** of **OTA error**: valt terug naar normale verbindings-LED
|
||||
- **OTA success + reboot**: groen vast, dan reboot
|
||||
|
||||
Client heeft OTA-logica nog niet geïmplementeerd, maar de LED-code wordt alvast voorbereid met dezelfde OTA-override structuur zodat toekomstige OTA-implementatie direct past.
|
||||
|
||||
## LED-update volgorde in loop()
|
||||
|
||||
```
|
||||
1. Bepaal base-kleur op basis van verbindingsstatus (rood/geel/uit)
|
||||
2. Controleer relais-flash: als actief -> groen
|
||||
3. Controleer OTA-override: als actief -> OTA-kleur
|
||||
4. FastLED.show()
|
||||
```
|
||||
|
||||
## Wijzigingen per bestand
|
||||
|
||||
### `src/main.cpp` (server)
|
||||
|
||||
- Toevoegen: `STABLE_LED_TIMEOUT_MS`, `connectionStableMs`, `relayFlashUntil`, `lastRelayActive`
|
||||
- Aanpassen: LED-logica in `loop()` — base-kleur uit `connectionStableMs` i.p.v. `connectedCount > 0`
|
||||
- Toevoegen: relais-flash detectie
|
||||
- Behouden: OTA LED-override (werkt al, prioriteit blijft hoogst)
|
||||
- Verwijderen: setup LED-blinks (drie groene knipperingen) — vervangen door rood (geen verbinding)
|
||||
|
||||
### `src/client.cpp` (client)
|
||||
|
||||
- Toevoegen: `STABLE_LED_TIMEOUT_MS`, `connectionStableMs`, `relayFlashUntil`, `lastRelayActive`
|
||||
- Aanpassen: LED-logica in `loop()` — base-kleur uit `connectionStableMs`, geen aparte relais-kleur meer
|
||||
- Toevoegen: relais-flash detectie
|
||||
- Toevoegen: OTA-override structuur (placeholder, `otaInProgress` default `false`)
|
||||
- Setup: LED rood i.p.v. direct rood (blijft rood, maar nu als onderdeel van uniform schema)
|
||||
|
||||
### `src/version.h`
|
||||
|
||||
- Server versie bump naar "16"
|
||||
- Client versie bump naar "2"
|
||||
Loading…
Reference in a new issue