Patrick Schurig 66aa71c990
All checks were successful
Build & Deploy docs / build-deploy (push) Successful in 2m38s
mise a jour
2026-06-06 09:51:43 +02:00
..
2026-06-06 09:51:43 +02:00
2026-06-06 09:51:43 +02:00
2026-06-06 09:51:43 +02:00
2026-06-06 09:51:43 +02:00
2026-06-06 09:51:43 +02:00

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/2onduleur.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.svgcof_dc).
  • Dans Inkscape : sélectionner la pastille → Ctrl+Shift+O → champ Étiquette → taper term:…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") : chaque PE se 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 barrette dgt est une barre ; chaque PE tombe 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 les symbol-*.svg, résout les transformations Inkscape, lit les inkscape:label (term:/lbl:), déduit le type du nom de fichier, et écrit library.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), injection repere/display dans les zones lbl:, liens typés, cibles spéciales DGT.RAIL et GND, 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)

  1. Arrivée : Linky → Disj. différentiel principal → Smartmeter → TGBT.IN. Le smartmeter (= notre compteur) est en tête de TGBT + RS485 vers onduleur.
  2. Smartmeter ≠ Linky : le smartmeter est à nous ; le Linky est au distributeur (amont, hors câblage).
  3. PV (DC) : String → COF-DC → Onduleur (entraxe 68).
  4. Batterie série : BMS.DC_BAT → BAT1.DC_IN, BAT1.DC_OUT → BAT2.DC_IN…, COM en parallèle.
  5. Raccordement onduleur (port OND) :
    • simple : OND → COF-AC.AC_IN → COF-AC.AC_OUT → TGBT.OND
    • backup : OND → TGBT.OND et AC_IN → COF-BCKP.OND
  6. Backup : critère = présence d'un cof_backup. Avec → SECOURU/CONSO séparés vers le TGBT ; sans → pont TGBT.SECOURS ── TGBT.CONSO.
  7. Ethernet : plus d'un appareil ETH → insérer un switch_eth ; sinon lien direct.
  8. 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) et 2string_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 (OND en bas, RESEAU, SECOURU, CONSO, PE)
  • tgbt (SECOURU, CONSO, OND, OUT1OUT3, PE)
  • dgt (RAIL_L, RAIL_R, TERRE) et prise_terre (TERRE)

À corriger

  • cof_ac : n'a plus que AC_IN → rajouter AC_OUT (bas) + PE.
  • bloc_batterie : encore DC/COM → passer à DC_IN (haut) / DC_OUT (bas) / COM pour 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 en string_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).