Sélection des émetteurs de chauffage et de rafraîchissement PRO
Documentation par l'exemple — saisie, algorithme et résultats
- Outil
- rubrique-CVC/selectionEmetteurs.php — Bâti'Tools (compte PRO)
- Ce que fait l'outil
- À partir d'un tableau de besoins pièce par pièce (déperditions, apports) et d'une base d'émetteurs saisie par l'utilisateur, propose automatiquement, pour chaque local, la combinaison d'émetteurs qui couvre le besoin de chauffage au plus juste, puis calcule les puissances installées et les écarts au besoin
Tout se passe dans le navigateur : le tableau des besoins (issu d'un logiciel tiers de calcul de déperditions, type Climawin ou Pléiade) est importé par glisser-déposer d'un fichier CSV/texte, et la base d'émetteurs — les fiches constructeur de l'utilisateur — est saisie ou importée en .json et conservée dans le navigateur (localStorage) d'une session à l'autre. Rien n'est transmis à un serveur : ni les données du projet en cours, ni la base d'émetteurs.
Format du tableau de besoins importé
Fichier texte (CSV, point-virgule, tabulation ou virgule — détecté automatiquement), avec ou sans ligne d'en-tête (détectée en testant si la 3e colonne d'une ligne est un nombre pur), sept colonnes dans cet ordre :
- 1 — Zone / logement
- Regroupement utilisé par le report des besoins entre locaux (voir plus bas)
- 2 — Local
- Nom de la pièce
- 3 — Surface (m²)
- 4 — Hauteur (m)
- Sert au calcul du volume (surface × hauteur), sauf si l'utilisateur force le volume à la main
- 5 — Famille d'émetteurs
- Doit correspondre au nom d'une famille saisie en partie 2 pour que la sélection automatique s'applique
- 6 — Déperditions (W)
- 7 — Apports sensibles (W)
Exemple de tableau des besoins importable
Voici, colonne par colonne, à quoi doit ressembler le tableau — c'est exactement le contenu que produit le bouton « Télécharger un modèle de tableau » de l'outil. L'ordre des colonnes est imposé ; leurs intitulés, non (la ligne d'en-tête est facultative et peut être rédigée librement).
| 1 Zone / logement | 2 Local | 3 Surface (m²) | 4 Hauteur (m) | 5 Famille d'émetteurs | 6 Déperditions (W) | 7 Apports sensibles (W) |
|---|---|---|---|---|---|---|
| Logement A101 | Séjour | 28,5 | 2,50 | Ventilo-convecteur mural | 1450 | 1850 |
| Logement A101 | Chambre 1 | 13,2 | 2,50 | Ventilo-convecteur mural | 720 | 640 |
| Logement A101 | Salle de bains | 5,4 | 2,50 | Radiateur sèche-serviettes | 480 | (vide) |
| Logement A101 | Dégagement | 6,1 | 2,50 | aucun émetteur | 160 | (vide) |
| Bureaux R+1 | Open space | 96,0 | 2,80 | Ventilo-convecteur plafonnier | 5200 | 7400 |
| Bureaux R+1 | Salle de réunion | 31,0 | 2,80 | Ventilo-convecteur plafonnier | 1900 | 3100 |
| Atelier | Hall de production | 420,0 | 6,50 | Aérotherme | 38000 | (vide) |
Le même tableau, tel qu'il s'écrit dans le fichier .csv
Une ligne par local, les colonnes séparées par des points-virgules, le tout encodé en UTF-8. Copié dans un fichier texte nommé besoins.csv, ce contenu se glisse-dépose directement dans la zone d'import.
Zone / logement;Local;Surface (m2);Hauteur (m);Famille emetteurs;Deperditions (W);Apports sensibles (W) Logement A101;Sejour;28,5;2,50;Ventilo-convecteur mural;1450;1850 Logement A101;Chambre 1;13,2;2,50;Ventilo-convecteur mural;720;640 Logement A101;Salle de bains;5,4;2,50;Radiateur seche-serviettes;480; Logement A101;Degagement;6,1;2,50;aucun emetteur;160; Bureaux R+1;Open space;96,0;2,80;Ventilo-convecteur plafonnier;5200;7400 Bureaux R+1;Salle de reunion;31,0;2,80;Ventilo-convecteur plafonnier;1900;3100 Atelier;Hall de production;420,0;6,50;Aerotherme;38000;
En pratique, le plus simple est de construire ce tableau dans un tableur (ou de l'exporter depuis le logiciel de déperditions), puis d'enregistrer la feuille en « CSV ». La ligne d'en-tête, le séparateur (point-virgule, tabulation ou virgule) et les décimales à la virgule ou au point sont détectés automatiquement.
Le tableau ci-dessus montre les deux cas particuliers du format : un local sans apports (colonne 7 laissée vide — salle de bains, hall de production) et un local sans émetteur (« aucun emetteur » en colonne 5 — le dégagement, dont les 160 W seront reportés sur un autre local de la zone « Logement A101 »). Les décimales s'écrivent avec une virgule ou un point indifféremment, et les valeurs reconnues comme « pas d'émetteur » sont : aucun, aucun émetteur, aucune, sans émetteur, sans, néant, non, n/a, na, . ou une case vide.
Une ligne sans nom de local, sans surface et sans déperdition est ignorée (ligne de total ou ligne vide du tableur). Un local dont la colonne famille contient une mention explicite d'absence d'émetteur (par exemple « aucun ») peut être rattaché à un autre local de la même zone, qui reprend alors ses besoins — colonne « report ».
Format de la base d'émetteurs importable (.json)
La base d'émetteurs se saisit à la main en partie 2 de l'outil, mais elle s'importe aussi en .json — c'est le format que produit le bouton « Exporter les familles ». L'import ajoute les familles du fichier à la base existante (il ne l'écrase pas), et plusieurs fichiers peuvent être sélectionnés d'un coup : constituer sa base en assemblant des fichiers fournisseurs est l'usage prévu.
nom(famille)- Doit correspondre à la 5e colonne du tableau des besoins (comparaison insensible à la casse, aux accents et aux espaces multiples)
nom(émetteur)- Référence constructeur, affichée dans les colonnes de résultat et le récapitulatif
puissanceChaud- W — seul champ obligatoire pour que la sélection automatique fonctionne
puissanceFroid- W —
nullou absent pour un appareil statique debitVentilation- m³/h —
nullou absent pour un appareil sans ventilateur
Exemple de fichier de familles importable
Deux familles : des ventilo-convecteurs (chaud + froid + débit) et des radiateurs statiques (chaud seul). Le copier dans un fichier nommé familles-emetteurs.json.
{
"outil": "batitools/selectionEmetteurs",
"version": 1,
"date": "2026-09-02",
"familles": [
{
"nom": "Ventilo-convecteur mural",
"emetteurs": [
{ "nom": "VCM-12", "puissanceChaud": 1500, "puissanceFroid": 1200, "debitVentilation": 350 },
{ "nom": "VCM-20", "puissanceChaud": 2500, "puissanceFroid": 2000, "debitVentilation": 500 },
{ "nom": "VCM-28", "puissanceChaud": 3500, "puissanceFroid": 2800, "debitVentilation": 650 }
]
},
{
"nom": "Radiateur seche-serviettes",
"emetteurs": [
{ "nom": "SS-500", "puissanceChaud": 500, "puissanceFroid": null, "debitVentilation": null },
{ "nom": "SS-750", "puissanceChaud": 750, "puissanceFroid": null, "debitVentilation": null },
{ "nom": "SS-1000", "puissanceChaud": 1000, "puissanceFroid": null, "debitVentilation": null }
]
}
]
}
L'en-tête (outil, version, date) est facultatif à l'import : un simple tableau de familles [ { "nom": …, "emetteurs": [ … ] } ] est accepté tel quel. Les noms de clés courts utilisés en interne sont également reconnus — pc, pf et debit à la place de puissanceChaud, puissanceFroid et debitVentilation, et famille/reference/appareils à la place de nom/nom/emetteurs. Un fichier illisible ou sans aucune famille est signalé par un message, sans toucher à la base en place.
Paramètres et algorithme de sélection
- Coefficient de majoration déperditions
- Multiplie la déperdition brute importée pour obtenir la déperdition majorée (colonne servant de cible à la sélection)
- Coefficient de majoration apports
- Multiplie les apports sensibles bruts pour obtenir les apports majorés
- Taux de brassage minimum
- Valeur de référence (vol/h) pour l'écart de brassage des appareils à ventilateur
Pour chaque local dont la famille est reconnue, l'outil cherche, parmi les émetteurs de puissance chaud non nulle de cette famille triés par puissance croissante, le plus petit appareil dont la puissance couvre à elle seule la déperdition majorée restante. S'il en existe un, il est retenu seul et la recherche s'arrête. Sinon, l'appareil le plus puissant de la famille est ajouté, la déperdition restante est diminuée de sa puissance, et la recherche recommence sur le reste — jusqu'à couverture complète. Le résultat est une combinaison d'un ou plusieurs émetteurs (avec quantités), jamais optimale au sens du nombre minimal d'appareils, mais simple et prévisible.
Écart froid (%) = (puissance froid installée − apports majorés) / apports majorés × 100
Taux de brassage = débit installé / volume du local · Écart brassage (%) = (brassage installé − brassage minimum) / brassage minimum × 100
La sélection automatique ne se déclenche qu'au clic sur le bouton dédié : l'utilisateur peut forcer manuellement les émetteurs d'un local (colonne « Émetteurs chaud »), et un recalcul automatique n'écraserait pas cette saisie. Changer un coefficient recalcule aussitôt les écarts affichés, mais un bandeau invite à relancer la sélection si elle est devenue périmée.
U1 — Sélection gloutonne sur une famille de radiateurs
Famille « Radiateurs acier » avec quatre puissances disponibles : 800, 1 200, 1 800 et 2 500 W (pas de puissance froid ni de débit — appareils statiques).
Résultat pour trois locaux
- Déperdition majorée 2 100 W
- Sélection : 1 × 2 500 W — écart chaud +19,05 % (le plus petit appareil qui couvre 2 100 W à lui seul)
- Déperdition majorée 1 000 W
- Sélection : 1 × 1 200 W — écart chaud +20 %
- Déperdition majorée 3 200 W
- Sélection : 1 × 2 500 W + 1 × 800 W (total 3 300 W) — écart chaud +3,13 %. Aucun appareil seul ne couvrant 3 200 W, l'outil retient d'abord le plus puissant (2 500 W), puis referme le reste (700 W) avec le plus petit appareil qui le couvre (800 W)
U2 — Local chaud + froid + contrôle de brassage
Famille « Ventilo-convecteurs » avec trois appareils : puissance chaud 1 500 / 2 500 / 3 500 W, puissance froid respective 1 200 / 2 000 / 2 800 W, débit de ventilation respectif 350 / 500 / 650 m³/h. Salle de réunion : surface 45 m², hauteur 2,7 m (volume 121,5 m³), déperdition brute 2 500 W (coefficient 1,2 → déperdition majorée 3 000 W), apports sensibles bruts 2 200 W (coefficient 1,15 → apports majorés 2 530 W), taux de brassage minimum 3 vol/h.
Résultat
- Émetteurs chaud sélectionnés
- 1 × appareil 3 500 W (seul appareil de la famille couvrant 3 000 W à lui seul)
- P. chaud installée
- 3 500 W — écart chaud +16,67 %
- Émetteurs froid
- Le même appareil, colonne recopiée depuis la sélection chaud et limitée à ceux qui portent une puissance froid : 2 800 W
- Écart froid
- +10,67 % par rapport aux apports majorés (2 530 W)
- Débit installé
- 650 m³/h
- Taux de brassage installé
- 5,35 vol/h (650 / 121,5)
- Écart brassage
- +78,33 % par rapport au minimum de 3 vol/h
La colonne « Émetteurs froid » n'est jamais choisie indépendamment : elle est entièrement déduite de la sélection chaud. Un local dont tous les émetteurs sélectionnés sont statiques (sans puissance froid) donne donc une colonne froid vide — c'est un local uniquement chauffé, sans que cela déclenche d'alerte.
U3 — Aperçu du tableau de résultats après une sélection automatique
Un logement chauffé par radiateurs. Famille « Radiateurs acier » avec quatre références : RA-800 (800 W), RA-1200 (1 200 W), RA-1800 (1 800 W) et RA-2500 (2 500 W) — appareils statiques, donc ni puissance froid ni débit. Coefficient de majoration des déperditions : 1,25. Après import du tableau des besoins et clic sur « Sélection automatique », voici ce que montrent les colonnes principales.
5 locaux équipés sur 5.
| Local | Volume (m³) | Déperditions (W) | Déperditions majorées (W) | Famille d'émetteurs | Émetteurs chaud | P. chaud installée (W) | Écart chaud (%) |
|---|---|---|---|---|---|---|---|
| Séjour | 71,25 | 2 560 | 3 200 | Radiateurs acier | 1 × RA-25001 × RA-800 | 3 300 | +3,1 % |
| Chambre 1 | 33,00 | 800 | 1 000 | Radiateurs acier | 1 × RA-1200 | 1 200 | +20,0 % |
| Chambre 2 | 29,50 | 1 680 | 2 100 | Radiateurs acier | 1 × RA-2500 | 2 500 | +19,0 % |
| Salle de bains | 13,50 | 1 200 | 1 500 | Radiateurs acier | 2 × RA-800 | 1 600 | +6,7 % |
| Bureau | 30,00 | 2 880 | 3 600 | Radiateurs acier | 1 × RA-18001 × RA-12001 × RA-800 | 3 800 | +5,6 % |
Les colonnes non montrées ici (hauteur, apports bruts et majorés, émetteurs froid, puissance froid et écart froid, débit, brassage et écart de brassage) restent vides sur ce projet : les radiateurs n'ont ni puissance frigorifique ni ventilateur. Chacune des 19 colonnes se masque individuellement pour obtenir exactement le tableau ci-dessus.
Comment lire les trois premières lignes — la sélection automatique
- Séjour — 3 200 W à couvrir
- Aucune référence ne couvre 3 200 W à elle seule : l'outil pose d'abord le plus gros radiateur (RA-2500), puis referme le solde de 700 W avec le plus petit appareil qui le couvre (RA-800). Deux émetteurs de tailles différentes, 3 300 W installés
- Chambre 1 — 1 000 W
- Le RA-1200 est le plus petit appareil couvrant le besoin seul : un seul émetteur, et l'écart de +20 % est simplement l'effet du pas de la gamme
- Chambre 2 — 2 100 W
- Même logique, mais le RA-1800 ne suffit pas : c'est le RA-2500 qui est retenu
Les deux lignes en bleu — saisie forcée par l'utilisateur
Une puce bleue signale un local dont la sélection a été reprise à la main, par la liste déroulante et le bouton + de la colonne « Émetteurs chaud » (ou par la croix qui retire une unité). C'est la même convention que dans le reste de l'outil : toute valeur en bleu a été décidée par l'utilisateur, pas par le calcul — comme le volume forcé quand la hauteur sous plafond n'est pas constante. Les puces noires, elles, sortent de la dernière sélection automatique.
- Salle de bains — deux appareils identiques
- La sélection automatique proposait 1 × RA-1800 (+20 %). L'utilisateur a préféré deux radiateurs identiques de part et d'autre de la porte : 2 × RA-800, soit 1 600 W et +6,7 %. Deux appareils de même référence se présentent comme une seule puce portant la quantité — la croix en retire une unité à la fois, pas la pile entière
- Bureau — trois appareils différents
- Faute d'allège assez longue pour un seul gros radiateur, l'utilisateur a réparti sur trois émetteurs : 1 × RA-1800 + 1 × RA-1200 + 1 × RA-800, soit 3 800 W et +5,6 %. Chaque référence a sa propre puce, dans l'ordre où elle a été ajoutée
Récapitulatif des quantités correspondant
Partie 4 de l'outil — le bordereau, trié par famille puis par puissance décroissante. Il compte aussi bien les appareils issus de la sélection automatique que ceux forcés à la main.
| Famille | Émetteur | Quantité | P. chaud unit. (W) | P. chaud totale (W) |
|---|---|---|---|---|
| Radiateurs acier | RA-2500 | 2 | 2 500 | 5 000 |
| Radiateurs acier | RA-1800 | 1 | 1 800 | 1 800 |
| Radiateurs acier | RA-1200 | 2 | 1 200 | 2 400 |
| Radiateurs acier | RA-800 | 4 | 800 | 3 200 |
| Total | 4 références | 9 | 12 400 |
Les 12 400 W du bordereau sont bien la somme des puissances installées local par local (3 300 + 1 200 + 2 500 + 1 600 + 3 800). Le récapitulatif comporte en outre les colonnes de puissance froid et de débit, vides ici, et l'ensemble des résultats s'exporte en CSV.
Report des besoins entre locaux
Un local dont la famille indique explicitement l'absence d'émetteur (par exemple un WC ou un dégagement chauffé par transfert depuis la pièce voisine) peut être rattaché, dans la même zone, à un autre local qui porte lui-même un émetteur : ses déperditions et apports propres sont alors ajoutés à ceux du local cible, qui est dimensionné sur le total. Le besoin propre du local d'origine reste affiché sur sa ligne pour rester vérifiable, mais additionner la colonne des déperditions majorées sur l'ensemble du tableau compte alors deux fois les besoins reportés — l'outil grise les lignes reportées pour que cela reste visible. Un local chauffé indirectement dont personne n'a désigné le local qui reprend ses besoins est signalé après la sélection automatique : « ses besoins ne sont comptés nulle part ».
Messages de la sélection automatique
- Bilan
- « N locaux équipés sur M. »
- Famille introuvable
- « Famille introuvable dans la base : … — vérifiez l'orthographe en partie 2. »
- Famille sans puissance
- « Aucune puissance de chauffage saisie dans : … »
- Report sans cible
- « N locaux chauffés indirectement sans local désigné : leurs besoins ne sont comptés nulle part. Choisissez le local qui les traite en colonne « Émetteurs chaud ». »
- Sélection périmée
- Bandeau invitant à relancer la sélection automatique après modification d'un coefficient ou de la base d'émetteurs
Résultats et export
Le tableau de résultats présente 19 colonnes (zone, local, surface, hauteur, volume, déperditions et apports bruts et majorés, famille, émetteurs chaud et froid avec puissances et écarts, débit et taux de brassage avec écart), certaines masquables individuellement. Un récapitulatif totalise les quantités par famille et par référence d'émetteur. Les résultats s'exportent en CSV (pour un tableur) ou la base d'émetteurs en .json (pour la réutiliser sur un autre projet ou la partager) — aucun de ces exports ne transite par le serveur.