diff --git a/source/règles/co2.yaml b/source/règles/co2.yaml new file mode 100644 index 000000000..a691e930e --- /dev/null +++ b/source/règles/co2.yaml @@ -0,0 +1,108 @@ +# espace de nom implicite : douche +# non bloquant : +# - période: semaine +# bloquant : +# - ? + +- nom: impact + période: année + formule: impact par douche * nombre de douches + +- nom: nombre de douches + période: mois + question: Combien prenez-vous de douches par mois ? + format: nombre + suggestions: + - 30 + + +- nom: impact par douche + formule: impact par litre * litres d'eau + +- nom: impact par litre + formule: impact par litre froid + chauffage . impact par litre + +- nom: litres d'eau + formule: + durée de la douche * litres par minute + +- nom: litres par minute + formule: + variations: + - si: pomme de douche économe + alors: 9 + - sinon: 18 + références: + économise l'eau: https://www.jeconomiseleau.org/index.php/particuliers/economies-par-usage/la-douche-et-le-bain + +- nom: pomme de douche économe + question: Utilisez-vous une pomme de douche économe ? + par défaut: non + +- nom: impact par litre froid + unité: kgCO2e/l + formule: 0.000132 + + +- espace: chauffage + nom: type + question: Comment est chauffée votre eau ? + formule: + une possibilité: + - gaz + - fioul + - électricité + +# définir ces éléments un par un + +- espace: chauffage + nom: impact par kWh + unité: kgCO2e/kWh PCI + formule: + variations: + - si: type = 'gaz' + alors: 0.227 + - si: type = 'fioul' + alors: 0.324 + - si: type = 'électricité' + alors: 0.059 + + notes: | + La base carbone de l'ADEME ne permet malheureusement pas de faire des liens profonds vers les chiffres utilisés. + Pour l'électricité, nous retenons le chiffre de l'ADEME "Electricité - 2016 - usage : Eau Chaude Sanitaire - consommation". + + références: + base carbone ADEME: http://www.bilans-ges.ademe.fr/fr/accueil + électricité: https://www.electricitymap.org/?page=country&solar=false&remote=true&wind=false&countryCode=FR + électricité sur Décrypter l'Energie: https://decrypterlenergie.org/decryptage-quel-est-le-contenu-en-co2-du-kwh-electrique + +- espace: chauffage + nom: énergie consommée par litre + formule: 0.0325 + unité: kWh + références: + analyse du prix d'une douche: https://www.econologie.com/forums/plomberie-et-sanitaire/prix-reel-d-un-bain-ou-d-une-douche-pour-l-eau-et-chauffage-t12727.html + + +- espace: chauffage + nom: impact par litre + formule: impact par kWh * énergie consommée par litre + +# Meilleure syntaxe : nouveau mécanisme correspondance +# mais où désigne-t-on ce sur quoi la correspondance se fait ? Est-ce implicite ? Ici le chauffage. +# formule: +# correspondance: + # gaz: 30 + # fioul: 50 + # électricité: 2 + +- nom: durée de la douche + question: Combien de temps dure votre douche en général ? + format: nombre + suggestions: + - texte: expresse + valeur: 2 + - texte: moyenne + valeur: 5 + - texte: lente + valeur: 10 diff --git a/test/library.test.js b/test/library.test.js index aa45cc2e2..7459e960e 100644 --- a/test/library.test.js +++ b/test/library.test.js @@ -1,6 +1,7 @@ import { expect } from 'chai' import Syso from '../source/engine/index' import sasuRules from '../source/règles/sasu.yaml' +import co2 from '../source/règles/co2.yaml' describe('library', function() { it('should evaluate one target with no input data', function() { @@ -126,4 +127,18 @@ describe('library', function() { ) expect(value).to.equal(7253.26) }) + it('should let let user define a rule base on a completely different subject', function() { + let target = 'impact' + + let value = Syso.evaluate( + target, + { + 'nombre de douches': 30, + 'chauffage . type': 'gaz', + 'durée de la douche': 7 + }, + { base: co2 } + ) + expect(value).to.equal(7253.26) + }) })