Sommaire
Open3CL est une librairie JavaScript open source, spécialement conçue pour faciliter le calcul des Diagnostics de Performance Énergétique (DPE). Elle implémente la norme définie dans l'annexe 1 de l'arrêté du 31 mars 2021. Elle est destinée aux développeurs qui souhaitent intégrer des calculs énergétiques précis et conformes à la réglementation dans leurs applications.
Vous devez d'abord installer NodeJS en version 20 ou supérieure.
npm install @open3cl/engineLien à faire vers les wiki
import { calcul_3cl } from 'open3cl';
// Exemple d'objet JSON issu d'un fichier XML DPE
const dpeData = {
numero_dpe: '2113E1018248X',
statut: 'ACTIF',
logement: {
caracteristique_generale: {
annee_construction: 1948,
surface_habitable_logement: 49.96
},
installation_chauffage_collection: {
installation_chauffage: [
{
description: 'Chaudière individuelle gaz standard',
surface_chauffee: 49.96,
generateur_chauffage_collection: {
generateur_chauffage: [{ description: '...' }]
}
}
]
}
}
};
const result = calcul_3cl(dpeData);| Nom | Description |
|---|---|
| DPE_FOLDER_PATH | Obligatoire: Chemin vers lequel sont stockés les fichiers DPE (si non précisé, utiliser dpes-folder-path dans la ligne de commande |
| ADEME_API_CLIENT_ID | Client id pour l'api de l'ademe |
| ADEME_API_CLIENT_SECRET | Client secret pour l'api de l'ademe |
| MAX_WORKER_THREADS | Nombre de threads maximum pour les tests de corpus, par défaut: os.availableParallelism * 1.5 |
| WORKER_THREADS_CHUNKS | Nombre de dpe à analyser par thread, par défaut: 200 |
| API_ADEME_DOWNLOAD_WAIT | Temps d'attente en ms entre chaque dpe à télécharger via l'api de l'ademe, par défaut: 1s |
Attention aux quotas sur l'api:
- 100 requêtes / seconde
- 1000 requêtes / minute
- 10000 requêtes / jour
Dans le cas où un corpus est joué avec beaucoup de dpe à télécharger via l'api de l'ademe (car non présent en local), la meilleure configuration est:
export MAX_WORKER_THREADS=10export API_ADEME_DOWNLOAD_WAIT=1000export WORKER_THREADS_CHUNKS=300
Les tests de corpus consistent à analyser une liste de numéro de DPE présent dans un fichier CSV.
- Pour chaque DPE, le fichier est téléchargé si pas déjà présent en local, et il est envoyé à la librairie Open3CL.
- On analyse en sortie de la lib certaines valeurs que l'on compare aux valeurs du DPE initial.
- Le seuil de tolérance est fixé par défaut à 5%.
Les informations contrôlées et qui doivent obligatoirement ne pas dépasser le seuil des 5% entre le dpe d'origine et le dpe proposé par la librairie Open3CL sont :
- logement.sortie.ef_conso.conso_ecs
- logement.sortie.ef_conso.conso_ch
- logement.sortie.ep_conso.ep_conso_5_usages ou logement.sortie.ep_conso.ep_conso_5_usages_m2
- logement.sortie.emission_ges.emission_ges_5_usages ou logement.sortie.emission_ges.emission_ges_5_usages_m2
Il existe actuellement 5 corpus (avec 10000 dpe analysés dans chaque corpus) :
corpus.csv: Corpus généralistedpe_logement_individuel_2025.csv: Corpus avec uniquement des dpe individuels réalisés en 2025dpe_immeuble_chauffage_individuel.csv: Corpus avec uniquement des dpe immeuble pour des logements avec chauffage individueldpe_immeuble_chauffage_collectif.csv: Corpus avec uniquement des dpe immeuble pour des logements avec chauffage collectifdpe_immeuble_chauffage_mixte.csv: Corpus avec uniquement des dpe immeuble pour des logements avec chauffage mixte
npm run test:corpus:all: Joue l'intégralité des corpus et génère les rapports associés.npm run test:corpus. Joue le corpus corpus_dpe.csv et génère les rapports associés.npm run test:corpus -- corpus-file-path=corpus.csv. Chemin relatif vers le fichier de corpus à analyser Par défaut, le corpus utilisé est présent ici : test/corpus/corpus_dpe.csvnpm run test:corpus -- dpes-folder-path=/home/user/dpes. Chemin vers le dossier ou les DPE seront téléchargés. Si un fichier DPE est déjà présent dans ce dossier, il ne sera pas retéléchargé.
Résultats des tests de corpus avec le mode de compatibilité activé.
Voir les versions précédents
| Version librairie | corpus | Nb en dessous du taux d'erreur | Taux de réussite | Description | Détail des valeurs |
|---|---|---|---|---|---|
| 1.2.3 | corpus_dpe.csv | 4489 | 45% | ||
| 1.2.3 | dpe_immeuble_chauffage_individuel.csv | 3257 | 32% | ||
| 1.2.3 | dpe_immeuble_chauffage_collectif.csv | 5279 | 53% | ||
| 1.2.3 | dpe_immeuble_chauffage_mixte.csv | 2728 | 27% | ||
| 1.2.8 | corpus_dpe.csv | 489 | 45% | ||
| 1.2.8 | dpe_immeuble_chauffage_individuel.csv | 5275 (+2018) | 53% (+21%) | ||
| 1.2.8 | dpe_immeuble_chauffage_collectif.csv | 5747 (+468) | 57% (+4%) | ||
| 1.2.8 | dpe_immeuble_chauffage_mixte.csv | 3142 (+414) | 31% (+4%) | ||
| 1.3.1 | corpus_dpe.csv | 4508 (+19) | 45% | ||
| 1.3.1 | dpe_immeuble_chauffage_individuel.csv | 5459 (+184) | 55% (+2%) | ||
| 1.3.1 | dpe_immeuble_chauffage_collectif.csv | 5848 (+101) | 58% (+1%) | ||
| 1.3.1 | dpe_immeuble_chauffage_mixte.csv | 4018 (+876) | 40% (+9%) | ||
| 1.3.2 | corpus_dpe.csv | 4519 (+11) | 45% | ||
| 1.3.2 | dpe_immeuble_chauffage_individuel.csv | 5476 (+17) | 55% | ||
| 1.3.2 | dpe_immeuble_chauffage_collectif.csv | 5869 (+21) | 58% | ||
| 1.3.2 | dpe_immeuble_chauffage_mixte.csv | 4040 (+22) | 40% | ||
| 1.3.5 | corpus_dpe.csv | 4522 (+3) | 45% | ||
| 1.3.5 | dpe_immeuble_chauffage_individuel.csv | 5488 (+12) | 55% | ||
| 1.3.5 | dpe_immeuble_chauffage_collectif.csv | 5869 | 58% | ||
| 1.3.5 | dpe_immeuble_chauffage_mixte.csv | 4082 (+42) | 40% | ||
| 1.3.6 | corpus_dpe.csv | 4522 | 45% | ||
| 1.3.6 | dpe_immeuble_chauffage_individuel.csv | 5650 (+162) | 56% | ||
| 1.3.6 | dpe_immeuble_chauffage_collectif.csv | 5894 (+25) | 59% (+1%) | ||
| 1.3.6 | dpe_immeuble_chauffage_mixte.csv | 4141 (+59) | 41% (+1%) | ||
| 1.3.7 | corpus_dpe.csv | 4522 | 45% | ||
| 1.3.7 | dpe_immeuble_chauffage_individuel.csv | 6960 (+1310) | 69% (+13%) | ||
| 1.3.7 | dpe_immeuble_chauffage_collectif.csv | 6106 (+212) | 61% (+2%) | ||
| 1.3.7 | dpe_immeuble_chauffage_mixte.csv | 4730 (+589) | 47% (+6%) | ||
| 1.3.8 | corpus_dpe.csv | 4522 | 45% | ||
| 1.3.8 | dpe_immeuble_chauffage_individuel.csv | 6965 (+5) | 69% | ||
| 1.3.8 | dpe_immeuble_chauffage_collectif.csv | 6110 (+4) | 61% | ||
| 1.3.8 | dpe_immeuble_chauffage_mixte.csv | 4735 (+5) | 47% | ||
| 1.3.9 | corpus_dpe.csv | 4460 (-62) | 44% (-1%) | Pertes liés au fix bug tribu zone 2hd valeur dh19 | |
| 1.3.9 | dpe_immeuble_chauffage_individuel.csv | 6901 (-64) | 69% | Pertes liés au fix bug tribu zone 2hd valeur dh19 | |
| 1.3.9 | dpe_immeuble_chauffage_collectif.csv | 6058 (-58) | 60% (-1%) | Pertes liés au fix bug tribu zone 2hd valeur dh19 | |
| 1.3.9 | dpe_immeuble_chauffage_mixte.csv | 4728 (-7) | 47% | Pertes liés au fix bug tribu zone 2hd valeur dh19 | |
| 1.3.11 | corpus_dpe.csv | 4468 (+8) | 44% | ||
| 1.3.11 | dpe_immeuble_chauffage_individuel.csv | 6901 | 69% | ||
| 1.3.11 | dpe_immeuble_chauffage_collectif.csv | 6058 | 60% | ||
| 1.3.11 | dpe_immeuble_chauffage_mixte.csv | 4727 (-1) | 47% | Dpes erronés sur le calcul volume ballon ecs |
| Version librairie | corpus | Nb en dessous du taux d'erreur | Taux de réussite | Description | Détail des valeurs |
|---|---|---|---|---|---|
| 1.3.12 | corpus_dpe.csv | 4467 (-1) | 44% | Dpe erroné avec surface chauffée invalide | |
| 1.3.12 | dpe_logement_individuel_2025.csv | 8429 | 84% | ||
| 1.3.12 | dpe_immeuble_chauffage_individuel.csv | 6900 (-1) | 69% | Dpe erroné avec surface chauffée invalide | |
| 1.3.12 | dpe_immeuble_chauffage_collectif.csv | 6058 | 60% | ||
| 1.3.12 | dpe_immeuble_chauffage_mixte.csv | 4725 (-2) | 47% | Dpe erroné avec surface chauffée invalide | |
| 1.3.13 | corpus_dpe.csv | 4481 (+14) | 45 (+1%) | Voir le détail | |
| 1.3.13 | dpe_logement_individuel_2025.csv | 8453 | 84% (+24) | Voir le détail | |
| 1.3.13 | dpe_immeuble_chauffage_individuel.csv | 7106 (+205) | 71% (+2%) | Voir le détail | |
| 1.3.13 | dpe_immeuble_chauffage_collectif.csv | 6083 (+25) | 61% (+1%) | Voir le détail | |
| 1.3.13 | dpe_immeuble_chauffage_mixte.csv | 4751 (+24) | 47% | Voir le détail |
- Site Open 3CL
- Refacto technique
- Rapports de tests
- Certification ADEME
- Fonctionnalités
- DPE à l'immeuble
- Photovoltaïque
Voir la liste des issues pour avoir le détail complet des bugs et fonctionnalités en cours de réalisation.
Nous accueillons les contributions avec plaisir ! Si vous souhaitez améliorer Open3CL, veuillez :
- Forker le dépôt.
- Créer une branche pour vos modifications.
- Soumettre une pull request avec une description claire des changements apportés.
- Consultez le fichier CONTRIBUTING.md pour plus de détails.
Distribué sous la license GPL-3.0 license. Lire le fichier LICENSE pour plus d'informations.
Pour plus d'informations merci de nous contacter à cette adresse : [email protected]
A compléter