Files
L'électron rare f55093d6fe
ESP-IDF CI / Host Tests (Unity) (push) Successful in 1m8s
CI / firmware-native (push) Successful in 2m57s
Rust Protection Tests / Cargo test (host) (push) Failing after 3m21s
ESP-IDF CI / ESP-IDF Build (v5.4) (push) Failing after 6m55s
ESP-IDF CI / Memory Budget Gate (push) Has been skipped
qa-cicd-environments / qa-kxkm-s3-build (push) Successful in 8m53s
qa-cicd-environments / qa-sim-host (push) Successful in 2m2s
qa-cicd-environments / qa-kxkm-s3-memory-budget (push) Successful in 11m17s
chore: import KXKM Batterie Parallelator
Context: the project archive (KXKM_Batterie_Parallelator-main) had
no git history locally; a fresh repository is needed to host it on
git.saillant.cc (electron/KXKM_Batterie_Parallelator).

Approach: initialize a new repo on branch main, stage the archive
content, and harden .gitignore before the first commit.

Changes:
- Import the full project tree: firmware/, firmware-idf/,
  firmware-rs/, iosApp/, kxkm-bmu-app/, kxkm-api/, hardware/,
  docs/, specs/, scripts/, models/, tests/
- Keep project dotfiles tracked despite the trailing '.*' ignore
  rule: .github/, .claude/, .superpowers/, .gitattributes,
  .markdownlint.json
- Extend .gitignore: firmware/src/credentials.h (local secrets,
  template kept), kxkm-bmu-app/**/build/ (66 MB compiled iOS
  framework), .remember/ (session data)

Impact: the project can now be maintained on the self-hosted Gitea
forge with a clean, secret-free initial history.
2026-07-04 12:32:28 +02:00

47 lines
1.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Spec — KXKM Batterie Parallelator
> Kill_LIFE gate: S0 → S1
> Version: 1.0 (2026-03-25)
## Fonctions requises
| ID | Fonction | Priorité |
|-----|----------|----------|
| F01 | Mesure tension chaque batterie via INA237 (I²C) | MUST |
| F02 | Mesure courant chaque batterie via INA237 (I²C) | MUST |
| F03 | Coupure relais via TCA9535 sur sur-tension (>30 V) | MUST |
| F04 | Coupure relais sur sous-tension (<24 V) | MUST |
| F05 | Coupure relais sur sur-courant (>1 A abs) | MUST |
| F06 | Coupure relais sur déséquilibre tension (>1 V vs max) | MUST |
| F07 | Reconnexion automatique après N coupures (délai 10 s) | MUST |
| F08 | Coupure permanente après dépassement Nb_switch_max (5) | MUST |
| F09 | Log série 115200 baud — état de chaque batterie | SHOULD |
| F10 | Interface web embarquée (AsyncWebServer) — supervision | COULD |
| F11 | Support jusqu'à 16 packs batterie | MUST |
## Paramètres configurables
```cpp
#define alert_bat_min_voltage 24000 // mV
#define alert_bat_max_voltage 30000 // mV
#define alert_bat_max_current 1 // A
#define voltage_diff 1 // V — seuil déséquilibre
#define Nb_switch_max 5 // coupures max avant verrouillage
#define reconnect_delay 10000 // ms
```
## Interfaces matérielles
| Interface | Composant | Rôle |
|-----------|-----------|------|
| I²C SDA/SCL (GPIO 32/33) | INA237 ×N | Mesure V/I/P |
| I²C | TCA9535PWR ×N | Pilotage relais MOSFET |
| UART0 115200 | — | Debug / log |
| WiFi | — | Accès interface web |
## Non-objectifs
- BMS chimique (gestion SOC, SOH, thermique) : hors périmètre
- Équilibrage actif des cellules : hors périmètre
- Connexion ArtNet / OSC (présent dans K32-lib mais non utilisé ici)