Files
EVCS/docs/PROTOCOLE_LVHUB_CERBO.md
Tallagrand Thierry 2682f69db7 Protocole LVHUB : reset hub + sequence complete refaite sans effet, la piste est le driver Venus can-bus-bms
Six leviers epuises. Le GX cree les topics etendus en value:null (decodeur qui
attend et ne recoit pas). Mort datee au redemarrage HA du 15/09 (§69), donc
cause logicielle Venus, pas materielle. Ne plus toucher au materiel batterie.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GwpFpy2aQ2rJok6tNQSbVj
2026-09-19 01:59:12 +02:00

317 lines
17 KiB
Markdown
Raw 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.
# Pourquoi le Cerbo ne voit qu'un pack sur deux — protocole de tests
*Rédigé le 14/09/2026, après l'incident de 16:24.*
## Le fait à expliquer
Le LV-Hub reconnaît les deux packs — LED 2 verte et trois bips, qui sont son
accusé de réception. Le Cerbo, relié à ce hub, n'en énumère qu'un.
```
nombre_de_modules_en_ligne = 4 (attendu : 9)
capacite_installee = 400 Ah (attendu : 650 = 4 x 100 + 5 x 50)
```
## Ce qui est déjà mesuré — à ne pas refaire
| fait | mesure |
|---|---|
| **Pack 2 porte bien du courant** | 14/09 20:14 : les quatre US5000 débitent −24 A au total, le Cerbo annonce **−41 A** au parc. Les 17 A d'écart sont le pack 2. |
| **Les deux chaînes s'ignorent** | Console sur pack 1 → 4 modules puis `Absent`. Console sur pack 2 → 5 modules puis `Absent`. Aucune n'énumère l'autre. |
| **Deux familles, deux générations** | Pack 1 : US5000, 48V/100AH, firmware **B69.26.0.0**, fabriqués 26-27/03/2026. Pack 2 : US2000C, 48V/50AH, firmware **B69.13.0.0** et **B69.13.2.0**. |
| **Le Cerbo passe par le pack 1** | Débrancher le pack 1 → le Cerbo ne voit plus rien du tout (constaté par le propriétaire). |
| **Pack 2 seul sur le hub a échoué** | Batterie 0 et hub au rouge (constaté par le propriétaire). |
| **Les deux packs sont sains** | 75 cellules du pack 2 à `SOHCount 0` / `Normal`, compteurs 0-1. Pack 1 neuf, aucune alarme. |
| **L'inventaire a changé le 13/09 à 21:35:09** | Événement isolé — ce n'est **pas** un redémarrage de Home Assistant, dont le dernier gros pic date du 06/09 14:21. |
## Ce que les captures de la console GX ajoutent (14/09 au soir)
| observation | pourquoi ça compte |
|---|---|
| **Un seul appareil Pylontech** est listé dans Configuration Système → Batteries : `AIRTRIA 8 US2000C`. L'autre entrée est `AIRTRIA MP2`, le moniteur du MultiPlus. | Le hub ne présente pas deux BMS au Cerbo mais **un seul, agrégé**. Le problème n'est donc pas « le Cerbo ignore un appareil » : c'est cet appareil unique qui n'annonce que quatre modules. |
| Le nom porte **« 8 US2000C »** | Ce device a été créé quand le parc comptait huit modules. Le nom a survécu à l'évolution du parc, pas l'inventaire. |
| Moniteur de batterie = **Automatic**, sélection retenue = le BMS Pylontech | Une sélection manuelle existe. À ne PAS toucher avant l'étape 4 : le BMS est le bon choix, c'est lui qui protège les cellules. |
| **Capacité installée / disponible = 400 Ah / 0,0 Ah** | La capacité *disponible* à zéro est anormale et n'a jamais été expliquée. À relever à chaque étape : si elle se remplit après un rescan, c'est le signe que l'inventaire s'est rafraîchi. |
| Les deux moniteurs donnent des courants différents — BMS −56,9 A, MP2 −37,1 A | Confirme que les deux mesurent à des points différents. Ne pas les comparer comme s'ils devaient coïncider. |
| Le GX tourne en **Venus OS Large**, avec **Node-RED** accessible | Moyen de lire ou d'agir directement sur le GX si les étapes 1 à 3 ne suffisent pas. Non utilisé pour l'instant. |
⚠️ **Le courant mesuré au parc n'est PAS un indicateur d'énumération.** Le Cerbo
lit le shunt, donc tout le parc, y compris ce que son BMS n'énumère pas. Les
seuls critères valables sont `nombre_de_modules_en_ligne` et
`capacite_installee`.
## Règles de sécurité — tirées de l'incident du 14/09
1. **FERMER EDF AVANT TOUTE MANŒUVRE**, et le laisser fermé jusqu'au retour à
l'état initial. Couper la communication du BMS arrête la gestion batterie,
donc l'onduleur, donc la maison : le 14/09 à 16:24 elle est restée dans le
noir **72 secondes**, le temps qu'une automatisation referme le réseau. Avec
EDF déjà fermé, la maison passe en direct et ne voit rien.
2. **De jour, batterie ni pleine ni basse** (SOC 40-80 %). Pleine, on ne peut
rien lire sur la charge ; basse, on n'a pas de marge.
3. **Une manœuvre à la fois**, avec un relevé avant et après. Deux changements
simultanés ne prouvent rien — c'est la leçon du premier test EDF du 27/08,
confondu par un passage nuageux.
4. **Éclairer la baie.** Le propriétaire l'a dit lui-même : l'incident vient
d'une fiche débranchée de nuit.
5. **Retour à l'état initial garanti** à la fin de chaque étape, même si
l'étape échoue.
Relevé avant et après chaque étape :
node tools/releve-parc-batterie.mjs "etape N - avant" --console /dev/ttyUSB0
node tools/releve-parc-batterie.mjs "etape N - apres" --console /dev/ttyUSB0
Lecture seule, journal horodaté dans `docs/mesures/`.
---
## Étape 1 — « Détecter à nouveau la batterie », le rescan ciblé
**La moins risquée de toutes, et à faire en premier.** La page de l'appareil
porte un bouton **« Détecter à nouveau la batterie »** (Paramètres → Appareils →
AIRTRIA 8 US2000C, en bas). Il annonce lui-même jusqu'à 30 secondes pendant
lesquelles le nom peut être incorrect. C'est exactement l'outil qu'il faut : un
rafraîchissement de l'inventaire, sans redémarrage et sans toucher un câble.
L'hypothèse qu'il teste est sérieuse : le device s'appelle encore
« 8 US2000C », un inventaire qui n'existe plus. Et l'inventaire a bel et bien
changé une fois, le 13/09 à 21:35:09 — événement isolé, vérifié comme n'étant
pas un redémarrage de Home Assistant.
- Fermer EDF, relevé « avant ».
- Appuyer sur **Détecter à nouveau la batterie**, attendre le retour du nom.
- Relevé « après ».
| résultat | conclusion |
|---|---|
| 9 modules / 650 Ah | **c'était un inventaire périmé.** Terminé. |
| le nom change mais toujours 4 / 400 | le rescan marche et ne trouve qu'un groupe → étape 1bis |
| rien ne bouge | le rescan n'a pas eu lieu → étape 1bis |
Retour arrière : aucun, rien n'a été modifié.
### ❌ FAIT LE 14/09 AU SOIR — SANS EFFET
Le propriétaire a lancé **plusieurs scans successifs**. Aucun changement :
l'inventaire reste à 4 modules et 400 Ah. Ses mots : « il s'en cogne
totalement ». La capture portant le bandeau bleu « Détecter à nouveau la
batterie peut prendre jusqu'à 30 secondes » a justement été prise **pendant** un
scan — donc le scan s'est bien déclenché, et il n'a rien trouvé de plus.
**Ce que ça élimine** : l'hypothèse de l'inventaire simplement périmé. Le Cerbo
REDEMANDE, et le BMS agrégé lui répond quatre modules. Le problème n'est donc
pas côté Cerbo mais dans ce que le hub lui présente.
**Ce que ça renforce** : l'étape 3 devient la plus informative des trois
restantes, puisqu'elle demande si le pack 2 est joignable du tout par ce chemin.
L'étape 1bis garde son sens — un redémarrage reprend aussi l'initialisation du
port, pas seulement l'inventaire — mais elle devient peu probable.
## Étape 1bis — Redémarrer le Cerbo
Si le rescan ciblé n'a rien donné, le redémarrage complet reprend toute la
détection depuis le début.
- EDF toujours fermé, relevé « avant ».
- GX → Paramètres → Général → Redémarrer. Ne PAS toucher aux câbles.
- Attendre le retour complet, relevé « après ».
Même grille de lecture qu'à l'étape 1. Si l'inventaire reste à 4 / 400 →
étape 2.
## Étape 2 — Inverser l'ordre de mise sous tension
Sur une chaîne Pylontech, l'ordre d'allumage détermine qui prend le rôle de
maître et comment les adresses se distribuent. Si le pack 1 s'annonce toujours
en premier, il est plausible qu'il « prenne la place ».
- Fermer EDF, relevé « avant ».
- Éteindre les deux packs. Rallumer le **pack 2 d'abord**, attendre sa
stabilisation et les bips du hub, puis le pack 1.
- Relevé « après ».
| résultat | conclusion |
|---|---|
| 9 modules / 650 Ah | l'ordre était la cause. **À consigner comme procédure de remise en service.** |
| 5 modules / 250 Ah | le Cerbo suit le **premier allumé** — il ne sait pas fusionner les deux groupes → étape 3 |
| toujours 4 / 400 | l'ordre n'y est pour rien → étape 3 |
Retour arrière : rallumer dans l'ordre d'origine.
## Étape 3 — Le pack 2 seul, pour savoir si le Cerbo sait lui parler
Question précise : le Cerbo est-il **capable** de dialoguer avec des US2000C
dans cette installation, ou seulement avec les US5000 ?
- Fermer EDF, relevé « avant ».
- Déconnecter le pack 1 du hub, laisser le pack 2 seul, comme le pack 1 l'est
aujourd'hui (même type de liaison, même port).
- Relevé « après », puis **tout remettre**.
| résultat | conclusion |
|---|---|
| 5 modules / 250 Ah | le Cerbo sait parler aux deux, séparément. **Le problème est la COMBINAISON** → étape 4 |
| rien du tout | le pack 2 n'est pas joignable par ce chemin — problème de liaison ou de port, indépendant du mélange |
⚠️ Sur cette étape la maison tourne sur cinq US2000 seuls, EDF fermé. Courte,
et ne pas la faire en pleine cuisson.
## Étape 4 — Documentation constructeur, avant toute reconfiguration
Si l'étape 3 montre que chacun fonctionne seul mais pas ensemble, alors la
question est celle du **mélange US5000 / US2000C sur un même LV-Hub**, et de la
différence de firmware (B69.26 contre B69.13).
⚠️ **Ne rien reconfigurer avant d'avoir lu la documentation Pylontech sur ce
point précis.** C'est un cas que le constructeur traite explicitement, et je ne
raisonnerai pas de mémoire sur du câblage batterie. Les éléments à chercher, dans
cet ordre : règles de mélange de modèles dans un même groupe et sur un même hub ;
adressage et rôle maître par port du hub ; compatibilité des versions de
firmware entre groupes ; et la procédure officielle de mise en service d'un hub
à deux groupes.
Une mise à jour de firmware du pack 2 vers la génération du pack 1 est une piste
**possible mais pas démontrée**, et elle se décide sur la documentation, pas sur
une déduction. Si elle est retenue : sauvegarde des relevés avant, un module à
la fois, et jamais pendant que la maison dépend de la batterie.
---
## Ce que le protocole ne cherche PAS à faire
- **Remettre en cause les 180 A.** Les neuf modules sont sains et le courant se
répartit physiquement sur tous — moins de 14 A par équivalent US2000. Le BMS
garde la main, et il a démontré le 05/09 une réaction en cinq secondes.
- **Réparer quoi que ce soit dans l'urgence.** L'installation fonctionne : le
pack 2 fournit son courant, tous les modules sont sains, aucune alarme.
Le seul vrai coût de la situation actuelle est que **la protection cellule
visible depuis Home Assistant ne couvre que quatre modules sur neuf**. C'est ce
qui justifie de comprendre, pas de se précipiter.
---
# Nuit du 18-19/09/2026 — le detail batterie est mort depuis le 15/09, PAS a cause des packs
## Ce que la nuit a etabli (a ne pas re-tester)
Le proprietaire voulait faire reconnaitre les 9 modules en passant le pack
US2000C (5 modules) en maitre a la place du pack US5000 (4 modules). Trois
configurations essayees, toutes lues en direct sur le bus MQTT du GX
(`battery/512`) ET sur la console serie :
| configuration | 3 bips ? | BMS vu par le Cerbo | trames de BASE | trames ETENDUES |
|---|---|---|---|---|
| US2000C maitre → hub → Cerbo | **non, jamais** | oui (agrege) | ok | **null** |
| US5000 maitre → **direct** Cerbo (hub retire) | — | **AUCUN** — retombe sur vebus/MP2 | — | — |
| US5000 maitre → hub → Cerbo (config du 12/09) | oui | oui (agrege) | ok | **null** |
- **trames de base** = SOC, tension, courant, temperature, limites charge/
decharge (250/250 A), toutes les alarmes de base (`no_alarm`). Elles passent :
**le BMS protege le parc**.
- **trames etendues** = `System/NrOfModulesOnline`, `InstalledCapacity`,
`Capacity`, `FirmwareVersion`, `Serial`, `System/MinCellVoltage`/`MaxCellVoltage`
et leurs IDs, le diagnostic par module. **Toutes null dans les deux configs
qui ont un BMS.**
## Les trois conclusions dures
1. **Le detail etait deja mort le 15/09, avant toute manip de packs.** Le §69 du
HANDOFF l'avait mesure : 26 entites figees depuis le redemarrage HA du 15/09
05:09. Le « 4 modules / 400 Ah » que le Cerbo affichait etait une valeur
**figee et fausse** (le dernier inventaire d'avant le 15/09, jamais
rafraichi). Le renommage du device + la MAJ du Cerbo faits cette nuit ont
vide ce cache : on est passe de *fige-faux* a *null-honnete*. Ce n'est pas
une regression, c'est la verite qui remonte.
2. **Inverser le maitre ne pouvait rien reparer.** Le defaut est anterieur de
deux jours et ne depend pas de l'ordre des groupes : US2000C via hub et
US5000 via hub donnent le meme symptome au watt pres. Les 9 modules sont
sains des deux cotes (console : ecarts 1-2 mV).
3. **Le coupable est le hub / l'agregation, pas les groupes ni le Cerbo.** Le
hub presente au Cerbo **un seul BMS agrege** (une seule `unit` en console) et
ne lui transmet que les trames de base. Le Cerbo, mis a jour cette nuit,
n'y change rien.
## Le mystere des 3 bips — resolu
Le proprietaire n'obtient les 3 bips (tous les groupes en ligne) **qu'avec les
US5000 en tete**, jamais avec les US2000C en tete, et jamais avec deux cables
bleus (un par groupe vers le hub). La seule combinaison qui donne les 3 bips :
**maitre US5000 → cable bleu → LV-Hub, et cable GRIS entre pack 1 et pack 2.**
La console confirme pourquoi : depuis un maitre, `pwr` n'enumere que sa propre
chaine (5 modules cote US2000C, 4 cote US5000) et voit l'autre groupe `Absent`.
Le chainage inter-groupes ne fonctionne, dans cette installation, que dans le
sens US5000-tete. C'est un fait de cablage, pas un choix — a respecter.
## Console du hub (branchee cette nuit, pour memoire)
`help` du LV-Hub liste : `bat info pwr unit sysinfo getpwr datalist data log
soh stat time cmdquit` + les `t*` de test et `updata`/`login` (INTERDITS).
**Sortir par `cmdquit`** avant de debrancher. Brancher la console fait
redemarrer le hub (horloge retombee a `2000-01-01`).
⚠️ En mode console, `getpwr`/`sysinfo` affichent `SysError`, `Max Chg/Dsg Curr
0`, coupure `396800 mV` — **ce sont probablement des artefacts du mode console**,
pas l'etat reel (meme piege que le 05/09). Ne pas conclure a une panne du hub
sur ces valeurs. Le seul fait solide de la console hub : il ne voit qu'**une
seule unite agregee**, ce qui confirme qu'il fusionne les deux groupes.
## Etat retabli en fin de nuit (config a garder)
**US5000 maitre → cable bleu → hub → Cerbo, cable gris pack 1 ↔ pack 2.**
3 bips, LED STATUS verte, LED 2 verte. BMS actif, SOC reel, protection OK.
EDF rendu a l'automatique, strategie `auto_solar_plus`, releve serie relance
sur le pack 2. Le detail cellules cote HA reste perdu ; il est couvert par le
releve serie automatique (`deploy/releve-cellules/`, les 5 US2000C).
## Ce qui reste a instruire — A FROID, pas la nuit
Pourquoi le hub a cesse d'emettre les trames etendues vers le ~15/09. Pistes,
sur la **documentation constructeur** et non de memoire :
- un firmware du LV-Hub (verifier version et disponibilite d'une MAJ) ;
- l'effet de la MAJ Venus OS du 18/09 sur le decodage des trames Pylontech
agregees (deux variables ont bouge le meme soir — MAJ Cerbo ET manips packs) ;
- le format de trame etendu attendu par le Cerbo quand la source est un hub
agrege plutot qu'un BMS unique.
⚠️ Ne PAS relancer d'essais d'inversion de maitre : la nuit a montre que ce
levier n'agit pas sur ce symptome.
*Redige le 19/09/2026 vers 01:45.*
## Complement de la meme nuit (~02:00) — reset hub ET sequence complete refaite : sans effet
Apres la premiere serie, le proprietaire a tente deux leviers de plus, EDF
ferme et force a chaque fois :
1. **reset du hub seul** (sans toucher aux packs) → trames etendues toujours
`null`, base intacte (SOC 77, 250/250 A) ;
2. **sequence complete de mise en service refaite** (extinction totale, 3 bips,
DIP, cable bleu en dernier, hub allume) → **identique, trames etendues
`null`**.
Bilan : **six leviers independants, aucun ne ramene les trames etendues.**
rescan Cerbo · redemarrage Cerbo · MAJ firmware Cerbo · inversion du maitre ·
reset hub · sequence complete. Le levier materiel est epuise ; le refaire ne
changera pas le verdict.
### Ce que ca designe : le driver Venos `can-bus-bms`, pas le hub materiel
Le GX declare `Mgmt/ProcessName = can-bus-bms`, `ProcessVersion = v0.71`,
`ProductId 45065 / Pylontech battery`. Il **cree tous les topics etendus**
(`NrOfModulesOnline`, `Capacity`, `MinCellVoltage`…) mais avec `value: null` :
son decodeur les ATTEND et ne les RECOIT jamais. Et §69 a date la mort de ces
trames au **redemarrage HA du 15/09 05:09** — un redemarrage HA ne touche pas le
hub materiel. La cause est donc dans la couche logicielle Venus (driver
`can-bus-bms`, ou un etat/reglage bascule le 15/09, ou la MAJ Venus du 18/09),
pas dans le hub ni dans l'ordre des packs.
Prochaine piste, A FROID et sur doc : version du driver `can-bus-bms` de Venus
et son changelog autour du 15/09 ; existence d'un reglage GX « BMS agrege par
hub » ; et l'effet de la MAJ Venos du 18/09. **Ne plus toucher au materiel
batterie pour ce symptome — c'est demontre inutile.**
*Complete le 19/09/2026 vers 02:00. Service retabli : US5000 maitre / 3 bips,
EDF auto, strategie auto_solar_plus, SOC 77 reel, releve serie actif sur pack 2.*