docs(recap): reprise de 3g-1 — le code est complet, rien n'est déployé
Session arrêtée sur contexte saturé. Le paquet 1.15.2+etm21 est CONSTRUIT mais le banc tourne encore etm20 : la transplantation n'a jamais tourné une seule fois, sur un banc qui porte une Terra AC réelle. C'est la première chose à faire, et LM-1204-b avec. Le RECAP porte la commande exacte de reprise, les cinq points à vérifier au redéploiement, et ce qui reste ouvert — dont la bascule 0,4 / 0,9 devenue possible depuis que SunSpec déclare energystorage, et jamais faite. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XPUo3RMr8SzK6qbFtfBm8H
This commit is contained in:
parent
1478d8f11c
commit
0b216f99a8
87
docs/RECAP_3g.md
Normal file
87
docs/RECAP_3g.md
Normal file
@ -0,0 +1,87 @@
|
||||
# RECAP — reprise de session, 3g-1
|
||||
|
||||
**Arrêt** : 2026-08-26, contexte saturé. **Branche** : `feature/beta-rulebased`.
|
||||
**Dernier commit** : `1478d8f` — *feat(3g-1) : les bornes entrent dans le waterfall*.
|
||||
|
||||
---
|
||||
|
||||
## 1. État exact à la reprise
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| Code 3g-1 | **complet**, compile 0 erreur / 0 warning, `tests/auto/loadmodel` 15/15 |
|
||||
| Paquet `1.15.2+etm21` | **construit** dans le conteneur, à `/root/powersync-energy-plugin-nymea_1.15.2+etm21_arm64.deb` |
|
||||
| Déployé sur `.75` | **NON** — le banc tourne encore `1.15.2+etm20` |
|
||||
| Critère LM-1204-b | **NON exercé** — c'est la première chose à faire |
|
||||
|
||||
**Reprendre exactement ici** :
|
||||
|
||||
```bash
|
||||
# 1. sortir le paquet du conteneur
|
||||
lxc exec build-cross-arm64 -- cat /root/powersync-energy-plugin-nymea_1.15.2+etm21_arm64.deb > /tmp/etm21.deb
|
||||
# 2. déployer
|
||||
cd ~/projects/etm-powersync/etm-powersync-deploy && ./deploy.sh /tmp/etm21.deb
|
||||
# 3. exercer LM-1204-b (specs/spec_loadmodel.md)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. Ce que 3g-1 contient
|
||||
|
||||
**Les bornes entrent dans le waterfall.** Elles partagent le budget, décrémentent la cascade,
|
||||
et portent un rang qui a enfin un sens.
|
||||
|
||||
Le défaut corrigé n'était pas théorique : `planSurplusCharging()` calculait l'allocation **une
|
||||
fois avant la boucle** et ne la décrémentait jamais — chaque borne recevait la **totalité** du
|
||||
surplus. Le rattrapage venait du compteur au cycle suivant, pas de l'arbitrage.
|
||||
|
||||
Trois motifs EV **supprimés** (pas remplacés) : `EV_SURPLUS` → `SURPLUS_SETPOINT`, `EV_ECO_MIN`
|
||||
→ le **plancher** du §12, `EV_IDLE` → `BELOW_MIN_POWER` / `SURPLUS_INSUFFICIENT`.
|
||||
|
||||
**Restent au proxy, délibérément** : échéance de départ, spot market, protection de surcharge,
|
||||
estimation de SoC. `evReservedW` est **restreint** au financement réseau, pas supprimé.
|
||||
|
||||
---
|
||||
|
||||
## 3. À vérifier en priorité au redéploiement
|
||||
|
||||
> **3g-1 touche le chemin EV en production sur un banc avec une Terra AC réelle.** Rien de
|
||||
> tout ceci n'a encore tourné une seule fois.
|
||||
|
||||
1. **LM-1204-b** — surplus ≈ 4 kW, deux bornes à ≈ 1,4 kW de plancher. Attendu : la première
|
||||
servie à fond, la seconde à 0 si le reliquat est sous son plancher. **Discriminant : le
|
||||
motif publié** — `BELOW_MIN_POWER` prouve que l'arbitre a refusé ; une borne à 0 W *sans*
|
||||
motif de plancher prouve que c'est le matériel, donc que le test ne prouve rien.
|
||||
2. **Inversion de rang** entre les deux bornes → la charge servie doit changer.
|
||||
3. **`loads[]` contient-il les bornes**, et la somme des `allocatedW` retombe-t-elle sur
|
||||
`budget.allocatedW` ? (Ce n'était pas vrai avant 3g-1 — c'est le changement de contrat.)
|
||||
4. **Le nombre de phases** : vérifier que le plancher publié correspond au nombre **visé**.
|
||||
C'est le piège le plus silencieux du lot.
|
||||
5. **Aucune double commande** : une borne servie par l'échéance ne doit pas recevoir en plus
|
||||
une allocation de surplus (`gridFundedEvs`).
|
||||
|
||||
---
|
||||
|
||||
## 4. Ce qui reste ouvert
|
||||
|
||||
- **§12 / `BELOW_MIN_POWER` sur le banc** : ✅ observé le 2026-08-26 —
|
||||
`chauffe-eau 0 W {budgetW: 249, minPowerW: 500}` et le budget a cascadé vers la PAC.
|
||||
- **`BATTERY_RESERVE`** : observé, **et corrigé à cette occasion** — il était publié avec
|
||||
`withheldW: 0` sur un surplus négatif. Conditionné à `withheldW > 0` depuis. **La correction
|
||||
n'a pas été revérifiée sur machine.**
|
||||
- **Bascule `batteryLevelConsideration` 0,4 / 0,9** : jamais faite avec une batterie visible.
|
||||
Elle est possible depuis `nymea-plugin-sunspec-etm01 1.15.2+etm11`, qui déclare enfin
|
||||
`energystorage`. **Le banc est resté à 0,9.** À faire dans les deux sens, journaux à l'appui.
|
||||
- **§10 éco/confort** : ne part pas sans l'extension du délestage au waterfall (précondition
|
||||
écrite, `specs/spec_loadmodel.md` §10).
|
||||
- **Brief ouvert chez le plugin SunSpec** : `etm-powersync-plugins-modbus`,
|
||||
`BRIEF_sunspec_energystorage.md` — la partie `energystorage` est faite ; la **question §5**
|
||||
(l'onduleur ne publie aucun cumul, ce qui gèle `totalProduction`) reste ouverte.
|
||||
|
||||
---
|
||||
|
||||
## 5. Documents à lire à la reprise, dans cet ordre
|
||||
|
||||
1. `docs/DESIGN_3g.md` — ce qui se transporte et les trois choses qui ne se transportent pas.
|
||||
2. `specs/spec_loadmodel.md` §12 (plancher), LM-1203-b (réserve annulée), LM-1204-b (critère).
|
||||
3. `docs/RELEVE_LOTD.md` — la méthode de relevé attendue : machine / test / lecture, distingués.
|
||||
Loading…
x
Reference in New Issue
Block a user