@open3cl/engine
Version:
Open Source 3CL-DPE engine
259 lines (206 loc) • 15.4 kB
Markdown
<a id="readme-top"></a>
[![Contributors][contributors-shield]][contributors-url]
[![Forks][forks-shield]][forks-url]
[![Stargazers][stars-shield]][stars-url]
[![Issues][issues-shield]][issues-url]
[![ GPL-3.0 license][license-shield]][license-url]
<br />
<div align="center">
<a href="https://open3cl.fr">
<img src="images/logo.png" alt="Logo" width="260" height="80">
</a>
<h3 align="center">Open3CL</h3>
Implémentation open source du moteur Open3CL de l'ADEME.
<p align="center">
![Javascript][Javascript]
<br/>
<a href="https://github.com/Open3CL/issues/new?labels=bug&template=bug-report---.md">Créer un bug</a>
·
<a href="https://github.com/Open3CL/issues/new?labels=enhancement&template=feature-request---.md">Créer une feature</a>
</p>
</div>
<details>
<summary>Sommaire</summary>
<ol>
<li>
<a href="#a-propos-du-projet">A propos du projet</a>
</li>
<li>
<a href="#demarrage">Démarrage</a>
<ul>
<li><a href="#pre-requis">Pre-requis</a></li>
<li><a href="#installation">Installation</a></li>
<li><a href="#documentation">Documentation</a></li>
</ul>
</li>
<li><a href="#usage">Usage</a></li>
<li><a href="#rapports">Rapports</a></li>
<li><a href="#roadmap">Roadmap</a></li>
<li><a href="#contribution">Contribution</a></li>
<li><a href="#license">License</a></li>
<li><a href="#contact">Contact</a></li>
<li><a href="#acknowledgments">Acknowledgments</a></li>
</ol>
</details>
## A propos du projet
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](https://rt-re-batiment.developpement-durable.gouv.fr/IMG/pdf/consolide_annexe_1_arrete_du_31_03_2021_relatif_aux_methodes_et_procedures_applicables.pdf).
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.
<p align="right">(<a href="#readme-top">Retour sommaire</a>)</p>
## Démarrage
### Pre-requis
Vous devez d'abord installer [NodeJS](https://nodejs.org/en) en version 20 ou supérieure.
### Installation
```sh
npm install @open3cl/engine
```
### Documentation
Lien à faire vers les wiki
<p align="right">(<a href="#readme-top">Retour sommaire</a>)</p>
## Utilisation
```javascript
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);
```
## Variables d'environnements
| Nom | Description |
| ----------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| ADEME_API_CLIENT_ID | Client id pour l'api de l'ademe |
| ADEME_API_CLIENT_SECRET | Client secret pour l'api de l'ademe |
| DPE_FOLDER_PATH | Chemin vers lequel sont stockés les fichiers DPE (si non précisé, utiliser `dpes-folder-path` dans la ligne de commande |
Attention aux quotas sur l'api:
- 100 requêtes / seconde
- 1000 requêtes / minute
- 10000 requêtes / jour
<p align="right">(<a href="#readme-top">Retour sommaire</a>)</p>
## Lancement des tests sur des corpus de DPE
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%.
La liste des valeurs analysées est la suivante:
```javascript
deperdition_mur,
deperdition_baie_vitree,
deperdition_plancher_bas,
deperdition_plancher_haut,
deperdition_porte,
deperdition_renouvellement_air,
hperm,
deperdition_pont_thermique,
surface_sud_equivalente,
besoin_ecs,
besoin_ch,
conso_auxiliaire_distribution_ecs,
conso_auxiliaire_generation_ch,
conso_auxiliaire_generation_ecs,
conso_ecs,
conso_ch,
conso_auxiliaire_distribution_ch,
conso_auxiliaire_ventilation,
ep_conso_5_usages,
ep_conso_5_usages_m2,
emission_ges_5_usages,
emission_ges_5_usages_m2;
```
- `npm run test:corpus`. Va générer 2 rapports de sortie au format csv (détaillé) et json (global)
- `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.csv](test/corpus/corpus_dpe.csv)
- `npm run test:corpus -- dpes-folder-path=/home/user/dpes`. Chemin vers le dossier où 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 corpus
Résultats des tests de corpus avec le mode de compatibilité activé.
| Version librairie | corpus | Taux d'erreur | Nb de DPES analysés | Nb en dessous du taux d'erreur | Taux de réussite | Détail des valeurs |
| :----------------- | :------------------------------------- | :------------- | --------------------- | -------------------------------- | ------------------ | --------------------------------------------------------------------------------------------------------------------- |
| 1.2.3 | corpus_dpe.csv | 5% | 9980 | 4489 | 45% | |
| 1.2.3 | dpe_immeuble_chauffage_individuel.csv | 5% | 9998 | 3257 | 32% | |
| 1.2.3 | dpe_immeuble_chauffage_collectif.csv | 5% | 10000 | 5279 | 53% | |
| 1.2.3 | dpe_immeuble_chauffage_mixte.csv | 5% | 10000 | 2728 | 27% | |
| ------------------ | -------------------------------------- | -------------- | --------------------- | -------------------------------- | ------------------ | --------------------------------------------------------------------------------------------------------------------- |
| 1.2.8 | corpus_dpe.csv | 5% | 9980 | 4489 | 45% | |
| 1.2.8 | dpe_immeuble_chauffage_individuel.csv | 5% | 9998 | 5275 (+2018) | 53% (+21%) | |
| 1.2.8 | dpe_immeuble_chauffage_collectif.csv | 5% | 10000 | 5747 (+468) | 57% (+4%) | |
| 1.2.8 | dpe_immeuble_chauffage_mixte.csv | 5% | 10000 | 3142 (+414) | 31% (+4%) | |
| ------------------ | -------------------------------------- | -------------- | --------------------- | -------------------------------- | ------------------ | --------------------------------------------------------------------------------------------------------------------- |
| 1.3.1 | corpus_dpe.csv | 5% | 9980 | 4508 (+19) | 45% | |
| 1.3.1 | dpe_immeuble_chauffage_individuel.csv | 5% | 9998 | 5459 (+184) | 55% (+2%) | |
| 1.3.1 | dpe_immeuble_chauffage_collectif.csv | 5% | 10000 | 5848 (+101) | 58% (+1%) | |
| 1.3.1 | dpe_immeuble_chauffage_mixte.csv | 5% | 10000 | 4018 (+876) | 40% (+9%) | |
| ------------------ | -------------------------------------- | -------------- | --------------------- | -------------------------------- | ------------------ | --------------------------------------------------------------------------------------------------------------------- |
| 1.3.2 | corpus_dpe.csv | 5% | 9980 | 4519 (+11) | 45% | |
| 1.3.2 | dpe_immeuble_chauffage_individuel.csv | 5% | 9998 | 5476 (+17) | 55% | |
| 1.3.2 | dpe_immeuble_chauffage_collectif.csv | 5% | 10000 | 5869 (+21) | 58% | |
| 1.3.2 | dpe_immeuble_chauffage_mixte.csv | 5% | 10000 | 4040 (+22) | 40% | |
| ------------------ | -------------------------------------- | -------------- | --------------------- | -------------------------------- | ------------------ | --------------------------------------------------------------------------------------------------------------------- |
| 1.3.3 | corpus_dpe.csv | 5% | 9980 | 4522 (+3) | 45% | [Voir le détail](https://open3cl.github.io/engine/reports/corpus?corpus_file=corpus_dpe.csv) |
| 1.3.3 | dpe_immeuble_chauffage_individuel.csv | 5% | 9998 | 5488 (+12) | 55% | [Voir le détail](https://open3cl.github.io/engine/reports/corpus?corpus_file=dpe_immeuble_chauffage_individuel.csv) |
| 1.3.3 | dpe_immeuble_chauffage_collectif.csv | 5% | 10000 | 5869 | 58% | [Voir le détail](https://open3cl.github.io/engine/reports/corpus?corpus_file=dpe_immeuble_chauffage_collectif.csv) |
| 1.3.3 | dpe_immeuble_chauffage_mixte.csv | 5% | 10000 | 4082 (+42) | 40% | [Voir le détail](https://open3cl.github.io/engine/reports/corpus?corpus_file=dpe_immeuble_chauffage_mixte.csv) |
## Roadmap
- [x] Site Open 3CL
- [ ] Refacto technique
- [ ] Rapports de tests
- [ ] Certification ADEME
- [ ] Fonctionnalités
- [ ] DPE à l'immeuble
- [ ] Photovoltaïque
Voir la liste des [issues](https://github.com/Open3CL/engine/issues) pour avoir le détail complet des bugs et
fonctionnalités en cours de réalisation.
<p align="right">(<a href="#readme-top">Retour sommaire</a>)</p>
## Contribution
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](CONTRIBUTING.md) pour plus de détails.
### Meilleurs contributeurs
<a href="https://github.com/Open3CL/engine/graphs/contributors">
<img src="https://contrib.rocks/image?repo=Open3CL/engine" alt="contrib.rocks image" />
</a>
<p align="right">(<a href="#readme-top">Retour sommaire</a>)</p>
## Licence
Distribué sous la license `GPL-3.0 license`. Lire le fichier `LICENSE` pour plus d'informations.
<p align="right">(<a href="#readme-top">Retour sommaire</a>)</p>
## Contact
Pour plus d'informations merci de nous contacter à cette adresse : open3cl@redfroggy.fr
<p align="right">(<a href="#readme-top">Retour sommaire</a>)</p>
## Remerciements
A compléter
<p align="right">(<a href="#readme-top">Retour sommaire</a>)</p>
[contributors-shield]: https://img.shields.io/github/contributors/Open3CL/engine.svg?style=for-the-badge
[contributors-url]: https://github.com/Open3CL/engine/graphs/contributors
[forks-shield]: https://img.shields.io/github/forks/Open3CL/engine.svg?style=for-the-badge
[forks-url]: https://github.com/Open3CL/network/members
[stars-shield]: https://img.shields.io/github/stars/Open3CL/engine.svg?style=for-the-badge
[stars-url]: https://github.com/Open3CL/stargazers
[issues-shield]: https://img.shields.io/github/issues/Open3CL/engine.svg?style=for-the-badge
[issues-url]: https://github.com/Open3CL/issues
[license-shield]: https://img.shields.io/github/license/Open3CL/engine.svg?style=for-the-badge
[license-url]: https://github.com/Open3CL/blob/master/LICENSE
[product-screenshot]: images/screenshot.png
[Javascript]: https://img.shields.io/badge/javascript-000000?style=for-the-badge&logo=javascript&logoColor=white