6.7 KiB
Récap — Générateur de schémas unifilaires ETM-PowerSync
État au terme de la session. Sert de point d'entrée pour reprendre le projet.
1. Objectif
Assembler de petits schémas unifilaires pour les fiches de documentation, à partir d'une bibliothèque de symboles dessinés dans Inkscape. Cible : des schémas de quelques blocs (doc), pas des unifilaires complets d'installation.
2. Principe : « assembler des blocs, pas router »
- Chaque bloc est un glyphe compact avec des ports nommés sur ses bords.
- Une scène (fichier JSON) liste les blocs avec leur position
(x,y)et les liens entre ports nommés. - L'assembleur place les blocs et relie les ports par des traits droits ou en L. Aucun routage automatique : c'est l'auteur de la scène qui pose les blocs, ce qui reste simple parce que les schémas de doc sont petits.
Conséquence : ajuster un schéma = déplacer un bloc d'une ligne dans le JSON. Les symboles et l'assembleur ne changent pas.
3. Format d'un symbole (résumé du GABARIT-blocs.md)
- viewBox = corps + pattes. Le corps est inséré de 8 px ; chaque port est une patte de 8 px terminée par une pastille sur le bord de la viewBox (c'est ce bord qui sert d'alignement à l'assemblage).
- Placement : puissance en haut/bas (axe d'empilement), comms & signaux sur les côtés (face à leur destination), relais en bas.
- Entraxe DC = 68 px (ports à
centre ± 34), identique entre blocs voisins (cof_dc.OUT1/2↔onduleur.PV1/2). - Encodage : pastille =
<circle inkscape:label="term:NOM">; zone texte =<text inkscape:label="lbl:nom">(vide, remplie par l'assembleur) ; type = déduit du nom de fichier (symbol-cof-dc.svg→cof_dc). - Dans Inkscape : sélectionner la pastille →
Ctrl+Shift+O→ champ Étiquette → taperterm:…→ Entrée (obligatoire) →Ctrl+S.
4. Code couleur / types de liens
| Type de lien | Couleur | Trait |
|---|---|---|
power (puissance, ponts) |
navy #0d2b3b |
plein |
can (CAN/BMS) |
bleu #31a3dd |
pointillé |
rs485 (Modbus) |
orange #e69500 |
pointillé |
eth (Ethernet) |
cyan #00b4d8 |
pointillé |
relais (SG-Ready, ECS…) |
jaune #caa000 |
pointillé fin |
pwr (alim auxiliaire) |
rouge #e6194b |
plein |
pe (terre) |
vert #00ff00 |
plein |
5. Mise à la terre — deux méthodes
- Terre locale (
"to":"GND") : chaquePEse termine par un symbole ⏚ posé sur place, écarté et orienté selon le côté du port. Pour les schémas denses/éparpillés (cas général). Pas de fil qui traverse. - Rail (
"to":"DGT.RAIL") : la barrettedgtest une barre ; chaquePEtombe droit dessus à son aplomb (pas de numérotation). Pour une rangée de coffrets côte à côte.DGT.TERRE → prise_terre.TERRE.
6. Chaîne d'outils
extract.py— parcourt lessymbol-*.svg, résout les transformations Inkscape, lit lesinkscape:label(term:/lbl:), déduit le type du nom de fichier, et écritlibrary.json(coordonnées monde de chaque port + zones texte). À lancer après chaque modif de symbole.stack2.py— l'assembleur. Lit une scène JSON et produit le schéma SVG. Gère : placement libre(x,y), injectionrepere/displaydans les zoneslbl:, liens typés, cibles spécialesDGT.RAILetGND, connecteurs droits ou en L (horizfirst).block-template.svg— bloc vierge à dupliquer comme base.GABARIT-blocs.md— règle le dessin des blocs.REGLES-cablage.md— règle le câblage des scènes.
Format d'une scène
{
"w": 580, "h": 540,
"blocks": [
{"id":"U1","block":"symbol-onduleur.svg","at":[216,30],
"repere":"Ond1","display":{"puissance":"10 kW"}}
],
"links": [
{"from":"U1.OND","to":"Q1.OND","type":"power","horizfirst":true},
{"from":"U1.PE","to":"GND","type":"pe"}
]
}
7. Règles de câblage (résumé du REGLES-cablage.md)
- Arrivée :
Linky → Disj. différentiel principal → Smartmeter → TGBT.IN. Le smartmeter (= notrecompteur) est en tête de TGBT + RS485 vers onduleur. - Smartmeter ≠ Linky : le smartmeter est à nous ; le Linky est au distributeur (amont, hors câblage).
- PV (DC) :
String → COF-DC → Onduleur(entraxe 68). - Batterie série :
BMS.DC_BAT → BAT1.DC_IN,BAT1.DC_OUT → BAT2.DC_IN…,COMen parallèle. - Raccordement onduleur (port
OND) :- simple :
OND → COF-AC.AC_IN → COF-AC.AC_OUT → TGBT.OND - backup :
OND → TGBT.ONDetAC_IN → COF-BCKP.OND
- simple :
- Backup : critère = présence d'un
cof_backup. Avec →SECOURU/CONSOséparés vers le TGBT ; sans → pontTGBT.SECOURS ── TGBT.CONSO. - Ethernet : plus d'un appareil ETH → insérer un
switch_eth; sinon lien direct. - Terre : tous les
PE→ DGT (ou ⏚ local) → prise de terre.
8. Inventaire des symboles
Validés (passent l'extracteur, ports corrects)
string_pv(DC1,PE) et2string_pv(DC1,DC2,PE)cof_dc(IN1,IN2,OUT1,OUT2,PE)compteur/ smartmeter (L_IN,L_OUT,BUS)onduleur(PV1,PV2,BAT,OND,BMS,RS485,ETH,PE)onduleur_bckp(idem +AC_IN)microonduleur/microonduleur_2pv(AC_IN,OND,PE)bms(DC_INV,DC_BAT,COM,BMS)cof_backup(ONDen bas,RESEAU,SECOURU,CONSO,PE)tgbt(SECOURU,CONSO,OND,OUT1–OUT3,PE)dgt(RAIL_L,RAIL_R,TERRE) etprise_terre(TERRE)
À corriger
cof_ac: n'a plus queAC_IN→ rajouterAC_OUT(bas) +PE.bloc_batterie: encoreDC/COM→ passer àDC_IN(haut) /DC_OUT(bas) /COMpour l'empilage série.
Détails cosmétiques
- Onduleur : texte visible « AC-OUT » à renommer « OND » (l'étiquette du port est déjà bonne).
- Repères qui frôlent le texte visible en haut de certains blocs (zone
lbl:repereà décaler). - Types
2string_pv/microonduleur_2pv: à garder distincts ou normaliser enstring_pv/microonduleur(décision en attente).
9. ToDo — nouveaux composants à créer
- Borne de recharge (IRVE) — versions RS485 et ETH.
- PAC — versions SG-Ready, RS485, ETH.
- ECS avec commande HC/HP (jour/nuit).
- Routeur solaire.
(+ finir cof_ac et l'ajustement bloc_batterie, puis monter une fiche
complète de bout en bout appliquant toutes les règles.)
schemas/library.json : quand tu lanceras l'extracteur, il va créer ce fichier (le cache des ports). Pense à l'ajouter au .gitignore du repo — c'est le seul truc à ne pas versionner (il se régénère sans risque).