├── .gitignore ├── CNAME ├── img ├── EDF1.png ├── EDF21.png ├── Enedis1.png ├── Enedis2.png ├── Enedis3.png ├── TOTAL1.png ├── TOTAL2.png ├── TOTAL3.png ├── TOTAL4.png └── StrasbourgER.png ├── .github └── ISSUE_TEMPLATE │ └── new-issue.md ├── scripts ├── tarifs │ ├── alterna │ │ ├── baseHC_france.js │ │ ├── baseHC_local.js │ │ ├── base_local.js │ │ └── base_france.js │ ├── octopus │ │ ├── baseHC.js │ │ └── base.js │ ├── edf │ │ ├── vertAuto.js │ │ ├── zenFixe.js │ │ ├── vertRegional.js │ │ ├── zenOnline.js │ │ ├── vert.js │ │ ├── vertWeekEnd.js │ │ ├── zenWeekEndPlus.js │ │ ├── ejp.js │ │ ├── zenWeekEnd.js │ │ └── bleu.js │ ├── mint │ │ ├── onlineEtGreen.js │ │ ├── classicEtGreen.js │ │ ├── classicEtGreenHC.js │ │ └── onlineEtGreenHC.js │ ├── total │ │ ├── offreVerteFixe.js │ │ ├── heuresEco.js │ │ ├── offreStandardFixe.js │ │ ├── offreVerteFixeHC.js │ │ ├── heuresEcoHC.js │ │ ├── offreStandardFixeHC.js │ │ └── chargheures.js │ ├── uem │ │ ├── base.js │ │ ├── serviceHC.js │ │ └── serviceTempo.js │ ├── es │ │ ├── bleu.js │ │ ├── bleuHC.js │ │ └── tempo.js │ ├── ekwateur │ │ ├── ElectriciteVerteFixe.js │ │ ├── ElectriciteVerteVariable.js │ │ ├── ElectriciteVerteFixeHPHC.js │ │ └── ElectriciteVerteVariableHPHC.js │ ├── ilek │ │ ├── base.js │ │ └── hc.js │ ├── enercoop │ │ ├── base.js │ │ ├── baseHC.js │ │ └── saisons.js │ ├── ohm │ │ ├── classique.js │ │ ├── hyperEco.js │ │ ├── hyperEcoHC.js │ │ ├── classiqueHC.js │ │ └── soirWeekEndHC.js │ ├── labelleenergie │ │ ├── garance.js │ │ ├── prudence.js │ │ ├── constance.js │ │ ├── garanceHC.js │ │ ├── prudenceHC.js │ │ └── constanceHC.js │ ├── switch │ │ ├── baseHC.js │ │ └── base.js │ ├── sowee │ │ ├── optim_HC.js │ │ ├── fixe3ans_HC.js │ │ ├── optim_base.js │ │ └── fixe3ans_base.js │ ├── alpiq │ │ └── base.js │ └── engie │ │ ├── electTranquilite1an.js │ │ ├── electReference3ans.js │ │ └── electHappyHeuresVertes1an.js ├── viewManager.js ├── parsers │ ├── edfParser.js │ ├── serParser.js │ ├── enedisParser.js │ ├── totalParser.js │ └── homeAssistantParser.js └── calculator.js ├── style.css └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | /.vscode 2 | -------------------------------------------------------------------------------- /CNAME: -------------------------------------------------------------------------------- 1 | comparateur-abonnements-electricite.fr -------------------------------------------------------------------------------- /img/EDF1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JC144/EDF_Simulateur_Prix/HEAD/img/EDF1.png -------------------------------------------------------------------------------- /img/EDF21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JC144/EDF_Simulateur_Prix/HEAD/img/EDF21.png -------------------------------------------------------------------------------- /img/Enedis1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JC144/EDF_Simulateur_Prix/HEAD/img/Enedis1.png -------------------------------------------------------------------------------- /img/Enedis2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JC144/EDF_Simulateur_Prix/HEAD/img/Enedis2.png -------------------------------------------------------------------------------- /img/Enedis3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JC144/EDF_Simulateur_Prix/HEAD/img/Enedis3.png -------------------------------------------------------------------------------- /img/TOTAL1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JC144/EDF_Simulateur_Prix/HEAD/img/TOTAL1.png -------------------------------------------------------------------------------- /img/TOTAL2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JC144/EDF_Simulateur_Prix/HEAD/img/TOTAL2.png -------------------------------------------------------------------------------- /img/TOTAL3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JC144/EDF_Simulateur_Prix/HEAD/img/TOTAL3.png -------------------------------------------------------------------------------- /img/TOTAL4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JC144/EDF_Simulateur_Prix/HEAD/img/TOTAL4.png -------------------------------------------------------------------------------- /img/StrasbourgER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JC144/EDF_Simulateur_Prix/HEAD/img/StrasbourgER.png -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/new-issue.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: New issue 3 | about: Issue 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | /!\ Attention, si vous souhaitez partager un export de données, pensez à retirer votre numéro de PDL qui peut apparaître dans le nom de fichier et à l'intérieur. 11 | Ce numéro correspond à votre identifiant et pourrait être utilisé par des personnes mal intentionnées. 12 | 13 | Les exports nous aident à gérer certains cas particuliers et à mieux cibler certaines erreurs. 14 | -------------------------------------------------------------------------------- /scripts/tarifs/alterna/baseHC_france.js: -------------------------------------------------------------------------------- 1 | abonnements.push({ 2 | name: "Alterna - Heures Creuses", 3 | offer_type: "Marché", 4 | lastUpdate: "2025-10-02", 5 | subscription_url: "https://www.alterna-energie.fr", 6 | price_url: "https://www.alterna-energie.fr/tarifs-electricite-francaise", 7 | prices: [ 8 | { puissance: 6, abonnement: 15.74 }, 9 | { puissance: 9, abonnement: 20.21 }, 10 | { puissance: 12, abonnement: 24.28 }, 11 | { puissance: 15, abonnement: 28.15 }, 12 | { puissance: 18, abonnement: 32.13 }, 13 | { puissance: 24, abonnement: 40.53 }, 14 | { puissance: 30, abonnement: 48.34 }, 15 | { puissance: 36, abonnement: 56.20 } 16 | ].map(item => ({ 17 | ...item, 18 | bleu: { prixKwhHC: 19.43, prixKwhHP: 15.33 } 19 | })), 20 | hc: [], 21 | hasHCCustom: true, 22 | hasSpecialDaysCustom: false, 23 | specialDays: [], 24 | getDayType: function (day) { 25 | let dayType = "bleu"; 26 | return dayType; 27 | } 28 | }); 29 | -------------------------------------------------------------------------------- /scripts/tarifs/alterna/baseHC_local.js: -------------------------------------------------------------------------------- 1 | abonnements.push({ 2 | name: "Alterna - Heures Creuses Locale", 3 | offer_type: "Marché", 4 | lastUpdate: "2025-10-02", 5 | subscription_url: "https://www.alterna-energie.fr", 6 | price_url: "https://www.alterna-energie.fr/tarifs-electricite-locale", 7 | prices: [ 8 | { puissance: 6, abonnement: 15.74 }, 9 | { puissance: 9, abonnement: 20.21 }, 10 | { puissance: 12, abonnement: 24.28 }, 11 | { puissance: 15, abonnement: 28.15 }, 12 | { puissance: 18, abonnement: 32.13 }, 13 | { puissance: 24, abonnement: 40.53 }, 14 | { puissance: 30, abonnement: 48.34 }, 15 | { puissance: 36, abonnement: 56.20 } 16 | ].map(item => ({ 17 | ...item, 18 | bleu: { prixKwhHC: 19.77, prixKwhHP: 15.59 } 19 | })), 20 | hc: [], 21 | hasHCCustom: true, 22 | hasSpecialDaysCustom: false, 23 | specialDays: [], 24 | getDayType: function (day) { 25 | let dayType = "bleu"; 26 | return dayType; 27 | } 28 | }); 29 | -------------------------------------------------------------------------------- /scripts/tarifs/octopus/baseHC.js: -------------------------------------------------------------------------------- 1 | abonnements.push({ 2 | name: "Octopus - Heures Creuses", 3 | offer_type: "Marché", 4 | lastUpdate: "2025-08-01", 5 | subscription_url: "https://www.octopusenergy.fr/offre-electricite-tarifs", 6 | price_url: "https://a.storyblok.com/f/151412/x/cea34c87af/grille-tarifaire-eco_conso_fixe_6_aout25.pdf", 7 | prices: [ 8 | { puissance: 6, abonnement: 15.74 }, 9 | { puissance: 9, abonnement: 20.21 }, 10 | { puissance: 12, abonnement: 24.28 }, 11 | { puissance: 15, abonnement: 28.15 }, 12 | { puissance: 18, abonnement: 32.13 }, 13 | { puissance: 24, abonnement: 40.53 }, 14 | { puissance: 30, abonnement: 48.34 }, 15 | { puissance: 36, abonnement: 54.61 } 16 | ].map(item => ({ 17 | ...item, 18 | bleu: { prixKwhHC: 15.59, prixKwhHP: 19.77 } 19 | })), 20 | hc: [], 21 | hasHCCustom: true, 22 | hasSpecialDaysCustom: false, 23 | specialDays: [], 24 | getDayType: function (day) { 25 | let dayType = "bleu"; 26 | return dayType; 27 | } 28 | }); 29 | -------------------------------------------------------------------------------- /scripts/tarifs/edf/vertAuto.js: -------------------------------------------------------------------------------- 1 | abonnements.push({ 2 | name: "EDF - Vert Electrique Auto", 3 | offer_type: "Marché", 4 | lastUpdate: "2025-09-15", 5 | isCommunity: false, 6 | subscription_url: "https://particulier.edf.fr/fr/accueil/electricite-gaz/offres-electricite/offres-marche/electricite-verte/vert-electrique-auto.html", 7 | price_url: "https://particulier.edf.fr/content/dam/2-Actifs/Documents/Offres/grille-prix-vert-electrique-auto.pdf", 8 | prices: [ 9 | { puissance: 6, abonnement: 15.74 }, 10 | { puissance: 9, abonnement: 19.81 }, 11 | { puissance: 12, abonnement: 23.76 }, 12 | { puissance: 15, abonnement: 27.49 }, 13 | { puissance: 18, abonnement: 31.34 }, 14 | { puissance: 24, abonnement: 39.47 }, 15 | { puissance: 30, abonnement: 47.02 }, 16 | { puissance: 36, abonnement: 54.61 } 17 | ].map(item => ({ 18 | ...item, 19 | bleu: { 20 | prixKwhHP: 22.19, 21 | prixKwhHC: 12.90 22 | } 23 | })), 24 | hc: [], 25 | hasHCCustom: true, 26 | hasSpecialDaysCustom: false, 27 | specialDays: [], 28 | getDayType: function (day) { 29 | let dayType = "bleu"; 30 | return dayType; 31 | } 32 | }); 33 | -------------------------------------------------------------------------------- /scripts/tarifs/alterna/base_local.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "Alterna - Base Locale", 4 | offer_type: "Marché", 5 | lastUpdate: "2025-10-02", 6 | subscription_url: "https://www.alterna-energie.fr", 7 | price_url: "https://www.alterna-energie.fr/tarifs-electricite-locale", 8 | prices: [ 9 | { puissance: 3, abonnement: 11.73 }, 10 | { puissance: 6, abonnement: 15.47 }, 11 | { puissance: 9, abonnement: 19.39 }, 12 | { puissance: 12, abonnement: 23.32 }, 13 | { puissance: 15, abonnement: 27.06 }, 14 | { puissance: 18, abonnement: 30.76 }, 15 | { puissance: 24, abonnement: 38.79 }, 16 | { puissance: 30, abonnement: 46.44 }, 17 | { puissance: 36, abonnement: 54.29 } 18 | ].map(item => ({ 19 | ...item, 20 | bleu: { prixKwhHC: 18.57, prixKwhHP: 18.57 } 21 | })), 22 | hc: [{ 23 | start: {hour:0, minute:0}, 24 | end: {hour:24, minute:0} 25 | }], 26 | hasHCCustom: false, 27 | hasSpecialDaysCustom: false, 28 | specialDays: [], 29 | getDayType: function (day) { 30 | let dayType = "bleu"; 31 | return dayType; 32 | } 33 | } 34 | ); 35 | 36 | -------------------------------------------------------------------------------- /scripts/tarifs/alterna/base_france.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "Alterna - Base France", 4 | offer_type: "Marché", 5 | lastUpdate: "2025-10-02", 6 | subscription_url: "https://www.alterna-energie.fr", 7 | price_url: "https://www.alterna-energie.fr/tarifs-electricite-francaise", 8 | prices: [ 9 | { puissance: 3, abonnement: 11.73 }, 10 | { puissance: 6, abonnement: 15.47 }, 11 | { puissance: 9, abonnement: 19.39 }, 12 | { puissance: 12, abonnement: 23.32 }, 13 | { puissance: 15, abonnement: 27.06 }, 14 | { puissance: 18, abonnement: 30.76 }, 15 | { puissance: 24, abonnement: 38.79 }, 16 | { puissance: 30, abonnement: 46.44 }, 17 | { puissance: 36, abonnement: 54.29 } 18 | ].map(item => ({ 19 | ...item, 20 | bleu: { prixKwhHC: 18.25, prixKwhHP: 18.25 } 21 | })), 22 | hc: [{ 23 | start: {hour:0, minute:0}, 24 | end: {hour:24, minute:0} 25 | }], 26 | hasHCCustom: false, 27 | hasSpecialDaysCustom: false, 28 | specialDays: [], 29 | getDayType: function (day) { 30 | let dayType = "bleu"; 31 | return dayType; 32 | } 33 | } 34 | ); 35 | 36 | -------------------------------------------------------------------------------- /scripts/tarifs/mint/onlineEtGreen.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "Mint Energie - Online & Green", 4 | lastUpdate: "2025-08-01", 5 | subscription_url: "https://www.mint-energie.com/Pages/Informations/tarifs_elec.aspx", 6 | price_url: "https://doc.mint-energie.com/MintEnergie/MINT_ENERGIE_Fiche_Tarifs_21912_ONLINE_GREEN.pdf", 7 | prices: [ 8 | { puissance: 3, abonnement: 11.73 }, 9 | { puissance: 6, abonnement: 15.47 }, 10 | { puissance: 9, abonnement: 19.39 }, 11 | { puissance: 12, abonnement: 23.32 }, 12 | { puissance: 15, abonnement: 27.06 }, 13 | { puissance: 18, abonnement: 30.76 }, 14 | { puissance: 24, abonnement: 38.79 }, 15 | { puissance: 30, abonnement: 46.44 }, 16 | { puissance: 36, abonnement: 54.29 } 17 | ].map(item => ({ 18 | ...item, 19 | bleu: { prixKwhHC: 17.77, prixKwhHP: 17.77 } 20 | })), 21 | hc: [{ 22 | start: { hour: 0, minute: 0 }, 23 | end: { hour: 24, minute: 0 } 24 | }], 25 | hasHCCustom: false, 26 | specialDays: [], 27 | getDayType: function (day) { 28 | let dayType = "bleu"; 29 | return dayType; 30 | } 31 | } 32 | ); 33 | 34 | -------------------------------------------------------------------------------- /scripts/tarifs/mint/classicEtGreen.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "Mint Energie - Classic & Green", 4 | lastUpdate: "2025-08-01", 5 | subscription_url: "https://www.mint-energie.com/Pages/Informations/tarifs_elec.aspx", 6 | price_url: "https://doc.mint-energie.com/MintEnergie/MINT_ENERGIE_Fiche_Tarifs_23012_CLASSIC_GREEN.pdf", 7 | prices: [ 8 | { puissance: 3, abonnement: 13.52 }, 9 | { puissance: 6, abonnement: 15.98 }, 10 | { puissance: 9, abonnement: 17.25 }, 11 | { puissance: 12, abonnement: 22.11 }, 12 | { puissance: 15, abonnement: 25.78 }, 13 | { puissance: 18, abonnement: 29.44 }, 14 | { puissance: 24, abonnement: 37.97 }, 15 | { puissance: 30, abonnement: 45.90 }, 16 | { puissance: 36, abonnement: 53.23 } 17 | ].map(item => ({ 18 | ...item, 19 | bleu: { prixKwhHC: 19.52, prixKwhHP: 19.52 } 20 | })), 21 | hc: [{ 22 | start: { hour: 0, minute: 0 }, 23 | end: { hour: 24, minute: 0 } 24 | }], 25 | hasHCCustom: false, 26 | specialDays: [], 27 | getDayType: function (day) { 28 | let dayType = "bleu"; 29 | return dayType; 30 | } 31 | } 32 | ); 33 | 34 | -------------------------------------------------------------------------------- /scripts/tarifs/octopus/base.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "Octopus - Base", 4 | offer_type: "Marché", 5 | lastUpdate: "2025-08-01", 6 | subscription_url: "https://www.octopusenergy.fr/offre-electricite-tarifs", 7 | price_url: "https://a.storyblok.com/f/151412/x/cea34c87af/grille-tarifaire-eco_conso_fixe_6_aout25.pdf", 8 | prices: [ 9 | { puissance: 3, abonnement: 11.73 }, 10 | { puissance: 6, abonnement: 15.47 }, 11 | { puissance: 9, abonnement: 19.39 }, 12 | { puissance: 12, abonnement: 23.32 }, 13 | { puissance: 15, abonnement: 27.06 }, 14 | { puissance: 18, abonnement: 30.76 }, 15 | { puissance: 24, abonnement: 38.79 }, 16 | { puissance: 30, abonnement: 46.44 }, 17 | { puissance: 36, abonnement: 55.05 } 18 | ].map(item => ({ 19 | ...item, 20 | bleu: { prixKwhHC: 18.56, prixKwhHP: 18.56 } 21 | })), 22 | hc: [{ 23 | start: { hour: 0, minute: 0 }, 24 | end: { hour: 24, minute: 0 } 25 | }], 26 | hasHCCustom: false, 27 | hasSpecialDaysCustom: false, 28 | specialDays: [], 29 | getDayType: function (day) { 30 | let dayType = "bleu"; 31 | return dayType; 32 | } 33 | } 34 | ); 35 | 36 | -------------------------------------------------------------------------------- /scripts/tarifs/mint/classicEtGreenHC.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "Mint Energie - Classic & Green HC", 4 | lastUpdate: "2025-08-01", 5 | subscription_url: "https://www.mint-energie.com/Pages/Informations/tarifs_elec.aspx", 6 | price_url: "https://doc.mint-energie.com/MintEnergie/MINT_ENERGIE_Fiche_Tarifs_23012_CLASSIC_GREEN.pdf", 7 | prices: [ 8 | { puissance: 6, abonnement: 16.25 }, 9 | { puissance: 9, abonnement: 17.64 }, 10 | { puissance: 12, abonnement: 22.64 }, 11 | { puissance: 15, abonnement: 26.44 }, 12 | { puissance: 18, abonnement: 30.24 }, 13 | { puissance: 24, abonnement: 39.03 }, 14 | { puissance: 30, abonnement: 47.23 }, 15 | { puissance: 36, abonnement: 54.82 } 16 | ].map(item => ({ 17 | ...item, 18 | bleu: { prixKwhHC: 16.35, prixKwhHP: 20.81 } 19 | })), 20 | hc: [{ 21 | start: {hour:22, minute:0}, 22 | end: {hour:24, minute:0} 23 | }, 24 | { 25 | start: {hour:0, minute:0}, 26 | end: {hour:6, minute:0} 27 | }], 28 | hasHCCustom: false, 29 | hasSpecialDaysCustom: false, 30 | specialDays: [], 31 | getDayType: function (day) { 32 | let dayType = "bleu"; 33 | return dayType; 34 | } 35 | } 36 | ); 37 | 38 | -------------------------------------------------------------------------------- /scripts/tarifs/mint/onlineEtGreenHC.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "Mint Energie - Online & Green HC", 4 | lastUpdate: "2025-08-01", 5 | subscription_url: "https://www.mint-energie.com/Pages/Informations/tarifs_elec.aspx", 6 | price_url: "https://doc.mint-energie.com/MintEnergie/MINT_ENERGIE_Fiche_Tarifs_21912_ONLINE_GREEN.pdf", 7 | prices: [ 8 | { puissance: 6, abonnement: 16.01 }, 9 | { puissance: 9, abonnement: 20.21 }, 10 | { puissance: 12, abonnement: 24.28 }, 11 | { puissance: 15, abonnement: 28.15 }, 12 | { puissance: 18, abonnement: 32.13 }, 13 | { puissance: 24, abonnement: 40.53 }, 14 | { puissance: 30, abonnement: 48.34 }, 15 | { puissance: 36, abonnement: 56.20 } 16 | ].map(item => ({ 17 | ...item, 18 | bleu: { prixKwhHC: 14.95, prixKwhHP: 18.91 } 19 | })), 20 | hc: [{ 21 | start: {hour:22, minute:0}, 22 | end: {hour:24, minute:0} 23 | }, 24 | { 25 | start: {hour:0, minute:0}, 26 | end: {hour:6, minute:0} 27 | }], 28 | hasHCCustom: false, 29 | hasSpecialDaysCustom: false, 30 | specialDays: [], 31 | getDayType: function (day) { 32 | let dayType = "bleu"; 33 | return dayType; 34 | } 35 | } 36 | ); 37 | 38 | -------------------------------------------------------------------------------- /scripts/tarifs/total/offreVerteFixe.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "TotalEnergie - Offre verte fixe", 4 | lastUpdate: "2025-08-05", 5 | subscription_url: "https://www.totalenergies.fr/particuliers/electricite/offres-d-electricite/offre-heures-eco-electricite", 6 | price_url: "https://www.totalenergies.fr/fileadmin/Digital/Documents-contractuels/GT/grille-tarifaire-verte-fixe-particuliers.pdf", 7 | prices: [ 8 | { puissance: 3, abonnement: 13.45 }, 9 | { puissance: 6, abonnement: 17.74 }, 10 | { puissance: 9, abonnement: 22.34 }, 11 | { puissance: 12, abonnement: 27.01 }, 12 | { puissance: 15, abonnement: 31.35 }, 13 | { puissance: 18, abonnement: 35.45 }, 14 | { puissance: 24, abonnement: 44.95 }, 15 | { puissance: 30, abonnement: 54.44 }, 16 | { puissance: 36, abonnement: 62.75 } 17 | ].map(item => ({ 18 | ...item, 19 | bleu: { prixKwhHC: 19.15, prixKwhHP: 19.15 } 20 | })), 21 | hc: [{ 22 | start: {hour:0, minute:0}, 23 | end: {hour:24, minute:0} 24 | }], 25 | hasHCCustom: false, 26 | hasSpecialDaysCustom: false, 27 | specialDays: [], 28 | getDayType: function (day) { 29 | let dayType = "bleu"; 30 | return dayType; 31 | } 32 | } 33 | ); 34 | 35 | -------------------------------------------------------------------------------- /scripts/tarifs/total/heuresEco.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "TotalEnergie - Heures Eco", 4 | lastUpdate: "2025-10-01", 5 | subscription_url: "https://www.totalenergies.fr/particuliers/electricite/offres-d-electricite/offre-heures-eco-electricite", 6 | price_url: "https://www.totalenergies.fr/fileadmin/Digital/Groupe/PDF/Documents_contractuels/Particuliers/Tarifs_TotalEnergies/fr/grille-tarifaire-heures-eco-particuliers.pdf", 7 | prices: [ 8 | { puissance: 3, abonnement: 11.73 }, 9 | { puissance: 6, abonnement: 15.47 }, 10 | { puissance: 9, abonnement: 19.39 }, 11 | { puissance: 12, abonnement: 23.32 }, 12 | { puissance: 15, abonnement: 27.06 }, 13 | { puissance: 18, abonnement: 31.14 }, 14 | { puissance: 24, abonnement: 39.29 }, 15 | { puissance: 30, abonnement: 47.07 }, 16 | { puissance: 36, abonnement: 55.05 } 17 | ].map(item => ({ 18 | ...item, 19 | bleu: { prixKwhHC: 19.52, prixKwhHP: 19.52 } 20 | })), 21 | hc: [{ 22 | start: { hour: 0, minute: 0 }, 23 | end: { hour: 24, minute: 0 } 24 | }], 25 | hasHCCustom: false, 26 | hasSpecialDaysCustom: false, 27 | specialDays: [], 28 | getDayType: function (day) { 29 | let dayType = "bleu"; 30 | return dayType; 31 | } 32 | } 33 | ); 34 | 35 | -------------------------------------------------------------------------------- /scripts/tarifs/total/offreStandardFixe.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "TotalEnergie - Offre standard fixe", 4 | lastUpdate: "2025-08-05", 5 | subscription_url: "https://www.totalenergies.fr/particuliers/electricite/offres-d-electricite/offre-standard-fixe-electricite", 6 | price_url: "https://www.totalenergies.fr/fileadmin/Digital/Groupe/PDF/Documents_contractuels/Particuliers/Tarifs_TotalEnergies/fr/grille-tarifaire-standard-fixe-particuliers.pdf", 7 | prices: [ 8 | { puissance: 3, abonnement: 13.45 }, 9 | { puissance: 6, abonnement: 17.74 }, 10 | { puissance: 9, abonnement: 22.34 }, 11 | { puissance: 12, abonnement: 27.01 }, 12 | { puissance: 15, abonnement: 31.35 }, 13 | { puissance: 18, abonnement: 35.45 }, 14 | { puissance: 24, abonnement: 44.95 }, 15 | { puissance: 30, abonnement: 54.44 }, 16 | { puissance: 36, abonnement: 62.75 } 17 | ].map(item => ({ 18 | ...item, 19 | bleu: { prixKwhHC: 18.91, prixKwhHP: 18.91 } 20 | })), 21 | hc: [{ 22 | start: {hour:0, minute:0}, 23 | end: {hour:24, minute:0} 24 | }], 25 | hasHCCustom: false, 26 | hasSpecialDaysCustom: false, 27 | specialDays: [], 28 | getDayType: function (day) { 29 | let dayType = "bleu"; 30 | return dayType; 31 | } 32 | } 33 | ); -------------------------------------------------------------------------------- /scripts/tarifs/total/offreVerteFixeHC.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "TotalEnergie - Offre verte fixe HC", 4 | lastUpdate: "2025-08-05", 5 | subscription_url: "https://www.totalenergies.fr/particuliers/electricite/offres-d-electricite/offre-heures-eco-electricite", 6 | price_url: "https://www.totalenergies.fr/fileadmin/Digital/Documents-contractuels/GT/grille-tarifaire-verte-fixe-particuliers.pdf", 7 | prices: [ 8 | { puissance: 6, abonnement: 18.47 }, 9 | { puissance: 9, abonnement: 23.39 }, 10 | { puissance: 12, abonnement: 28.17 }, 11 | { puissance: 15, abonnement: 32.14 }, 12 | { puissance: 18, abonnement: 37.38 }, 13 | { puissance: 24, abonnement: 47.15 }, 14 | { puissance: 30, abonnement: 56.00 }, 15 | { puissance: 36, abonnement: 65.08 } 16 | ].map(item => ({ 17 | ...item, 18 | bleu: { prixKwhHC: 16.06, prixKwhHP: 20.40 } 19 | })), 20 | hc: [{ 21 | start: {hour:22, minute:0}, 22 | end: {hour:24, minute:0} 23 | }, 24 | { 25 | start: {hour:0, minute:0}, 26 | end: {hour:6, minute:0} 27 | }], 28 | hasHCCustom: false, 29 | hasSpecialDaysCustom: false, 30 | specialDays: [], 31 | getDayType: function (day) { 32 | let dayType = "bleu"; 33 | return dayType; 34 | } 35 | } 36 | ); 37 | 38 | -------------------------------------------------------------------------------- /scripts/viewManager.js: -------------------------------------------------------------------------------- 1 | var viewManager = { 2 | views: [], 3 | currentView: 0, 4 | init: function () { 5 | const presentationView = document.getElementById("presentationView"); 6 | const importView = document.getElementById("importView"); 7 | const pricesResultView = document.getElementById("pricesResultView"); 8 | this.views["presentation"] = presentationView; 9 | this.views["import"] = importView; 10 | this.views["prices"] = pricesResultView; 11 | 12 | this.setAllViewsToNoneExceptFirst(); 13 | }, 14 | setAllViewsToNoneExceptFirst: function () { 15 | Object.values(this.views)[0].style.display = "block"; 16 | for (let i = 1; i < Object.values(this.views).length; i++) { 17 | Object.values(this.views)[i].style.display = "none"; 18 | } 19 | }, 20 | displayNextView: function () { 21 | if (this.currentView + 1 < Object.values(this.views).length) { 22 | Object.values(this.views)[this.currentView].style.display = "none"; 23 | this.currentView++; 24 | Object.values(this.views)[this.currentView].style.display = "block"; 25 | } 26 | }, 27 | displayPreviousView: function () { 28 | if (this.currentView - 1 >= 0) { 29 | Object.values(this.views)[this.currentView].style.display = "none"; 30 | this.currentView--; 31 | Object.values(this.views)[this.currentView].style.display = "block"; 32 | } 33 | } 34 | } 35 | 36 | -------------------------------------------------------------------------------- /scripts/tarifs/total/heuresEcoHC.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "TotalEnergie - HeuresEco HC", 4 | lastUpdate: "2025-10-01", 5 | subscription_url: "https://www.totalenergies.fr/particuliers/electricite/offres-d-electricite/offre-heures-eco-electricite", 6 | price_url: "https://www.totalenergies.fr/fileadmin/Digital/Groupe/PDF/Documents_contractuels/Particuliers/Tarifs_TotalEnergies/fr/grille-tarifaire-heures-eco-particuliers.pdf", 7 | prices: [ 8 | { puissance: 6, abonnement: 15.74 }, 9 | { puissance: 9, abonnement: 20.21 }, 10 | { puissance: 12, abonnement: 24.64 }, 11 | { puissance: 15, abonnement: 28.60 }, 12 | { puissance: 18, abonnement: 32.13 }, 13 | { puissance: 24, abonnement: 40.53 }, 14 | { puissance: 30, abonnement: 48.34 }, 15 | { puissance: 36, abonnement: 56.20 } 16 | ].map(item => ({ 17 | ...item, 18 | bleu: { prixKwhHC: 16.35, prixKwhHP: 20.81 } 19 | })), 20 | hc: [{ 21 | start: {hour:22, minute:0}, 22 | end: {hour:24, minute:0} 23 | }, 24 | { 25 | start: {hour:0, minute:0}, 26 | end: {hour:6, minute:0} 27 | }], 28 | hasHCCustom: false, 29 | hasSpecialDaysCustom: false, 30 | specialDays: [], 31 | getDayType: function (day) { 32 | let dayType = "bleu"; 33 | return dayType; 34 | } 35 | } 36 | ); 37 | 38 | -------------------------------------------------------------------------------- /scripts/tarifs/total/offreStandardFixeHC.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "TotalEnergie - Offre standard fixe HC", 4 | lastUpdate: "2025-08-05", 5 | subscription_url: "https://www.totalenergies.fr/particuliers/electricite/offres-d-electricite/offre-standard-fixe-electricite", 6 | price_url: "https://www.totalenergies.fr/fileadmin/Digital/Groupe/PDF/Documents_contractuels/Particuliers/Tarifs_TotalEnergies/fr/grille-tarifaire-standard-fixe-particuliers.pdf", 7 | prices: [ 8 | { puissance: 6, abonnement: 18.47 }, 9 | { puissance: 9, abonnement: 23.39 }, 10 | { puissance: 12, abonnement: 28.17 }, 11 | { puissance: 15, abonnement: 32.14 }, 12 | { puissance: 18, abonnement: 37.38 }, 13 | { puissance: 24, abonnement: 47.15 }, 14 | { puissance: 30, abonnement: 56.00 }, 15 | { puissance: 36, abonnement: 65.08 } 16 | ].map(item => ({ 17 | ...item, 18 | bleu: { prixKwhHC: 15.86, prixKwhHP: 20.14 } 19 | })), 20 | hc: [{ 21 | start: {hour:22, minute:0}, 22 | end: {hour:24, minute:0} 23 | }, 24 | { 25 | start: {hour:0, minute:0}, 26 | end: {hour:6, minute:0} 27 | }], 28 | hasHCCustom: false, 29 | hasSpecialDaysCustom: false, 30 | specialDays: [], 31 | getDayType: function (day) { 32 | let dayType = "bleu"; 33 | return dayType; 34 | } 35 | } 36 | ); -------------------------------------------------------------------------------- /scripts/tarifs/uem/base.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | "name": "UEM - Base", 4 | "offer_type": "TRV", 5 | "lastUpdate": "2025-01-04", 6 | "isCommunity": true, 7 | "subscription_url": "https://particuliers.uem-metz.fr/nos-offres-denergies/offre-delectricite/", 8 | "price_url": "https://particuliers.uem-metz.fr/wp-content/uploads/sites/2/2024/07/Tarif-bleu-particuliers.pdf", 9 | "prices": [ 10 | {"puissance": 3, "abonnement": 116.23/12, "bleu": {"prixKwhHC": 25.16}}, 11 | {"puissance": 6, "abonnement": 152.10/12, "bleu": {"prixKwhHC": 25.16}}, 12 | {"puissance": 9, "abonnement": 190.63/12, "bleu": {"prixKwhHC": 25.16}}, 13 | {"puissance": 12, "abonnement": 229.91/12, "bleu": {"prixKwhHC": 25.16}}, 14 | {"puissance": 15, "abonnement": 266.54/12, "bleu": {"prixKwhHC": 25.16}}, 15 | {"puissance": 18, "abonnement": 302.91/12, "bleu": {"prixKwhHC": 25.16}}, 16 | {"puissance": 24, "abonnement": 383.51/12, "bleu": {"prixKwhHC": 25.16}}, 17 | {"puissance": 30, "abonnement": 452.20/12, "bleu": {"prixKwhHC": 25.16}}, 18 | {"puissance": 36, "abonnement": 533.19/12, "bleu": {"prixKwhHC": 25.16}} 19 | ], 20 | hc: [{ 21 | start: {hour:0, minute:0}, 22 | end: {hour:24, minute:0} 23 | }], 24 | hasHCCustom: false, 25 | hasSpecialDaysCustom: false, 26 | specialDays: [], 27 | getDayType: function (day) { 28 | let dayType = "bleu"; 29 | return dayType; 30 | } 31 | } 32 | ); 33 | 34 | -------------------------------------------------------------------------------- /scripts/tarifs/es/bleu.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "ES - Bleu", 4 | offer_type: "TRV", 5 | lastUpdate: "2024-02-01", 6 | subscription_url: "https://particuliers.es.fr/Offres-energies-services/Electricite-Gaz/Les-offres-electricite-d-ES/Tarif-Reglemente-electricite", 7 | price_url: "https://particuliers.es.fr/Media/Files/Part/Documentation-electricite/Tarif-reglemente-Fiche-descriptive-de-l-offre", 8 | prices: [{ 9 | puissance: 3, 10 | abonnement: 9.69, 11 | bleu: { 12 | prixKwhHC: 25.164 13 | } 14 | }, 15 | { 16 | puissance: 6, 17 | abonnement: 12.71, 18 | bleu: { 19 | prixKwhHC: 25.164 20 | } 21 | }, 22 | { 23 | puissance: 9, 24 | abonnement: 15.96, 25 | bleu: { 26 | prixKwhHC: 25.164 27 | } 28 | }, 29 | { 30 | puissance: 12, 31 | abonnement: 19.27, 32 | bleu: { 33 | prixKwhHC: 25.164 34 | } 35 | }, 36 | { 37 | puissance: 15, 38 | abonnement: 22.35, 39 | bleu: { 40 | prixKwhHC: 25.164 41 | } 42 | }], 43 | hc: [{ 44 | start: {hour:0, minute:0}, 45 | end: {hour:24, minute:0} 46 | }], 47 | hasHCCustom: false, 48 | hasSpecialDaysCustom: false, 49 | specialDays: [], 50 | getDayType: function (day) { 51 | let dayType = "bleu"; 52 | return dayType; 53 | } 54 | } 55 | ); 56 | 57 | -------------------------------------------------------------------------------- /scripts/tarifs/uem/serviceHC.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | "name": "UEM - HP/HC", 4 | "offer_type": "TRV", 5 | "lastUpdate": "2025-01-04", 6 | "isCommunity": true, 7 | "subscription_url": "https://particuliers.uem-metz.fr/nos-offres-denergies/offre-delectricite/", 8 | "price_url": "https://particuliers.uem-metz.fr/wp-content/uploads/sites/2/2024/07/Tarif-bleu-particuliers.pdf", 9 | "prices": [ 10 | { "puissance": 6, "abonnement": 159.37/12, "bleu": { "prixKwhHC": 20.68, "prixKwhHP": 27.00 } }, 11 | { "puissance": 9, "abonnement": 201.84/12, "bleu": { "prixKwhHC": 20.68, "prixKwhHP": 27.00 } }, 12 | { "puissance": 12, "abonnement": 243.30/12, "bleu": { "prixKwhHC": 20.68, "prixKwhHP": 27.00 } }, 13 | { "puissance": 15, "abonnement": 282.88/12, "bleu": { "prixKwhHC": 20.68, "prixKwhHP": 27.00 } }, 14 | { "puissance": 18, "abonnement": 322.06/12, "bleu": { "prixKwhHC": 20.68, "prixKwhHP": 27.00 } }, 15 | { "puissance": 24, "abonnement": 404.36/12, "bleu": { "prixKwhHC": 20.68, "prixKwhHP": 27.00 } }, 16 | { "puissance": 30, "abonnement": 479.31/12, "bleu": { "prixKwhHC": 20.68, "prixKwhHP": 27.00 } }, 17 | { "puissance": 36, "abonnement": 554.90/12, "bleu": { "prixKwhHC": 20.68, "prixKwhHP": 27.00 } } 18 | ], 19 | hc: [{ 20 | start: {hour:23, minute:0}, 21 | end: {hour:24, minute:0} 22 | }, 23 | { 24 | start: {hour:0, minute:0}, 25 | end: {hour:7, minute:0} 26 | }], 27 | hasHCCustom: false, 28 | hasSpecialDaysCustom: false, 29 | specialDays: [], 30 | getDayType: function (day) { 31 | let dayType = "bleu"; 32 | return dayType; 33 | } 34 | } 35 | ); 36 | -------------------------------------------------------------------------------- /scripts/parsers/edfParser.js: -------------------------------------------------------------------------------- 1 | var edfParser = { 2 | parseCSV: function (csv) { 3 | const result = []; 4 | 5 | const lines = csv.split("\n"); 6 | 7 | for (let i = 0; i < lines.length; i++) { 8 | const currentline = lines[i].split(";"); 9 | result.push(currentline); 10 | } 11 | return result; 12 | }, 13 | loadData: function (rows) { 14 | let data = []; 15 | let day = {}; 16 | 17 | for (let index = 0; index < rows.length; index++) { 18 | if (rows[index].length > 0) { 19 | if (rows[index][0].includes("/")) { 20 | let date = rows[index][0].split("/"); 21 | let isoDate = date[2] + "/" + date[1] + "/" + date[0]; 22 | 23 | day = {}; 24 | data.push(day); 25 | day.date = isoDate; 26 | day.hours = []; 27 | } 28 | //On vérifie si on a bien une donnée 29 | else if (rows[index][0].includes(":")) { 30 | let minutes = rows[index][0].split(":")[1]; 31 | //Vérification si les minutes sont bien 00 ou 30 32 | if (minutes == "00" || minutes == "30") { 33 | //Vérification si ce n'est pas un doublon 34 | if (!day.hours.some(hour => hour[0] == rows[index][0])) { 35 | let hours = rows[index][0].split(":")[0]; 36 | if (hours == "00" && minutes == "00") { 37 | hours = "24"; 38 | } 39 | day.hours.push([`${hours}:${minutes}:00`, rows[index][1]]); 40 | } 41 | } 42 | } 43 | } 44 | } 45 | return data; 46 | } 47 | }; 48 | 49 | 50 | -------------------------------------------------------------------------------- /scripts/parsers/serParser.js: -------------------------------------------------------------------------------- 1 | // Strasbourg Electricité Réseaux 2 | var serParser = { 3 | parseCSV: function (csv) { 4 | const result = []; 5 | 6 | const lines = csv.split("\n"); 7 | 8 | //Les données débutent à partir de la 3ème ligne 9 | for (let i = 3; i < lines.length; i++) { 10 | const currentline = lines[i].split(";"); 11 | result.push(currentline); 12 | } 13 | return result; 14 | }, 15 | loadData: function (rows) { 16 | let data = []; 17 | let dates = []; 18 | let day = {}; 19 | 20 | for (let index = 0; index < rows.length; index++) { 21 | let line = rows[index]; 22 | if (line.length > 0) { 23 | // on s'assure que la colonne dont on va rechercher la date existe bien, puis si la donnée contient ce qu'on souhaite 24 | if (line[0] !== undefined && line[0].search(/\//) !== -1) { 25 | let date = line[0].replace('"', '').split("/"); 26 | let isoDate = date[2] + "/" + date[1] + "/" + date[0]; 27 | const [hours, minutes] = line[1].split(':'); 28 | // on remplace les caratères bizarres 65533 (question mark). 29 | let conso = Number(line[4].replace('"', '').replace(String.fromCharCode(65533), '')); 30 | 31 | // si date pas encore traitée 32 | if (!dates.find((elm) => elm == isoDate)) { 33 | dates.push(isoDate); 34 | 35 | day = {}; 36 | data.push(day); 37 | day.date = isoDate; 38 | day.hours = []; 39 | } 40 | 41 | day.hours.push([`${hours}:${minutes}:00`, conso]); 42 | } 43 | } 44 | } 45 | return data; 46 | } 47 | }; 48 | -------------------------------------------------------------------------------- /scripts/parsers/enedisParser.js: -------------------------------------------------------------------------------- 1 | var enedisParser = { 2 | parseCSV: function (csv) { 3 | const result = []; 4 | 5 | const lines = csv.split("\n"); 6 | 7 | //Les données débutent à partir de la 3ème ligne 8 | for (let i = 3; i < lines.length; i++) { 9 | const currentline = lines[i].split(";"); 10 | result.push(currentline); 11 | } 12 | return result; 13 | }, 14 | loadData: function (rows) { 15 | let data = []; 16 | 17 | rows.reverse().forEach(row => { 18 | if (row.length > 1) { 19 | const [date, time] = row[0].replace(/\+0.:00/g, "").split("T"); 20 | const value = row[1]; 21 | 22 | let formattedDate = date.replace(/-/g, "/"); 23 | 24 | let [hours, minutes, seconds] = time.split(':'); 25 | 26 | if (hours == "00" && minutes == "00") { 27 | hours = "24"; 28 | let isoDate = new Date(date); 29 | isoDate.setDate(isoDate.getDate() - 1); 30 | formattedDate = isoDate.toISOString().split("T")[0].replace(/-/g, "/"); 31 | } 32 | const formattedTime = `${hours}:${minutes}:00`; 33 | 34 | const day = data.find(d => d.date === formattedDate); 35 | if (day) { 36 | //On vérifie si on n'a pas de doublons. Cela ne s'est pas produit chez ENEDIS. 37 | if (!day.hours.some(hour => hour[0] == formattedTime)) { 38 | day.hours.push([formattedTime, value]); 39 | } 40 | } else { 41 | let newDay = {}; 42 | newDay.date = formattedDate; 43 | newDay.hours = []; 44 | newDay.hours.push([formattedTime, value]); 45 | data.push(newDay); 46 | } 47 | } 48 | }); 49 | 50 | return data; 51 | } 52 | }; 53 | 54 | 55 | -------------------------------------------------------------------------------- /scripts/tarifs/ekwateur/ElectriciteVerteFixe.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "Ekwateur - Electricité verte fixe", 4 | lastUpdate: "2024-01-30", 5 | prices: [{ 6 | puissance: 3, 7 | abonnement: 13.29, 8 | bleu: { 9 | prixKwhHC: 24.52 10 | } 11 | }, 12 | { 13 | puissance: 6, 14 | abonnement: 16.54, 15 | bleu: { 16 | prixKwhHC: 24.52 17 | } 18 | }, 19 | { 20 | puissance: 9, 21 | abonnement: 19.95, 22 | bleu: { 23 | prixKwhHC: 24.56 24 | } 25 | }, 26 | { 27 | puissance: 12, 28 | abonnement: 23.29, 29 | bleu: { 30 | prixKwhHC: 24.56 31 | } 32 | }, 33 | { 34 | puissance: 15, 35 | abonnement: 26.43, 36 | bleu: { 37 | prixKwhHC: 24.56 38 | } 39 | }, 40 | { 41 | puissance: 18, 42 | abonnement: 29.69, 43 | bleu: { 44 | prixKwhHC: 24.56 45 | } 46 | }, 47 | { 48 | puissance: 24, 49 | abonnement: 36.31, 50 | bleu: { 51 | prixKwhHC: 24.56 52 | } 53 | }, 54 | { 55 | puissance: 30, 56 | abonnement: 45.04, 57 | bleu: { 58 | prixKwhHC: 24.56 59 | } 60 | }, 61 | { 62 | puissance: 36, 63 | abonnement: 52.08, 64 | bleu: { 65 | prixKwhHC: 24.56 66 | } 67 | }], 68 | hc: [{ 69 | start: {hour:0, minute:0}, 70 | end: {hour:24, minute:0} 71 | }], 72 | hasHCCustom: false, 73 | hasSpecialDaysCustom: false, 74 | specialDays: [], 75 | getDayType: function (day) { 76 | let dayType = "bleu"; 77 | return dayType; 78 | } 79 | } 80 | ); 81 | 82 | -------------------------------------------------------------------------------- /scripts/tarifs/ekwateur/ElectriciteVerteVariable.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "Ekwateur - Electricité verte variable", 4 | lastUpdate: "2024-01-30", 5 | prices: [{ 6 | puissance: 3, 7 | abonnement: 13.29, 8 | bleu: { 9 | prixKwhHC: 19.4 10 | } 11 | }, 12 | { 13 | puissance: 6, 14 | abonnement: 16.54, 15 | bleu: { 16 | prixKwhHC: 20.96 17 | } 18 | }, 19 | { 20 | puissance: 9, 21 | abonnement: 19.95, 22 | bleu: { 23 | prixKwhHC: 21.2 24 | } 25 | }, 26 | { 27 | puissance: 12, 28 | abonnement: 23.29, 29 | bleu: { 30 | prixKwhHC: 21.8 31 | } 32 | }, 33 | { 34 | puissance: 15, 35 | abonnement: 26.43, 36 | bleu: { 37 | prixKwhHC: 21.8 38 | } 39 | }, 40 | { 41 | puissance: 18, 42 | abonnement: 29.69, 43 | bleu: { 44 | prixKwhHC: 21.8 45 | } 46 | }, 47 | { 48 | puissance: 24, 49 | abonnement: 36.31, 50 | bleu: { 51 | prixKwhHC: 21.876 52 | } 53 | }, 54 | { 55 | puissance: 30, 56 | abonnement: 45.04, 57 | bleu: { 58 | prixKwhHC: 21.8 59 | } 60 | }, 61 | { 62 | puissance: 36, 63 | abonnement: 52.8, 64 | bleu: { 65 | prixKwhHC: 21.8 66 | } 67 | }], 68 | hc: [{ 69 | start: {hour:0, minute:0}, 70 | end: {hour:24, minute:0} 71 | }], 72 | hasHCCustom: false, 73 | hasSpecialDaysCustom: false, 74 | specialDays: [], 75 | getDayType: function (day) { 76 | let dayType = "bleu"; 77 | return dayType; 78 | } 79 | } 80 | ); 81 | 82 | -------------------------------------------------------------------------------- /scripts/parsers/totalParser.js: -------------------------------------------------------------------------------- 1 | var totalParser = { 2 | parseCSV: function (csv) { 3 | const result = []; 4 | 5 | const lines = csv.split("\n"); 6 | 7 | //On part de la fin, TotalEnergies fournit les données les plus récentes en dernier 8 | for (let i = lines.length - 1; i > 0; i--) { 9 | const currentline = lines[i].split(";"); 10 | result.push(currentline); 11 | } 12 | return result; 13 | }, 14 | loadData: function (rows) { 15 | let data = []; 16 | let dates = []; 17 | let day = {}; 18 | 19 | for (let index = 0; index < rows.length; index++) { 20 | let line = rows[index]; 21 | if (line.length > 0) { 22 | // on s'assure que la colonne dont on va rechercher la date existe bien, puis si la donnée contient ce qu'on souhaite 23 | if (line[1] !== undefined && line[1].search(/\//) !== -1) { 24 | let date = line[1].replace('"', '').split("/"); 25 | let tmpHoursDate = date[2].replace('"', '').split(" "); 26 | let isoDate = tmpHoursDate[0] + "/" + date[1] + "/" + date[0]; 27 | const [hours, minutes] = tmpHoursDate[1].split(':'); 28 | // on remplace ce dont on a pas besoin, pour uniquement garder le nombre 29 | // on transforme notre string en Number pour pouvoir additionner la conso plus tard, et le transformons en Wh au lieu du kWh 30 | // On multiplie par 2 car l'unité a l'air différente des autres exports... 31 | let conso = Number(line[2].replace('"', '').split(' ')[0]) * 1000 * 2; 32 | 33 | // si date pas encore traitée 34 | if (!dates.find((elm) => elm == isoDate)) { 35 | dates.push(isoDate); 36 | 37 | day = {}; 38 | data.push(day); 39 | day.date = isoDate; 40 | day.hours = []; 41 | } 42 | 43 | day.hours.push([`${hours}:${minutes}:00`, conso]); 44 | } 45 | } 46 | } 47 | return data; 48 | } 49 | }; 50 | -------------------------------------------------------------------------------- /scripts/tarifs/ilek/base.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "Ilek - Base", 4 | lastUpdate: "2024-02-01", 5 | subscription_url: "https://www.ilek.fr/grilles-tarifaires", 6 | price_url: "https://ilek.s3.amazonaws.com/uploads/producer/price_list_file/229/grille_electricite.pdf", 7 | prices: [{ 8 | puissance: 3, 9 | abonnement: 14.85, 10 | bleu: { 11 | prixKwhHC: 25.16 12 | } 13 | }, 14 | { 15 | puissance: 6, 16 | abonnement: 20.53, 17 | bleu: { 18 | prixKwhHC: 25.16 19 | } 20 | }, 21 | { 22 | puissance: 9, 23 | abonnement: 28.01, 24 | bleu: { 25 | prixKwhHC: 25.16 26 | } 27 | }, 28 | { 29 | puissance: 12, 30 | abonnement: 35.85, 31 | bleu: { 32 | prixKwhHC: 25.16 33 | } 34 | }, 35 | { 36 | puissance: 15, 37 | abonnement: 41.24, 38 | bleu: { 39 | prixKwhHC: 25.16 40 | } 41 | }, 42 | { 43 | puissance: 18, 44 | abonnement: 45.28, 45 | bleu: { 46 | prixKwhHC: 25.16 47 | } 48 | }, 49 | { 50 | puissance: 24, 51 | abonnement: 54.29, 52 | bleu: { 53 | prixKwhHC: 25.16 54 | } 55 | }, 56 | { 57 | puissance: 30, 58 | abonnement: 64.70, 59 | bleu: { 60 | prixKwhHC: 25.16 61 | } 62 | }, 63 | { 64 | puissance: 36, 65 | abonnement: 74.03, 66 | bleu: { 67 | prixKwhHC: 25.16 68 | } 69 | }], 70 | hc: [{ 71 | start: {hour:0, minute:0}, 72 | end: {hour:24, minute:0} 73 | }], 74 | hasHCCustom: false, 75 | hasSpecialDaysCustom: false, 76 | specialDays: [], 77 | getDayType: function (day) { 78 | let dayType = "bleu"; 79 | return dayType; 80 | } 81 | } 82 | ); 83 | 84 | -------------------------------------------------------------------------------- /scripts/tarifs/enercoop/base.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "Enercoop - Base", 4 | lastUpdate: "2024-02-01", 5 | subscription_url: "https://souscription.enercoop.fr", 6 | price_url: "https://www.faq.enercoop.fr/hc/fr/articles/360024967152-Annexes-tarifaires", 7 | prices: [{ 8 | puissance: 3, 9 | abonnement: 10.10, 10 | bleu: { 11 | prixKwhHC: 22.234 12 | } 13 | }, 14 | { 15 | puissance: 6, 16 | abonnement: 16.02, 17 | bleu: { 18 | prixKwhHC: 22.234 19 | } 20 | }, 21 | { 22 | puissance: 9, 23 | abonnement: 22.28, 24 | bleu: { 25 | prixKwhHC: 22.602 26 | } 27 | }, 28 | { 29 | puissance: 12, 30 | abonnement: 27.68, 31 | bleu: { 32 | prixKwhHC: 22.602 33 | } 34 | }, 35 | { 36 | puissance: 15, 37 | abonnement: 33.65, 38 | bleu: { 39 | prixKwhHC: 22.602 40 | } 41 | }, 42 | { 43 | puissance: 18, 44 | abonnement: 39.62, 45 | bleu: { 46 | prixKwhHC: 22.602 47 | } 48 | }, 49 | { 50 | puissance: 24, 51 | abonnement: 51.57, 52 | bleu: { 53 | prixKwhHC: 22.602 54 | } 55 | }, 56 | { 57 | puissance: 30, 58 | abonnement: 63.51, 59 | bleu: { 60 | prixKwhHC: 22.602 61 | } 62 | }, 63 | { 64 | puissance: 36, 65 | abonnement: 75.46, 66 | bleu: { 67 | prixKwhHC: 22.602 68 | } 69 | }], 70 | hc: [{ 71 | start: { hour: 0, minute: 0 }, 72 | end: { hour: 24, minute: 0 } 73 | }], 74 | hasHCCustom: false, 75 | hasSpecialDaysCustom: false, 76 | specialDays: [], 77 | getDayType: function (day) { 78 | let dayType = "bleu"; 79 | return dayType; 80 | } 81 | } 82 | ); 83 | 84 | -------------------------------------------------------------------------------- /scripts/tarifs/ohm/classique.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "OHM Energie - Offre Classique", 4 | offer_type: "Marché", 5 | lastUpdate: "2024-02-01", 6 | subscription_url: "https://ohm-energie.com/offre/electricite", 7 | price_url: "https://ohm-energie.com/grilles/elec/2023Octobre/ELEC-Classique_202310.pdf", 8 | prices: [{ 9 | puissance: 3, 10 | abonnement: 8.84, 11 | bleu: { 12 | prixKwhHC: 25.16 13 | } 14 | }, 15 | { 16 | puissance: 6, 17 | abonnement: 11.62, 18 | bleu: { 19 | prixKwhHC: 25.16 20 | } 21 | }, 22 | { 23 | puissance: 9, 24 | abonnement: 14.60, 25 | bleu: { 26 | prixKwhHC: 25.16 27 | } 28 | }, 29 | { 30 | puissance: 12, 31 | abonnement: 17.64, 32 | bleu: { 33 | prixKwhHC: 25.16 34 | } 35 | }, 36 | { 37 | puissance: 15, 38 | abonnement: 20.47, 39 | bleu: { 40 | prixKwhHC: 25.16 41 | } 42 | }, 43 | { 44 | puissance: 18, 45 | abonnement: 23.29, 46 | bleu: { 47 | prixKwhHC: 25.16 48 | } 49 | }, 50 | { 51 | puissance: 24, 52 | abonnement: 29.51, 53 | bleu: { 54 | prixKwhHC: 25.16 55 | } 56 | }, 57 | { 58 | puissance: 30, 59 | abonnement: 34.84, 60 | bleu: { 61 | prixKwhHC: 25.16 62 | } 63 | }, 64 | { 65 | puissance: 36, 66 | abonnement: 41.09, 67 | bleu: { 68 | prixKwhHC: 25.16 69 | } 70 | }], 71 | hc: [{ 72 | start: {hour:0, minute:0}, 73 | end: {hour:24, minute:0} 74 | }], 75 | hasHCCustom: false, 76 | specialDays: [], 77 | getDayType: function (day) { 78 | let dayType = "bleu"; 79 | return dayType; 80 | } 81 | } 82 | ); 83 | 84 | -------------------------------------------------------------------------------- /scripts/tarifs/labelleenergie/garance.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "La Belle Energie - Garance", 4 | lastUpdate: "2025-11-01", 5 | isCommunity: true, 6 | subscription_url: "https://labellenergie.fr/offre-electricite-verte/", 7 | price_url: "https://labellenergie.fr/pdf/grille-tarifaire-la-bellenergie-particuliers.pdf", 8 | prices: [{ 9 | puissance: 3, 10 | abonnement: 13.83, 11 | bleu: { 12 | prixKwhHC: 17.91 13 | } 14 | }, 15 | { 16 | puissance: 6, 17 | abonnement: 17.57, 18 | bleu: { 19 | prixKwhHC: 17.91 20 | } 21 | }, 22 | { 23 | puissance: 9, 24 | abonnement: 21.50, 25 | bleu: { 26 | prixKwhHC: 17.91 27 | } 28 | }, 29 | { 30 | puissance: 12, 31 | abonnement: 25.42, 32 | bleu: { 33 | prixKwhHC: 17.91 34 | } 35 | }, 36 | { 37 | puissance: 15, 38 | abonnement: 29.16, 39 | bleu: { 40 | prixKwhHC: 17.91 41 | } 42 | }, 43 | { 44 | puissance: 18, 45 | abonnement: 32.86, 46 | bleu: { 47 | prixKwhHC: 17.91 48 | } 49 | }, 50 | { 51 | puissance: 24, 52 | abonnement: 40.89, 53 | bleu: { 54 | prixKwhHC: 17.91 55 | } 56 | }, 57 | { 58 | puissance: 30, 59 | abonnement: 48.54, 60 | bleu: { 61 | prixKwhHC: 17.91 62 | } 63 | }, 64 | { 65 | puissance: 36, 66 | abonnement: 56.39, 67 | bleu: { 68 | prixKwhHC: 17.91 69 | } 70 | }], 71 | hc: [{ 72 | start: {hour:0, minute:0}, 73 | end: {hour:24, minute:0} 74 | }], 75 | hasHCCustom: false, 76 | specialDays: [], 77 | getDayType: function (day) { 78 | let dayType = "bleu"; 79 | return dayType; 80 | } 81 | } 82 | ); 83 | 84 | -------------------------------------------------------------------------------- /scripts/tarifs/labelleenergie/prudence.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "La Belle Energie - Prudence", 4 | lastUpdate: "2025-11-01", 5 | isCommunity: true, 6 | subscription_url: "https://labellenergie.fr/offre-electricite-verte/", 7 | price_url: "https://labellenergie.fr/pdf/grille-tarifaire-la-bellenergie-particuliers.pdf", 8 | prices: [{ 9 | puissance: 3, 10 | abonnement: 10.83, 11 | bleu: { 12 | prixKwhHC: 17.91 13 | } 14 | }, 15 | { 16 | puissance: 6, 17 | abonnement: 14.57, 18 | bleu: { 19 | prixKwhHC: 17.91 20 | } 21 | }, 22 | { 23 | puissance: 9, 24 | abonnement: 18.50, 25 | bleu: { 26 | prixKwhHC: 17.91 27 | } 28 | }, 29 | { 30 | puissance: 12, 31 | abonnement: 22.42, 32 | bleu: { 33 | prixKwhHC: 17.91 34 | } 35 | }, 36 | { 37 | puissance: 15, 38 | abonnement: 26.16, 39 | bleu: { 40 | prixKwhHC: 17.91 41 | } 42 | }, 43 | { 44 | puissance: 18, 45 | abonnement: 29.86, 46 | bleu: { 47 | prixKwhHC: 17.91 48 | } 49 | }, 50 | { 51 | puissance: 24, 52 | abonnement: 37.89, 53 | bleu: { 54 | prixKwhHC: 17.91 55 | } 56 | }, 57 | { 58 | puissance: 30, 59 | abonnement: 45.54, 60 | bleu: { 61 | prixKwhHC: 17.91 62 | } 63 | }, 64 | { 65 | puissance: 36, 66 | abonnement: 53.39, 67 | bleu: { 68 | prixKwhHC: 17.91 69 | } 70 | }], 71 | hc: [{ 72 | start: {hour:0, minute:0}, 73 | end: {hour:24, minute:0} 74 | }], 75 | hasHCCustom: false, 76 | specialDays: [], 77 | getDayType: function (day) { 78 | let dayType = "bleu"; 79 | return dayType; 80 | } 81 | } 82 | ); 83 | 84 | -------------------------------------------------------------------------------- /scripts/tarifs/switch/baseHC.js: -------------------------------------------------------------------------------- 1 | abonnements.push({ 2 | name: "Switch - Heures Creuses", 3 | offer_type: "Marché", 4 | lastUpdate: "2024-02-01", 5 | subscription_url: "https://www.chezswitch.fr/offre-energie/", 6 | price_url: "https://api.chezswitch.fr/docs/2024.02.01_Grille_tarifaire_des_offres_delectricite.pdf?v=30", 7 | prices: [ 8 | { 9 | puissance: 6, 10 | abonnement: 12.67, 11 | bleu: { 12 | prixKwhHP: 21.36, 13 | prixKwhHC: 16.50 14 | } 15 | }, 16 | { 17 | puissance: 9, 18 | abonnement: 16.01, 19 | bleu: { 20 | prixKwhHP: 21.36, 21 | prixKwhHC: 16.50 22 | } 23 | }, 24 | { 25 | puissance: 12, 26 | abonnement: 19.26, 27 | bleu: { 28 | prixKwhHP: 21.36, 29 | prixKwhHC: 16.50 30 | } 31 | }, 32 | { 33 | puissance: 15, 34 | abonnement: 22.36, 35 | bleu: { 36 | prixKwhHP: 21.36, 37 | prixKwhHC: 16.50 38 | } 39 | }, 40 | { 41 | puissance: 18, 42 | abonnement: 25.43, 43 | bleu: { 44 | prixKwhHP: 21.36, 45 | prixKwhHC: 16.50 46 | } 47 | }, 48 | { 49 | puissance: 24, 50 | abonnement: 31.88, 51 | bleu: { 52 | prixKwhHP: 21.36, 53 | prixKwhHC: 16.50 54 | } 55 | }, 56 | { 57 | puissance: 30, 58 | abonnement: 37.75, 59 | bleu: { 60 | prixKwhHP: 21.36, 61 | prixKwhHC: 16.50 62 | } 63 | }, 64 | { 65 | puissance: 36, 66 | abonnement: 43.66, 67 | bleu: { 68 | prixKwhHP: 21.36, 69 | prixKwhHC: 16.50 70 | } 71 | }], 72 | hc: [], 73 | hasHCCustom: true, 74 | hasSpecialDaysCustom: false, 75 | specialDays: [], 76 | getDayType: function (day) { 77 | let dayType = "bleu"; 78 | return dayType; 79 | } 80 | }); 81 | -------------------------------------------------------------------------------- /scripts/tarifs/labelleenergie/constance.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "La Belle Energie - Constance", 4 | lastUpdate: "2025-11-01", 5 | isCommunity: true, 6 | subscription_url: "https://labellenergie.fr/offre-electricite-verte/", 7 | price_url: "https://labellenergie.fr/pdf/grille-tarifaire-la-bellenergie-particuliers.pdf", 8 | prices: [{ 9 | puissance: 3, 10 | abonnement: 12.83, 11 | bleu: { 12 | prixKwhHC: 17.91 13 | } 14 | }, 15 | { 16 | puissance: 6, 17 | abonnement: 16.57, 18 | bleu: { 19 | prixKwhHC: 17.91 20 | } 21 | }, 22 | { 23 | puissance: 9, 24 | abonnement: 20.50, 25 | bleu: { 26 | prixKwhHC: 17.91 27 | } 28 | }, 29 | { 30 | puissance: 12, 31 | abonnement: 24.43, 32 | bleu: { 33 | prixKwhHC: 17.91 34 | } 35 | }, 36 | { 37 | puissance: 15, 38 | abonnement: 28.16, 39 | bleu: { 40 | prixKwhHC: 17.91 41 | } 42 | }, 43 | { 44 | puissance: 18, 45 | abonnement: 31.87, 46 | bleu: { 47 | prixKwhHC: 17.91 48 | } 49 | }, 50 | { 51 | puissance: 24, 52 | abonnement: 39.89, 53 | bleu: { 54 | prixKwhHC: 17.91 55 | } 56 | }, 57 | { 58 | puissance: 30, 59 | abonnement: 47.55, 60 | bleu: { 61 | prixKwhHC: 17.91 62 | } 63 | }, 64 | { 65 | puissance: 36, 66 | abonnement: 55.39, 67 | bleu: { 68 | prixKwhHC: 17.91 69 | } 70 | }], 71 | hc: [{ 72 | start: {hour:0, minute:0}, 73 | end: {hour:24, minute:0} 74 | }], 75 | hasHCCustom: false, 76 | specialDays: [], 77 | getDayType: function (day) { 78 | let dayType = "bleu"; 79 | return dayType; 80 | } 81 | } 82 | ); 83 | 84 | -------------------------------------------------------------------------------- /scripts/tarifs/sowee/optim_HC.js: -------------------------------------------------------------------------------- 1 | abonnements.push({ 2 | name: "Sowee - Elec'Optim Heures Creuses", 3 | offer_type: "Marché", 4 | lastUpdate: "2024-02-01", 5 | subscription_url: "https://www.sowee.fr/tarifs-contrats-energies-gaz-electricite", 6 | price_url: "https://www.sowee.fr/s3fs-public/Grille_de_prix_Elec_Optim_Fevrier_2024.pdf", 7 | prices: [ 8 | { 9 | puissance: 6, 10 | abonnement: 14.46, 11 | bleu: { 12 | prixKwhHP: 29.33, 13 | prixKwhHC: 22.40 14 | } 15 | }, 16 | { 17 | puissance: 9, 18 | abonnement: 18.35, 19 | bleu: { 20 | prixKwhHP: 29.33, 21 | prixKwhHC: 22.40 22 | } 23 | }, 24 | { 25 | puissance: 12, 26 | abonnement: 22.13, 27 | bleu: { 28 | prixKwhHP: 29.33, 29 | prixKwhHC: 22.40 30 | } 31 | }, 32 | { 33 | puissance: 15, 34 | abonnement: 25.75, 35 | bleu: { 36 | prixKwhHP: 29.33, 37 | prixKwhHC: 22.40 38 | } 39 | }, 40 | { 41 | puissance: 18, 42 | abonnement: 29.34, 43 | bleu: { 44 | prixKwhHP: 29.33, 45 | prixKwhHC: 22.40 46 | } 47 | }, 48 | { 49 | puissance: 24, 50 | abonnement: 36.86, 51 | bleu: { 52 | prixKwhHP: 29.33, 53 | prixKwhHC: 22.40 54 | } 55 | }, 56 | { 57 | puissance: 30, 58 | abonnement: 43.72, 59 | bleu: { 60 | prixKwhHP: 29.33, 61 | prixKwhHC: 22.40 62 | } 63 | }, 64 | { 65 | puissance: 36, 66 | abonnement: 50.64, 67 | bleu: { 68 | prixKwhHP: 29.33, 69 | prixKwhHC: 22.40 70 | } 71 | }], 72 | hc: [], 73 | hasHCCustom: true, 74 | hasSpecialDaysCustom: false, 75 | specialDays: [], 76 | getDayType: function (day) { 77 | let dayType = "bleu"; 78 | return dayType; 79 | } 80 | }); 81 | -------------------------------------------------------------------------------- /scripts/tarifs/ekwateur/ElectriciteVerteFixeHPHC.js: -------------------------------------------------------------------------------- 1 | abonnements.push({ 2 | name: "Ekwateur - Electricité verte fixe HP HC", 3 | lastUpdate: "2024-01-30", 4 | prices: [ 5 | { 6 | puissance: 3, 7 | abonnement: 13.29, 8 | bleu: { 9 | prixKwhHP: 27.14, 10 | prixKwhHC: 19.22 11 | } 12 | }, 13 | { 14 | puissance: 6, 15 | abonnement: 16.54, 16 | bleu: { 17 | prixKwhHP: 27.14, 18 | prixKwhHC: 19.22 19 | } 20 | }, 21 | { 22 | puissance: 9, 23 | abonnement: 19.95, 24 | bleu: { 25 | prixKwhHP: 27.14, 26 | prixKwhHC: 19.22 27 | } 28 | }, 29 | { 30 | puissance: 12, 31 | abonnement: 23.29, 32 | bleu: { 33 | prixKwhHP: 27.14, 34 | prixKwhHC: 19.22 35 | } 36 | }, 37 | { 38 | puissance: 15, 39 | abonnement: 26.43, 40 | bleu: { 41 | prixKwhHP: 27.14, 42 | prixKwhHC: 19.22 43 | } 44 | }, 45 | { 46 | puissance: 18, 47 | abonnement: 29.69, 48 | bleu: { 49 | prixKwhHP: 27.14, 50 | prixKwhHC: 19.22 51 | } 52 | }, 53 | { 54 | puissance: 24, 55 | abonnement: 36.31, 56 | bleu: { 57 | prixKwhHP: 27.14, 58 | prixKwhHC: 19.22 59 | } 60 | }, 61 | { 62 | puissance: 30, 63 | abonnement: 45.04, 64 | bleu: { 65 | prixKwhHP: 27.14, 66 | prixKwhHC: 19.22 67 | } 68 | }, 69 | { 70 | puissance: 36, 71 | abonnement: 52.8, 72 | bleu: { 73 | prixKwhHP: 27.14, 74 | prixKwhHC: 19.22 75 | } 76 | }], 77 | hc: [], 78 | hasHCCustom: true, 79 | hasSpecialDaysCustom: false, 80 | specialDays: [], 81 | getDayType: function (day) { 82 | let dayType = "bleu"; 83 | return dayType; 84 | } 85 | }); -------------------------------------------------------------------------------- /scripts/tarifs/ekwateur/ElectriciteVerteVariableHPHC.js: -------------------------------------------------------------------------------- 1 | abonnements.push({ 2 | name: "Ekwateur - Electricité verte variable HP HC", 3 | lastUpdate: "2023-01-30", 4 | prices: [ 5 | { 6 | puissance: 3, 7 | abonnement: 13.29, 8 | bleu: { 9 | prixKwhHP: 24.00, 10 | prixKwhHC: 17.07 11 | } 12 | }, 13 | { 14 | puissance: 6, 15 | abonnement: 16.54, 16 | bleu: { 17 | prixKwhHP: 24.00, 18 | prixKwhHC: 17.07 19 | } 20 | }, 21 | { 22 | puissance: 9, 23 | abonnement: 19.95, 24 | bleu: { 25 | prixKwhHP: 24.00, 26 | prixKwhHC: 17.07 27 | } 28 | }, 29 | { 30 | puissance: 12, 31 | abonnement: 23.29, 32 | bleu: { 33 | prixKwhHP: 24.00, 34 | prixKwhHC: 17.07 35 | } 36 | }, 37 | { 38 | puissance: 15, 39 | abonnement: 26.43, 40 | bleu: { 41 | prixKwhHP: 24.00, 42 | prixKwhHC: 17.07 43 | } 44 | }, 45 | { 46 | puissance: 18, 47 | abonnement: 29.69, 48 | bleu: { 49 | prixKwhHP: 24.00, 50 | prixKwhHC: 17.07 51 | } 52 | }, 53 | { 54 | puissance: 24, 55 | abonnement: 36.31, 56 | bleu: { 57 | prixKwhHP: 24.00, 58 | prixKwhHC: 17.07 59 | } 60 | }, 61 | { 62 | puissance: 30, 63 | abonnement: 45.04, 64 | bleu: { 65 | prixKwhHP: 24.00, 66 | prixKwhHC: 17.07 67 | } 68 | }, 69 | { 70 | puissance: 36, 71 | abonnement: 52.8, 72 | bleu: { 73 | prixKwhHP: 24.00, 74 | prixKwhHC: 17.07 75 | } 76 | }], 77 | hc: [], 78 | hasHCCustom: true, 79 | hasSpecialDaysCustom: false, 80 | specialDays: [], 81 | getDayType: function (day) { 82 | let dayType = "bleu"; 83 | return dayType; 84 | } 85 | }); -------------------------------------------------------------------------------- /scripts/tarifs/switch/base.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "Switch - Base", 4 | offer_type: "Marché", 5 | lastUpdate: "2024-02-01", 6 | subscription_url: "https://www.chezswitch.fr/offre-energie/#/", 7 | price_url: "https://api.chezswitch.fr/docs/2024.02.01_Grille_tarifaire_des_offres_delectricite.pdf?v=30", 8 | prices: [{ 9 | puissance: 3, 10 | abonnement: 9.38, 11 | bleu: { 12 | prixKwhHC: 19.95 13 | } 14 | }, 15 | { 16 | puissance: 6, 17 | abonnement: 12.27, 18 | bleu: { 19 | prixKwhHC: 19.95 20 | } 21 | }, 22 | { 23 | puissance: 9, 24 | abonnement: 15.38, 25 | bleu: { 26 | prixKwhHC: 19.95 27 | } 28 | }, 29 | { 30 | puissance: 12, 31 | abonnement: 18.55, 32 | bleu: { 33 | prixKwhHC: 19.95 34 | } 35 | }, 36 | { 37 | puissance: 15, 38 | abonnement: 21.51, 39 | bleu: { 40 | prixKwhHC: 19.95 41 | } 42 | }, 43 | { 44 | puissance: 18, 45 | abonnement: 24.45, 46 | bleu: { 47 | prixKwhHC: 19.95 48 | } 49 | }, 50 | { 51 | puissance: 24, 52 | abonnement: 30.95, 53 | bleu: { 54 | prixKwhHC: 19.95 55 | } 56 | }, 57 | { 58 | puissance: 30, 59 | abonnement: 36.50, 60 | bleu: { 61 | prixKwhHC: 19.95 62 | } 63 | }, 64 | { 65 | puissance: 36, 66 | abonnement: 43.03, 67 | bleu: { 68 | prixKwhHC: 19.95 69 | } 70 | }], 71 | hc: [{ 72 | start: { hour: 0, minute: 0 }, 73 | end: { hour: 24, minute: 0 } 74 | }], 75 | hasHCCustom: false, 76 | hasSpecialDaysCustom: false, 77 | specialDays: [], 78 | getDayType: function (day) { 79 | let dayType = "bleu"; 80 | return dayType; 81 | } 82 | } 83 | ); 84 | 85 | -------------------------------------------------------------------------------- /scripts/tarifs/sowee/fixe3ans_HC.js: -------------------------------------------------------------------------------- 1 | abonnements.push({ 2 | name: "Sowee - Elec Prix Fixe 3 ans - Heures Creuses", 3 | offer_type: "Marché", 4 | lastUpdate: "2024-02-01", 5 | subscription_url: "https://www.sowee.fr/tarifs-contrats-energies-gaz-electricite", 6 | price_url: "https://www.sowee.fr/s3fs-public/Grille_de_prix_Elec_Prix_fixe_3_ans_Fevrier_2024.pdf", 7 | prices: [ 8 | { 9 | puissance: 6, 10 | abonnement: 13.39, 11 | bleu: { 12 | prixKwhHP: 23.57, 13 | prixKwhHC: 18.13 14 | } 15 | }, 16 | { 17 | puissance: 9, 18 | abonnement: 17.00, 19 | bleu: { 20 | prixKwhHP: 23.57, 21 | prixKwhHC: 18.13 22 | } 23 | }, 24 | { 25 | puissance: 12, 26 | abonnement: 20.52, 27 | bleu: { 28 | prixKwhHP: 23.57, 29 | prixKwhHC: 18.13 30 | } 31 | }, 32 | { 33 | puissance: 15, 34 | abonnement: 23.89, 35 | bleu: { 36 | prixKwhHP: 23.57, 37 | prixKwhHC: 18.13 38 | } 39 | }, 40 | { 41 | puissance: 18, 42 | abonnement: 27.22, 43 | bleu: { 44 | prixKwhHP: 23.57, 45 | prixKwhHC: 18.13 46 | } 47 | }, 48 | { 49 | puissance: 24, 50 | abonnement: 34.21, 51 | bleu: { 52 | prixKwhHP: 23.57, 53 | prixKwhHC: 18.13 54 | } 55 | }, 56 | { 57 | puissance: 30, 58 | abonnement: 40.60, 59 | bleu: { 60 | prixKwhHP: 23.57, 61 | prixKwhHC: 18.13 62 | } 63 | }, 64 | { 65 | puissance: 36, 66 | abonnement: 47.04, 67 | bleu: { 68 | prixKwhHP: 23.57, 69 | prixKwhHC: 18.13 70 | } 71 | }], 72 | hc: [], 73 | hasHCCustom: true, 74 | hasSpecialDaysCustom: false, 75 | specialDays: [], 76 | getDayType: function (day) { 77 | let dayType = "bleu"; 78 | return dayType; 79 | } 80 | }); 81 | -------------------------------------------------------------------------------- /scripts/tarifs/sowee/optim_base.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "Sowee - Elec'Optim", 4 | offer_type: "Marché", 5 | lastUpdate: "2024-02-01", 6 | subscription_url: "https://www.sowee.fr/tarifs-contrats-energies-gaz-electricite", 7 | price_url: "https://www.sowee.fr/s3fs-public/Grille_de_prix_Elec_Optim_Fevrier_2024.pdf", 8 | prices: [{ 9 | puissance: 3, 10 | abonnement: 10.15, 11 | bleu: { 12 | prixKwhHC: 26.41 13 | } 14 | }, 15 | { 16 | puissance: 6, 17 | abonnement: 13.32, 18 | bleu: { 19 | prixKwhHC: 26.41 20 | } 21 | }, 22 | { 23 | puissance: 9, 24 | abonnement: 16.71, 25 | bleu: { 26 | prixKwhHC: 26.41 27 | } 28 | }, 29 | { 30 | puissance: 12, 31 | abonnement: 20.17, 32 | bleu: { 33 | prixKwhHC: 26.41 34 | } 35 | }, 36 | { 37 | puissance: 15, 38 | abonnement: 23.39, 39 | bleu: { 40 | prixKwhHC: 26.41 41 | } 42 | }, 43 | { 44 | puissance: 18, 45 | abonnement: 26.59, 46 | bleu: { 47 | prixKwhHC: 26.41 48 | } 49 | }, 50 | { 51 | puissance: 24, 52 | abonnement: 33.68, 53 | bleu: { 54 | prixKwhHC: 26.41 55 | } 56 | }, 57 | { 58 | puissance: 30, 59 | abonnement: 39.75, 60 | bleu: { 61 | prixKwhHC: 26.41 62 | } 63 | }, 64 | { 65 | puissance: 36, 66 | abonnement: 46.87, 67 | bleu: { 68 | prixKwhHC: 26.41 69 | } 70 | }], 71 | hc: [{ 72 | start: { hour: 0, minute: 0 }, 73 | end: { hour: 24, minute: 0 } 74 | }], 75 | hasHCCustom: false, 76 | hasSpecialDaysCustom: false, 77 | specialDays: [], 78 | getDayType: function (day) { 79 | let dayType = "bleu"; 80 | return dayType; 81 | } 82 | } 83 | ); 84 | 85 | -------------------------------------------------------------------------------- /scripts/tarifs/total/chargheures.js: -------------------------------------------------------------------------------- 1 | { 2 | const prixAbonnements = { 3 | // puissance: abonnement TTC 4 | 6: 15.96, 5 | 7: 17.34, 6 | 8: 18.73, 7 | 9: 20.52, 8 | 10: 21.92, 9 | 11: 23.31, 10 | 12: 25.08, 11 | 13: 26.43, 12 | 14: 27.78, 13 | 15: 29.13, 14 | 16: 30.52, 15 | 17: 31.91, 16 | 18: 32.77, 17 | 19: 34.20, 18 | 20: 35.63, 19 | 21: 37.06, 20 | 22: 38.49, 21 | 23: 39.92, 22 | 24: 41.32, 23 | 25: 42.61, 24 | 26: 43.89, 25 | 27: 45.18, 26 | 28: 46.47, 27 | 29: 47.75, 28 | 30: 49.06, 29 | 31: 50.38, 30 | 32: 51.70, 31 | 33: 53.03, 32 | 34: 54.35, 33 | 35: 55.67, 34 | 36: 55.43, 35 | } 36 | 37 | abonnements.push( 38 | { 39 | name: "TotalEnergie - Charge'Heures", 40 | lastUpdate: "2025-10-01", 41 | subscription_url: "https://www.totalenergies.fr/particuliers/electricite/offres-d-electricite/offre-charge-heures", 42 | price_url: "https://www.totalenergies.fr/fileadmin/Digital/Groupe/PDF/Documents_contractuels/Particuliers/Tarifs_TotalEnergies/fr/grille-tarifaire-charge-heures-particuliers.pdf", 43 | prices: Object.keys(prixAbonnements).map((puissance) => ({ 44 | puissance, 45 | abonnement: prixAbonnements[puissance], 46 | base: { 47 | prixKwhHP: 21.62, 48 | prixKwhHC: 16.51, 49 | }, 50 | hsc: { 51 | prixKwhHC: 12.61, 52 | } 53 | })), 54 | hc: [{ 55 | start: { hour: 23, minute: 0 }, 56 | end: { hour: 24, minute: 0 } 57 | }, 58 | { 59 | start: { hour: 0, minute: 0 }, 60 | end: { hour: 7, minute: 0 } 61 | }], 62 | hasHCCustom: false, 63 | hasSpecialDaysCustom: false, 64 | specialDays: [], 65 | getDayType: function (day, { hour }) { 66 | if (hour >= 2 && hour < 6) { 67 | return "hsc"; 68 | } 69 | return "base"; 70 | } 71 | } 72 | ); 73 | } -------------------------------------------------------------------------------- /scripts/tarifs/sowee/fixe3ans_base.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "Sowee - Elec'Prix Fixe 3 ans", 4 | offer_type: "Marché", 5 | lastUpdate: "2024-02-01", 6 | subscription_url: "https://www.sowee.fr/tarifs-contrats-energies-gaz-electricite", 7 | price_url: "https://www.sowee.fr/s3fs-public/Grille_de_prix_Elec_Prix_fixe_3_ans_Fevrier_2024.pdf", 8 | prices: [{ 9 | puissance: 3, 10 | abonnement: 9.69, 11 | bleu: { 12 | prixKwhHC: 21.77 13 | } 14 | }, 15 | { 16 | puissance: 6, 17 | abonnement: 12.72, 18 | bleu: { 19 | prixKwhHC: 21.77 20 | } 21 | }, 22 | { 23 | puissance: 9, 24 | abonnement: 15.96, 25 | bleu: { 26 | prixKwhHC: 21.77 27 | } 28 | }, 29 | { 30 | puissance: 12, 31 | abonnement: 19.27, 32 | bleu: { 33 | prixKwhHC: 21.77 34 | } 35 | }, 36 | { 37 | puissance: 15, 38 | abonnement: 22.36, 39 | bleu: { 40 | prixKwhHC: 21.77 41 | } 42 | }, 43 | { 44 | puissance: 18, 45 | abonnement: 25.42, 46 | bleu: { 47 | prixKwhHC: 21.77 48 | } 49 | }, 50 | { 51 | puissance: 24, 52 | abonnement: 32.20, 53 | bleu: { 54 | prixKwhHC: 21.77 55 | } 56 | }, 57 | { 58 | puissance: 30, 59 | abonnement: 38.01, 60 | bleu: { 61 | prixKwhHC: 21.77 62 | } 63 | }, 64 | { 65 | puissance: 36, 66 | abonnement: 44.82, 67 | bleu: { 68 | prixKwhHC: 21.77 69 | } 70 | }], 71 | hc: [{ 72 | start: { hour: 0, minute: 0 }, 73 | end: { hour: 24, minute: 0 } 74 | }], 75 | hasHCCustom: false, 76 | hasSpecialDaysCustom: false, 77 | specialDays: [], 78 | getDayType: function (day) { 79 | let dayType = "bleu"; 80 | return dayType; 81 | } 82 | } 83 | ); 84 | 85 | -------------------------------------------------------------------------------- /scripts/tarifs/ohm/hyperEco.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "OHM Energie - Offre Hyper Eco", 4 | offer_type: "Marché", 5 | lastUpdate: "2024-07-01", 6 | subscription_url: "https://ohm-energie.com/offre/electricite", 7 | price_url: "https://ohm-energie.com/grilles/elec/2024/06/HYPER-ECO-FIXE.pdf", 8 | prices: [{ 9 | puissance: 3, 10 | abonnement: 9.63, 11 | bleu: { 12 | prixKwhHC: 20.64 13 | } 14 | }, 15 | { 16 | puissance: 6, 17 | abonnement: 12.60, 18 | bleu: { 19 | prixKwhHC: 20.64 20 | } 21 | }, 22 | { 23 | puissance: 9, 24 | abonnement: 15.79, 25 | bleu: { 26 | prixKwhHC: 20.64 27 | } 28 | }, 29 | { 30 | puissance: 12, 31 | abonnement: 19.04, 32 | bleu: { 33 | prixKwhHC: 20.64 34 | } 35 | }, 36 | { 37 | puissance: 15, 38 | abonnement: 22.07, 39 | bleu: { 40 | prixKwhHC: 20.64 41 | } 42 | }, 43 | { 44 | puissance: 18, 45 | abonnement: 25.08, 46 | bleu: { 47 | prixKwhHC: 20.64 48 | } 49 | }, 50 | { 51 | puissance: 24, 52 | abonnement: 31.76, 53 | bleu: { 54 | prixKwhHC: 20.64 55 | } 56 | }, 57 | { 58 | puissance: 30, 59 | abonnement: 37.44, 60 | bleu: { 61 | prixKwhHC: 20.64 62 | } 63 | }, 64 | { 65 | puissance: 36, 66 | abonnement: 44.15, 67 | bleu: { 68 | prixKwhHC: 20.64 69 | } 70 | }], 71 | hc: [{ 72 | start: {hour: 0, minute: 0}, 73 | end: {hour: 24, minute: 0} 74 | }], 75 | hasHCCustom: false, 76 | specialDays: [], 77 | getDayType: function (day) { 78 | let dayType = "bleu"; 79 | return dayType; 80 | } 81 | } 82 | ); 83 | 84 | -------------------------------------------------------------------------------- /scripts/tarifs/alpiq/base.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "Alpiq - Base", 4 | lastUpdate: "2025-10-24", 5 | isCommunity: true, 6 | subscription_url: "https://particuliers.alpiq.fr/electricite/nos-tarifs", 7 | price_url: "https://particuliers.alpiq.fr/grille-tarifaire/particuliers/gtr_elec_part.pdf", 8 | prices: [ 9 | { puissance: 3, abonnement: 11.73 }, 10 | { puissance: 6, abonnement: 15.47 }, 11 | { puissance: 9, abonnement: 19.39 }, 12 | { puissance: 12, abonnement: 23.32 }, 13 | { puissance: 15, abonnement: 27.06 }, 14 | { puissance: 18, abonnement: 30.76 }, 15 | { puissance: 24, abonnement: 38.79 }, 16 | { puissance: 30, abonnement: 46.44 }, 17 | { puissance: 36, abonnement: 54.29 } 18 | ].map(item => ({ 19 | ...item, 20 | bleu: { prixKwhHC: 17.9292, prixKwhHP: 17.9292 } 21 | })), 22 | hc: [], 23 | hasHCCustom: true, 24 | hasSpecialDaysCustom: false, 25 | specialDays: [], 26 | getDayType: function (day) { 27 | let dayType = "bleu"; 28 | return dayType; 29 | } 30 | }); 31 | 32 | abonnements.push( 33 | { 34 | name: "Alpiq - Heures Creuses", 35 | lastUpdate: "2025-10-24", 36 | isCommunity: true, 37 | subscription_url: "https://particuliers.alpiq.fr/electricite/nos-tarifs", 38 | price_url: "https://particuliers.alpiq.fr/grille-tarifaire/particuliers/gtr_elec_part.pdf", 39 | prices: [ 40 | { puissance: 6, abonnement: 15.74 }, 41 | { puissance: 9, abonnement: 19.81 }, 42 | { puissance: 12, abonnement: 23.76 }, 43 | { puissance: 15, abonnement: 27.49 }, 44 | { puissance: 18, abonnement: 31.34 }, 45 | { puissance: 24, abonnement: 39.47 }, 46 | { puissance: 30, abonnement: 47.02 }, 47 | { puissance: 36, abonnement: 54.61 } 48 | ].map(item => ({ 49 | ...item, 50 | bleu: { prixKwhHP: 19.0848, prixKwhHC: 15.0780 } 51 | })), 52 | hc: [], 53 | hasHCCustom: true, 54 | hasSpecialDaysCustom: false, 55 | specialDays: [], 56 | getDayType: function (day) { 57 | let dayType = "bleu"; 58 | return dayType; 59 | } 60 | }); -------------------------------------------------------------------------------- /scripts/parsers/homeAssistantParser.js: -------------------------------------------------------------------------------- 1 | var homeAssistantParser = { 2 | parseCSV: function (csv) { 3 | const result = []; 4 | 5 | const lines = csv.split("\n"); 6 | 7 | //Les données débutent à partir de la 3ème ligne 8 | for (let i = 3; i < lines.length; i++) { 9 | const currentline = lines[i].split(","); 10 | result.push(currentline); 11 | } 12 | return result; 13 | }, 14 | loadData: function (rows) { 15 | let data = []; 16 | let refValue = null; 17 | 18 | rows.sort((a, b) => a[1] - b[1]).forEach(row => { 19 | if (row.length > 1) { 20 | let [name, value, date] = row; 21 | if (value !== "unavailable") { 22 | value = parseFloat(value) * 1000; 23 | 24 | // ignore first row to get reference 25 | if (refValue === null) { 26 | refValue = value; 27 | } 28 | else { 29 | let isoDate = new Date(date); 30 | let formattedDate = isoDate.toISOString().split("T")[0].replace(/-/g, "/"); 31 | let [hours, minutes] = [ ("0" + isoDate.getHours()).slice(-2), ("0" + isoDate.getMinutes()).slice(-2)]; 32 | const formattedTime = `${hours}:00:00`; 33 | 34 | const day = data.find(d => d.date === formattedDate); 35 | if (day) { 36 | const hour = day.hours.find(d => d[0] === formattedTime); 37 | if (hour) { 38 | hour[1] = hour[1] + (value - refValue); 39 | } 40 | else 41 | { 42 | day.hours.push([formattedTime, value - refValue]); 43 | } 44 | } else { 45 | let newDay = {}; 46 | newDay.date = formattedDate; 47 | newDay.hours = []; 48 | newDay.hours.push([formattedTime, value - refValue]); 49 | data.push(newDay); 50 | } 51 | 52 | refValue = value; 53 | } 54 | } 55 | } 56 | }); 57 | 58 | return data; 59 | } 60 | }; 61 | 62 | 63 | -------------------------------------------------------------------------------- /scripts/tarifs/ilek/hc.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "Ilek - Heures Creuses", 4 | lastUpdate: "2024-02-01", 5 | subscription_url: "https://www.ilek.fr/grilles-tarifaires", 6 | price_url: "https://ilek.s3.amazonaws.com/uploads/producer/price_list_file/229/grille_electricite.pdf", 7 | prices: [ 8 | { 9 | puissance: 6, 10 | abonnement: 23.70, 11 | bleu: { 12 | prixKwhHP: 27.00, 13 | prixKwhHC: 20.68 14 | } 15 | }, 16 | { 17 | puissance: 9, 18 | abonnement: 32.93, 19 | bleu: { 20 | prixKwhHP: 27.00, 21 | prixKwhHC: 20.68 22 | } 23 | }, 24 | { 25 | puissance: 12, 26 | abonnement: 38.47, 27 | bleu: { 28 | prixKwhHP: 27.00, 29 | prixKwhHC: 20.68 30 | } 31 | }, 32 | { 33 | puissance: 15, 34 | abonnement: 43.97, 35 | bleu: { 36 | prixKwhHP: 27.00, 37 | prixKwhHC: 20.68 38 | } 39 | }, 40 | { 41 | puissance: 18, 42 | abonnement: 48.62, 43 | bleu: { 44 | prixKwhHP: 27.00, 45 | prixKwhHC: 20.68 46 | } 47 | }, 48 | { 49 | puissance: 24, 50 | abonnement: 58.45, 51 | bleu: { 52 | prixKwhHP: 27.00, 53 | prixKwhHC: 20.68 54 | } 55 | }, 56 | { 57 | puissance: 30, 58 | abonnement: 62.28, 59 | bleu: { 60 | prixKwhHP: 27.00, 61 | prixKwhHC: 20.68 62 | } 63 | }, 64 | { 65 | puissance: 36, 66 | abonnement: 74.14, 67 | bleu: { 68 | prixKwhHP: 27.00, 69 | prixKwhHC: 20.68 70 | } 71 | }], 72 | hc: [], 73 | hasHCCustom: true, 74 | hasSpecialDaysCustom: false, 75 | specialDays: [], 76 | getDayType: function (day) { 77 | let dayType = "bleu"; 78 | return dayType; 79 | } 80 | }); 81 | -------------------------------------------------------------------------------- /scripts/tarifs/ohm/hyperEcoHC.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "OHM Energie - Offre Hype Eco HC", 4 | offer_type: "Marché", 5 | lastUpdate: "2024-07-01", 6 | subscription_url: "https://ohm-energie.com/offre/electricite", 7 | price_url: "https://ohm-energie.com/grilles/elec/2024/06/HYPER-ECO-FIXE.pdf", 8 | prices: [ 9 | { 10 | puissance: 6, 11 | abonnement: 13.19, 12 | bleu: { 13 | prixKwhHP: 22.10, 14 | prixKwhHC: 17.04 15 | } 16 | }, 17 | { 18 | puissance: 9, 19 | abonnement: 16.70, 20 | bleu: { 21 | prixKwhHP: 22.10, 22 | prixKwhHC: 17.04 23 | } 24 | }, 25 | { 26 | puissance: 12, 27 | abonnement: 20.13, 28 | bleu: { 29 | prixKwhHP: 22.10, 30 | prixKwhHC: 17.04 31 | } 32 | }, 33 | { 34 | puissance: 15, 35 | abonnement: 23.40, 36 | bleu: { 37 | prixKwhHP: 22.10, 38 | prixKwhHC: 17.04 39 | } 40 | }, 41 | { 42 | puissance: 18, 43 | abonnement: 26.64, 44 | bleu: { 45 | prixKwhHP: 22.10, 46 | prixKwhHC: 17.04 47 | } 48 | }, 49 | { 50 | puissance: 24, 51 | abonnement: 33.44, 52 | bleu: { 53 | prixKwhHP: 22.10, 54 | prixKwhHC: 17.04 55 | } 56 | }, 57 | { 58 | puissance: 30, 59 | abonnement: 39.63, 60 | bleu: { 61 | prixKwhHP: 22.10, 62 | prixKwhHC: 17.04 63 | } 64 | }, 65 | { 66 | puissance: 36, 67 | abonnement: 45.87, 68 | bleu: { 69 | prixKwhHP: 22.10, 70 | prixKwhHC: 17.04 71 | } 72 | }], 73 | hc: [{ 74 | start: {hour:22, minute:0}, 75 | end: {hour:24, minute:0} 76 | }, 77 | { 78 | start: {hour:0, minute:0}, 79 | end: {hour:6, minute:0} 80 | }], 81 | hasHCCustom: false, 82 | hasSpecialDaysCustom: false, 83 | specialDays: [], 84 | getDayType: function (day) { 85 | let dayType = "bleu"; 86 | return dayType; 87 | } 88 | } 89 | ); 90 | 91 | -------------------------------------------------------------------------------- /scripts/tarifs/edf/zenFixe.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "EDF - Zen Fixe", 4 | offer_type: "Marché", 5 | lastUpdate: "2025-10-01", 6 | isCommunity: false, 7 | subscription_url: "https://particulier.edf.fr/fr/accueil/electricite-gaz/zen-fixe.html", 8 | price_url: "https://particulier.edf.fr/content/dam/2-Actifs/Documents/Offres/Grille-prix-zen-fixe.pdf", 9 | prices: [ 10 | { puissance: 3, abonnement: 11.73 }, 11 | { puissance: 6, abonnement: 15.48 }, 12 | { puissance: 9, abonnement: 19.42 }, 13 | { puissance: 12, abonnement: 23.36 }, 14 | { puissance: 15, abonnement: 27.11 }, 15 | { puissance: 18, abonnement: 30.81 }, 16 | { puissance: 24, abonnement: 38.86 }, 17 | { puissance: 30, abonnement: 46.53 }, 18 | { puissance: 36, abonnement: 54.38 } 19 | ].map(item => ({ 20 | ...item, 21 | bleu: { prixKwhHC: 19.26 } 22 | })), 23 | hc: [{ 24 | start: { hour: 0, minute: 0 }, 25 | end: { hour: 24, minute: 0 } 26 | }], 27 | hasHCCustom: false, 28 | hasSpecialDaysCustom: false, 29 | specialDays: [], 30 | getDayType: function (day) { 31 | let dayType = "bleu"; 32 | return dayType; 33 | } 34 | } 35 | ); 36 | 37 | abonnements.push({ 38 | name: "EDF - Zen Fixe Heures Creuses", 39 | offer_type: "Marché", 40 | lastUpdate: "2025-10-01", 41 | isCommunity: false, 42 | subscription_url: "https://particulier.edf.fr/fr/accueil/electricite-gaz/zen-fixe.html", 43 | price_url: "https://particulier.edf.fr/content/dam/2-Actifs/Documents/Offres/Grille-prix-zen-fixe.pdf", 44 | prices: [ 45 | { puissance: 6, abonnement: 15.77 }, 46 | { puissance: 9, abonnement: 19.85 }, 47 | { puissance: 12, abonnement: 23.80 }, 48 | { puissance: 15, abonnement: 27.55 }, 49 | { puissance: 18, abonnement: 31.40 }, 50 | { puissance: 24, abonnement: 39.57 }, 51 | { puissance: 30, abonnement: 47.13 }, 52 | { puissance: 36, abonnement: 54.73 } 53 | ].map(item => ({ 54 | ...item, 55 | bleu: { 56 | prixKwhHP: 20.52, 57 | prixKwhHC: 16.14 58 | } 59 | })), 60 | hc: [], 61 | hasHCCustom: true, 62 | hasSpecialDaysCustom: false, 63 | specialDays: [], 64 | getDayType: function (day) { 65 | let dayType = "bleu"; 66 | return dayType; 67 | } 68 | }); 69 | -------------------------------------------------------------------------------- /scripts/tarifs/ohm/classiqueHC.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "OHM Energie - Offre Classique HC", 4 | offer_type: "Marché", 5 | lastUpdate: "2024-02-01", 6 | subscription_url: "https://ohm-energie.com/offre/electricite", 7 | price_url: "https://ohm-energie.com/grilles/elec/2023Octobre/ELEC-Classique_202310.pdf", 8 | prices: [ 9 | { 10 | puissance: 6, 11 | abonnement: 12.26, 12 | bleu: { 13 | prixKwhHP: 27.00, 14 | prixKwhHC: 20.68 15 | } 16 | }, 17 | { 18 | puissance: 9, 19 | abonnement: 15.58, 20 | bleu: { 21 | prixKwhHP: 27.00, 22 | prixKwhHC: 20.68 23 | } 24 | }, 25 | { 26 | puissance: 12, 27 | abonnement: 18.82, 28 | bleu: { 29 | prixKwhHP: 27.00, 30 | prixKwhHC: 20.68 31 | } 32 | }, 33 | { 34 | puissance: 15, 35 | abonnement: 21.92, 36 | bleu: { 37 | prixKwhHP: 27.00, 38 | prixKwhHC: 20.68 39 | } 40 | }, 41 | { 42 | puissance: 18, 43 | abonnement: 24.99, 44 | bleu: { 45 | prixKwhHP: 27.00, 46 | prixKwhHC: 20.68 47 | } 48 | }, 49 | { 50 | puissance: 24, 51 | abonnement: 31.43, 52 | bleu: { 53 | prixKwhHP: 27.00, 54 | prixKwhHC: 20.68 55 | } 56 | }, 57 | { 58 | puissance: 30, 59 | abonnement: 37.32, 60 | bleu: { 61 | prixKwhHP: 27.00, 62 | prixKwhHC: 20.68 63 | } 64 | }, 65 | { 66 | puissance: 36, 67 | abonnement: 41.67, 68 | bleu: { 69 | prixKwhHP: 27.00, 70 | prixKwhHC: 20.68 71 | } 72 | }], 73 | hc: [{ 74 | start: {hour:22, minute:0}, 75 | end: {hour:24, minute:0} 76 | }, 77 | { 78 | start: {hour:0, minute:0}, 79 | end: {hour:6, minute:0} 80 | }], 81 | hasHCCustom: false, 82 | hasSpecialDaysCustom: false, 83 | specialDays: [], 84 | getDayType: function (day) { 85 | let dayType = "bleu"; 86 | return dayType; 87 | } 88 | } 89 | ); 90 | 91 | -------------------------------------------------------------------------------- /scripts/tarifs/labelleenergie/garanceHC.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "La Belle Energie - Garance HC", 4 | lastUpdate: "2025-11-01", 5 | isCommunity: true, 6 | subscription_url: "https://labellenergie.fr/offre-electricite-verte/", 7 | price_url: "https://labellenergie.fr/pdf/grille-tarifaire-la-bellenergie-particuliers.pdf", 8 | prices: [ 9 | { 10 | puissance: 6, 11 | abonnement: 17.84, 12 | bleu: { 13 | prixKwhHP: 19.07, 14 | prixKwhHC: 15.07 15 | } 16 | }, 17 | { 18 | puissance: 9, 19 | abonnement: 22.31, 20 | bleu: { 21 | prixKwhHP: 19.07, 22 | prixKwhHC: 15.07 23 | } 24 | }, 25 | { 26 | puissance: 12, 27 | abonnement: 26.38, 28 | bleu: { 29 | prixKwhHP: 19.07, 30 | prixKwhHC: 15.07 31 | } 32 | }, 33 | { 34 | puissance: 15, 35 | abonnement: 30.25, 36 | bleu: { 37 | prixKwhHP: 19.07, 38 | prixKwhHC: 15.07 39 | } 40 | }, 41 | { 42 | puissance: 18, 43 | abonnement: 34.23, 44 | bleu: { 45 | prixKwhHP: 19.07, 46 | prixKwhHC: 15.07 47 | } 48 | }, 49 | { 50 | puissance: 24, 51 | abonnement: 42.63, 52 | bleu: { 53 | prixKwhHP: 19.07, 54 | prixKwhHC: 15.07 55 | } 56 | }, 57 | { 58 | puissance: 30, 59 | abonnement: 50.44, 60 | bleu: { 61 | prixKwhHP: 19.07, 62 | prixKwhHC: 15.07 63 | } 64 | }, 65 | { 66 | puissance: 36, 67 | abonnement: 58.30, 68 | bleu: { 69 | prixKwhHP: 19.07, 70 | prixKwhHC: 15.07 71 | } 72 | }], 73 | hc: [{ 74 | start: {hour:22, minute:0}, 75 | end: {hour:24, minute:0} 76 | }, 77 | { 78 | start: {hour:0, minute:0}, 79 | end: {hour:6, minute:0} 80 | }], 81 | hasHCCustom: false, 82 | hasSpecialDaysCustom: false, 83 | specialDays: [], 84 | getDayType: function (day) { 85 | let dayType = "bleu"; 86 | return dayType; 87 | } 88 | } 89 | ); 90 | 91 | -------------------------------------------------------------------------------- /scripts/tarifs/labelleenergie/prudenceHC.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "La Belle Energie - Prudence HC", 4 | lastUpdate: "2025-11-01", 5 | isCommunity: true, 6 | subscription_url: "https://labellenergie.fr/offre-electricite-verte/", 7 | price_url: "https://labellenergie.fr/pdf/grille-tarifaire-la-bellenergie-particuliers.pdf", 8 | prices: [ 9 | { 10 | puissance: 6, 11 | abonnement: 14.84, 12 | bleu: { 13 | prixKwhHP: 19.07, 14 | prixKwhHC: 15.07 15 | } 16 | }, 17 | { 18 | puissance: 9, 19 | abonnement: 19.31, 20 | bleu: { 21 | prixKwhHP: 19.07, 22 | prixKwhHC: 15.07 23 | } 24 | }, 25 | { 26 | puissance: 12, 27 | abonnement: 23.38, 28 | bleu: { 29 | prixKwhHP: 19.07, 30 | prixKwhHC: 15.07 31 | } 32 | }, 33 | { 34 | puissance: 15, 35 | abonnement: 27.25, 36 | bleu: { 37 | prixKwhHP: 19.07, 38 | prixKwhHC: 15.07 39 | } 40 | }, 41 | { 42 | puissance: 18, 43 | abonnement: 31.23, 44 | bleu: { 45 | prixKwhHP: 19.07, 46 | prixKwhHC: 15.07 47 | } 48 | }, 49 | { 50 | puissance: 24, 51 | abonnement: 39.63, 52 | bleu: { 53 | prixKwhHP: 19.07, 54 | prixKwhHC: 15.07 55 | } 56 | }, 57 | { 58 | puissance: 30, 59 | abonnement: 47.44, 60 | bleu: { 61 | prixKwhHP: 19.07, 62 | prixKwhHC: 15.07 63 | } 64 | }, 65 | { 66 | puissance: 36, 67 | abonnement: 55.30, 68 | bleu: { 69 | prixKwhHP: 19.07, 70 | prixKwhHC: 15.07 71 | } 72 | }], 73 | hc: [{ 74 | start: {hour:22, minute:0}, 75 | end: {hour:24, minute:0} 76 | }, 77 | { 78 | start: {hour:0, minute:0}, 79 | end: {hour:6, minute:0} 80 | }], 81 | hasHCCustom: false, 82 | hasSpecialDaysCustom: false, 83 | specialDays: [], 84 | getDayType: function (day) { 85 | let dayType = "bleu"; 86 | return dayType; 87 | } 88 | } 89 | ); 90 | 91 | -------------------------------------------------------------------------------- /scripts/tarifs/labelleenergie/constanceHC.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "La Belle Energie - Constance HC", 4 | lastUpdate: "2025-11-01", 5 | isCommunity: true, 6 | subscription_url: "https://labellenergie.fr/offre-electricite-verte/", 7 | price_url: "https://labellenergie.fr/pdf/grille-tarifaire-la-bellenergie-particuliers.pdf", 8 | prices: [ 9 | { 10 | puissance: 6, 11 | abonnement: 16.85, 12 | bleu: { 13 | prixKwhHP: 19.07, 14 | prixKwhHC: 15.07 15 | } 16 | }, 17 | { 18 | puissance: 9, 19 | abonnement: 21.32, 20 | bleu: { 21 | prixKwhHP: 19.07, 22 | prixKwhHC: 15.07 23 | } 24 | }, 25 | { 26 | puissance: 12, 27 | abonnement: 25.39, 28 | bleu: { 29 | prixKwhHP: 19.07, 30 | prixKwhHC: 15.07 31 | } 32 | }, 33 | { 34 | puissance: 15, 35 | abonnement: 29.26, 36 | bleu: { 37 | prixKwhHP: 19.07, 38 | prixKwhHC: 15.07 39 | } 40 | }, 41 | { 42 | puissance: 18, 43 | abonnement: 33.24, 44 | bleu: { 45 | prixKwhHP: 19.07, 46 | prixKwhHC: 15.07 47 | } 48 | }, 49 | { 50 | puissance: 24, 51 | abonnement: 41.64, 52 | bleu: { 53 | prixKwhHP: 19.07, 54 | prixKwhHC: 15.07 55 | } 56 | }, 57 | { 58 | puissance: 30, 59 | abonnement: 49.45, 60 | bleu: { 61 | prixKwhHP: 19.07, 62 | prixKwhHC: 15.07 63 | } 64 | }, 65 | { 66 | puissance: 36, 67 | abonnement: 57.31, 68 | bleu: { 69 | prixKwhHP: 19.07, 70 | prixKwhHC: 15.07 71 | } 72 | }], 73 | hc: [{ 74 | start: {hour:22, minute:0}, 75 | end: {hour:24, minute:0} 76 | }, 77 | { 78 | start: {hour:0, minute:0}, 79 | end: {hour:6, minute:0} 80 | }], 81 | hasHCCustom: false, 82 | hasSpecialDaysCustom: false, 83 | specialDays: [], 84 | getDayType: function (day) { 85 | let dayType = "bleu"; 86 | return dayType; 87 | } 88 | } 89 | ); 90 | 91 | -------------------------------------------------------------------------------- /scripts/tarifs/edf/vertRegional.js: -------------------------------------------------------------------------------- 1 | abonnements.push({ 2 | name: "EDF - Vert Electrique Régional", 3 | offer_type: "Marché", 4 | lastUpdate: "2025-09-15", 5 | isCommunity: false, 6 | subscription_url: "https://particulier.edf.fr/fr/accueil/electricite-gaz/offres-electricite/offres-marche/electricite-verte/vert-electrique-regional.html", 7 | price_url: "https://particulier.edf.fr/content/dam/2-Actifs/Documents/Offres/grille-prix-vert-electrique-regional.pdf", 8 | prices: [ 9 | { puissance: 6, abonnement: 15.47 }, 10 | { puissance: 9, abonnement: 19.39 }, 11 | { puissance: 12, abonnement: 23.32 }, 12 | { puissance: 15, abonnement: 27.06 }, 13 | { puissance: 18, abonnement: 30.76 }, 14 | { puissance: 24, abonnement: 38.79 }, 15 | { puissance: 30, abonnement: 46.44 }, 16 | { puissance: 36, abonnement: 54.29 } 17 | ].map(item => ({ 18 | ...item, 19 | bleu: { 20 | prixKwhHC: 19.04 21 | } 22 | })), 23 | hc: [{ 24 | start: { hour: 0, minute: 0 }, 25 | end: { hour: 24, minute: 0 } 26 | }], 27 | hasHCCustom: false, 28 | hasSpecialDaysCustom: false, 29 | specialDays: [], 30 | getDayType: function (day) { 31 | let dayType = "bleu"; 32 | return dayType; 33 | } 34 | }); 35 | 36 | abonnements.push({ 37 | name: "EDF - Vert Electrique Régional Heures Creuses", 38 | offer_type: "Marché", 39 | lastUpdate: "2025-09-15", 40 | isCommunity: false, 41 | subscription_url: "https://particulier.edf.fr/fr/accueil/electricite-gaz/offres-electricite/offres-marche/electricite-verte/vert-electrique-regional.html", 42 | price_url: "https://particulier.edf.fr/content/dam/2-Actifs/Documents/Offres/grille-prix-vert-electrique-regional.pdf", 43 | prices: [ 44 | { puissance: 6, abonnement: 15.74 }, 45 | { puissance: 9, abonnement: 19.81 }, 46 | { puissance: 12, abonnement: 23.76 }, 47 | { puissance: 15, abonnement: 27.49 }, 48 | { puissance: 18, abonnement: 31.34 }, 49 | { puissance: 24, abonnement: 39.47 }, 50 | { puissance: 30, abonnement: 47.02 }, 51 | { puissance: 36, abonnement: 54.61 } 52 | ].map(item => ({ 53 | ...item, 54 | bleu: { 55 | prixKwhHP: 20.95, 56 | prixKwhHC: 15.05 57 | } 58 | })), 59 | hc: [], 60 | hasHCCustom: true, 61 | hasSpecialDaysCustom: false, 62 | specialDays: [], 63 | getDayType: function (day) { 64 | let dayType = "bleu"; 65 | return dayType; 66 | } 67 | }); 68 | -------------------------------------------------------------------------------- /scripts/tarifs/edf/zenOnline.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "EDF - Zen Online", 4 | offer_type: "Marché", 5 | lastUpdate: "2025-08-01", 6 | isCommunity: false, 7 | subscription_url: "https://particulier.edf.fr/fr/accueil/electricite-gaz/offres-electricite/offres-marche/electricite-weekend/zen-online.html", 8 | price_url: "https://particulier.edf.fr/content/dam/2-Actifs/Documents/Offres/grille-prix-zen-online.pdf", 9 | prices: [ 10 | { puissance: 3, abonnement: 11.73 }, 11 | { puissance: 6, abonnement: 15.47 }, 12 | { puissance: 9, abonnement: 19.39 }, 13 | { puissance: 12, abonnement: 23.32 }, 14 | { puissance: 15, abonnement: 27.06 }, 15 | { puissance: 18, abonnement: 30.76 }, 16 | { puissance: 24, abonnement: 38.79 }, 17 | { puissance: 30, abonnement: 46.44 }, 18 | { puissance: 36, abonnement: 54.29 } 19 | ].map(item => ({ 20 | ...item, 21 | bleu: { prixKwhHC: 18.56 } 22 | })), 23 | hc: [{ 24 | start: { hour: 0, minute: 0 }, 25 | end: { hour: 24, minute: 0 } 26 | }], 27 | hasHCCustom: false, 28 | hasSpecialDaysCustom: false, 29 | specialDays: [], 30 | getDayType: function (day) { 31 | let dayType = "bleu"; 32 | return dayType; 33 | } 34 | } 35 | ); 36 | 37 | abonnements.push({ 38 | name: "EDF - Zen Online Heures Creuses", 39 | offer_type: "Marché", 40 | lastUpdate: "2025-08-01", 41 | isCommunity: false, 42 | subscription_url: "https://particulier.edf.fr/fr/accueil/electricite-gaz/offres-electricite/offres-marche/electricite-weekend/zen-online.html", 43 | price_url: "https://particulier.edf.fr/content/dam/2-Actifs/Documents/Offres/grille-prix-zen-online.pdf", 44 | prices: [ 45 | { puissance: 6, abonnement: 15.74 }, 46 | { puissance: 9, abonnement: 19.81 }, 47 | { puissance: 12, abonnement: 23.76 }, 48 | { puissance: 15, abonnement: 27.49 }, 49 | { puissance: 18, abonnement: 31.34 }, 50 | { puissance: 24, abonnement: 39.47 }, 51 | { puissance: 30, abonnement: 47.02 }, 52 | { puissance: 36, abonnement: 54.61 } 53 | ].map(item => ({ 54 | ...item, 55 | bleu: { 56 | prixKwhHP: 19.77, 57 | prixKwhHC: 15.59 58 | } 59 | })), 60 | hc: [], 61 | hasHCCustom: true, 62 | hasSpecialDaysCustom: false, 63 | specialDays: [], 64 | getDayType: function (day) { 65 | let dayType = "bleu"; 66 | return dayType; 67 | } 68 | }); 69 | -------------------------------------------------------------------------------- /scripts/tarifs/edf/vert.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "EDF - Vert Electrique", 4 | offer_type: "Marché", 5 | lastUpdate: "2025-09-15", 6 | isCommunity: false, 7 | subscription_url: "https://particulier.edf.fr/fr/accueil/electricite-gaz/offres-electricite/offres-marche/electricite-verte/vert-electrique.html", 8 | price_url: "https://particulier.edf.fr/content/dam/2-Actifs/Documents/Offres/grille-prix-vert-electrique.pdf", 9 | prices: [ 10 | { puissance: 3, abonnement: 11.73 }, 11 | { puissance: 6, abonnement: 15.47 }, 12 | { puissance: 9, abonnement: 19.39 }, 13 | { puissance: 12, abonnement: 23.32 }, 14 | { puissance: 15, abonnement: 27.06 }, 15 | { puissance: 18, abonnement: 30.76 }, 16 | { puissance: 24, abonnement: 38.79 }, 17 | { puissance: 30, abonnement: 46.44 }, 18 | { puissance: 36, abonnement: 54.29 } 19 | ].map(item => ({ 20 | ...item, 21 | bleu: { 22 | prixKwhHC: 18.71 23 | } 24 | })), 25 | hc: [{ 26 | start: { hour: 0, minute: 0 }, 27 | end: { hour: 24, minute: 0 } 28 | }], 29 | hasHCCustom: false, 30 | hasSpecialDaysCustom: false, 31 | specialDays: [], 32 | getDayType: function (day) { 33 | let dayType = "bleu"; 34 | return dayType; 35 | } 36 | } 37 | ); 38 | 39 | abonnements.push({ 40 | name: "EDF - Vert Electrique Heures Creuses", 41 | offer_type: "Marché", 42 | lastUpdate: "2025-09-15", 43 | isCommunity: false, 44 | subscription_url: "https://particulier.edf.fr/fr/accueil/electricite-gaz/offres-electricite/offres-marche/electricite-verte/vert-electrique.html", 45 | price_url: "https://particulier.edf.fr/content/dam/2-Actifs/Documents/Offres/grille-prix-vert-electrique.pdf", 46 | prices: [ 47 | { puissance: 6, abonnement: 15.74 }, 48 | { puissance: 9, abonnement: 19.81 }, 49 | { puissance: 12, abonnement: 23.76 }, 50 | { puissance: 15, abonnement: 27.49 }, 51 | { puissance: 18, abonnement: 31.34 }, 52 | { puissance: 24, abonnement: 39.47 }, 53 | { puissance: 30, abonnement: 47.02 }, 54 | { puissance: 36, abonnement: 54.61 } 55 | ].map(item => ({ 56 | ...item, 57 | bleu: { 58 | prixKwhHP: 20.11, 59 | prixKwhHC: 15.66 60 | } 61 | })), 62 | hc: [], 63 | hasHCCustom: true, 64 | hasSpecialDaysCustom: false, 65 | specialDays: [], 66 | getDayType: function (day) { 67 | let dayType = "bleu"; 68 | return dayType; 69 | } 70 | }); 71 | -------------------------------------------------------------------------------- /scripts/tarifs/enercoop/baseHC.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "Enercoop - Heures Creuses", 4 | lastUpdate: "2024-02-01", 5 | subscription_url: "https://souscription.enercoop.fr", 6 | price_url: "https://www.faq.enercoop.fr/hc/fr/articles/360024967152-Annexes-tarifaires", 7 | prices: [ 8 | { 9 | puissance: 3, 10 | abonnement: 11.49, 11 | bleu: { 12 | prixKwhHC: 22.234 13 | } 14 | }, 15 | { 16 | puissance: 6, 17 | abonnement: 19.19, 18 | bleu: { 19 | prixKwhHP: 24.758, 20 | prixKwhHC: 16.780 21 | } 22 | }, 23 | { 24 | puissance: 9, 25 | abonnement: 25.82, 26 | bleu: { 27 | prixKwhHP: 24.758, 28 | prixKwhHC: 16.780 29 | } 30 | }, 31 | { 32 | puissance: 12, 33 | abonnement: 31.74, 34 | bleu: { 35 | prixKwhHP: 24.758, 36 | prixKwhHC: 16.780 37 | } 38 | }, 39 | { 40 | puissance: 15, 41 | abonnement: 37.67, 42 | bleu: { 43 | prixKwhHP: 24.758, 44 | prixKwhHC: 16.780 45 | } 46 | }, 47 | { 48 | puissance: 18, 49 | abonnement: 43.59, 50 | bleu: { 51 | prixKwhHP: 24.758, 52 | prixKwhHC: 16.780 53 | } 54 | }, 55 | { 56 | puissance: 24, 57 | abonnement: 55.44, 58 | bleu: { 59 | prixKwhHP: 24.758, 60 | prixKwhHC: 16.780 61 | } 62 | }, 63 | { 64 | puissance: 30, 65 | abonnement: 67.29, 66 | bleu: { 67 | prixKwhHP: 24.758, 68 | prixKwhHC: 16.780 69 | } 70 | }, 71 | { 72 | puissance: 36, 73 | abonnement: 79.14, 74 | bleu: { 75 | prixKwhHP: 24.758, 76 | prixKwhHC: 16.780 77 | } 78 | }], 79 | hc: [], 80 | hasHCCustom: true, 81 | hasSpecialDaysCustom: false, 82 | specialDays: [], 83 | getDayType: function (day) { 84 | let dayType = "bleu"; 85 | return dayType; 86 | } 87 | }); 88 | -------------------------------------------------------------------------------- /scripts/tarifs/es/bleuHC.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "ES - Bleu Heures Creuses", 4 | offer_type: "TRV", 5 | lastUpdate: "2024-02-01", 6 | subscription_url: "https://particuliers.es.fr/Offres-energies-services/Electricite-Gaz/Les-offres-electricite-d-ES/Tarif-Reglemente-electricite", 7 | price_url: "https://particuliers.es.fr/Media/Files/Part/Documentation-electricite/Tarif-reglemente-Fiche-descriptive-de-l-offre", 8 | prices: [ 9 | { 10 | puissance: 6, 11 | abonnement: 13.39, 12 | bleu: { 13 | prixKwhHP: 27.00, 14 | prixKwhHC: 20.676 15 | } 16 | }, 17 | { 18 | puissance: 9, 19 | abonnement: 17.00, 20 | bleu: { 21 | prixKwhHP: 27.00, 22 | prixKwhHC: 20.676 23 | } 24 | }, 25 | { 26 | puissance: 12, 27 | abonnement: 20.52, 28 | bleu: { 29 | prixKwhHP: 27.00, 30 | prixKwhHC: 20.676 31 | } 32 | }, 33 | { 34 | puissance: 15, 35 | abonnement: 23.89, 36 | bleu: { 37 | prixKwhHP: 27.00, 38 | prixKwhHC: 20.676 39 | } 40 | }, 41 | { 42 | puissance: 18, 43 | abonnement: 27.22, 44 | bleu: { 45 | prixKwhHP: 27.00, 46 | prixKwhHC: 20.676 47 | } 48 | }, 49 | { 50 | puissance: 24, 51 | abonnement: 34.22, 52 | bleu: { 53 | prixKwhHP: 27.00, 54 | prixKwhHC: 20.676 55 | } 56 | }, 57 | { 58 | puissance: 30, 59 | abonnement: 40.60, 60 | bleu: { 61 | prixKwhHP: 27.00, 62 | prixKwhHC: 20.676 63 | } 64 | }, 65 | { 66 | puissance: 36, 67 | abonnement: 47.04, 68 | bleu: { 69 | prixKwhHP: 27.00, 70 | prixKwhHC: 20.676 71 | } 72 | }], 73 | hc: [{ 74 | start: {hour:23, minute:0}, 75 | end: {hour:7, minute:0} 76 | }], 77 | hasHCCustom: true, 78 | hasSpecialDaysCustom: false, 79 | specialDays: [], 80 | getDayType: function (day) { 81 | let dayType = "bleu"; 82 | return dayType; 83 | } 84 | }); 85 | -------------------------------------------------------------------------------- /scripts/tarifs/engie/electTranquilite1an.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "Engie - Elec Tranquillité 1 an", 4 | lastUpdate: "2024-11-01", 5 | subscription_url: "https://particuliers.engie.fr/electricite.html", 6 | price_url: "https://particuliers.engie.fr/content/dam/pdf/fiches-descriptives/fiche-descriptive-elec-tranquillite.pdf", 7 | prices: [ 8 | { puissance: 3, abonnement: 116.97 / 12 }, 9 | { puissance: 6, abonnement: 153.59 / 12 }, 10 | { puissance: 9, abonnement: 192.86 / 12 }, 11 | { puissance: 12, abonnement: 232.90 / 12 }, 12 | { puissance: 15, abonnement: 270.28 / 12 }, 13 | { puissance: 18, abonnement: 307.40 / 12 }, 14 | { puissance: 24, abonnement: 389.50 / 12 }, 15 | { puissance: 30, abonnement: 459.69 / 12 }, 16 | { puissance: 36, abonnement: 542.17 / 12 } 17 | ].map(item => ({ 18 | ...item, 19 | bleu: { prixKwhHC: 26.119, prixKwhHP: 26.119 } 20 | })), 21 | hc: [{ 22 | start: {hour:0, minute:0}, 23 | end: {hour:24, minute:0} 24 | }], 25 | hasHCCustom: false, 26 | specialDays: [], 27 | getDayType: function (day) { 28 | let dayType = "bleu"; 29 | return dayType; 30 | } 31 | } 32 | ); 33 | 34 | abonnements.push( 35 | { 36 | name: "Engie - Elec Tranquillité 1 an HC", 37 | lastUpdate: "2024-11-01", 38 | subscription_url: "https://particuliers.engie.fr/electricite.html", 39 | price_url: "https://particuliers.engie.fr/content/dam/pdf/fiches-descriptives/fiche-descriptive-elec-tranquillite.pdf", 40 | prices: [ 41 | { puissance: 6, abonnement: 161.69 / 12 }, 42 | { puissance: 9, abonnement: 205.33 / 12 }, 43 | { puissance: 12, abonnement: 247.96 / 12 }, 44 | { puissance: 15, abonnement: 288.70 / 12 }, 45 | { puissance: 18, abonnement: 329.05 / 12 }, 46 | { puissance: 24, abonnement: 413.68 / 12 }, 47 | { puissance: 30, abonnement: 490.96 / 12 }, 48 | { puissance: 36, abonnement: 568.88 / 12 } 49 | ].map(item => ({ 50 | ...item, 51 | bleu: { prixKwhHC: 21.442, prixKwhHP: 28.033 } 52 | })), 53 | hc: [{ 54 | start: {hour:22, minute:0}, 55 | end: {hour:24, minute:0} 56 | }, 57 | { 58 | start: {hour:0, minute:0}, 59 | end: {hour:6, minute:0} 60 | }], 61 | hasHCCustom: false, 62 | hasSpecialDaysCustom: false, 63 | specialDays: [], 64 | getDayType: function (day) { 65 | let dayType = "bleu"; 66 | return dayType; 67 | } 68 | } 69 | ); 70 | 71 | -------------------------------------------------------------------------------- /scripts/tarifs/edf/vertWeekEnd.js: -------------------------------------------------------------------------------- 1 | abonnements.push({ 2 | name: "EDF - Vert Electrique Week-End", 3 | offer_type: "Marché", 4 | lastUpdate: "2025-09-15", 5 | isCommunity: false, 6 | subscription_url: "https://particulier.edf.fr/fr/accueil/electricite-gaz/offres-electricite/offres-marche/electricite-verte/vert-electrique-week-end.html", 7 | price_url: "https://particulier.edf.fr/content/dam/2-Actifs/Documents/Offres/grille-prix-vert-electrique-weekend.pdf", 8 | prices: [ 9 | { puissance: 6, abonnement: 15.47 }, 10 | { puissance: 9, abonnement: 19.39 }, 11 | { puissance: 12, abonnement: 23.32 }, 12 | { puissance: 15, abonnement: 27.06 }, 13 | { puissance: 18, abonnement: 30.76 }, 14 | { puissance: 24, abonnement: 38.79 }, 15 | { puissance: 30, abonnement: 46.44 }, 16 | { puissance: 36, abonnement: 54.29 } 17 | ].map(item => ({ 18 | ...item, 19 | bleu: { 20 | prixKwhHC: 20.42 21 | }, 22 | weekend: { 23 | prixKwhHC: 15.37 24 | } 25 | })), 26 | hc: [{ 27 | start: { hour: 0, minute: 0 }, 28 | end: { hour: 24, minute: 0 } 29 | }], 30 | hasHCCustom: false, 31 | hasSpecialDaysCustom: false, 32 | specialDays: [0, 6], 33 | getDayType: function (day) { 34 | let dayType = "bleu"; 35 | 36 | const isoDate = new Date(day.date); 37 | const dayOfWeek = isoDate.getDay(); 38 | 39 | if (this.specialDays.includes(dayOfWeek)) { 40 | dayType = "weekend"; 41 | } 42 | 43 | return dayType; 44 | } 45 | }); 46 | 47 | abonnements.push({ 48 | name: "EDF - Vert Electrique Week-End Heures Creuses", 49 | offer_type: "Marché", 50 | lastUpdate: "2025-09-15", 51 | isCommunity: false, 52 | subscription_url: "https://particulier.edf.fr/fr/accueil/electricite-gaz/offres-electricite/offres-marche/electricite-verte/vert-electrique-week-end.html", 53 | price_url: "https://particulier.edf.fr/content/dam/2-Actifs/Documents/Offres/grille-prix-vert-electrique-weekend.pdf", 54 | prices: [ 55 | { puissance: 6, abonnement: 15.74 }, 56 | { puissance: 9, abonnement: 19.81 }, 57 | { puissance: 12, abonnement: 23.76 }, 58 | { puissance: 15, abonnement: 27.49 }, 59 | { puissance: 18, abonnement: 31.34 }, 60 | { puissance: 24, abonnement: 39.47 }, 61 | { puissance: 30, abonnement: 47.02 }, 62 | { puissance: 36, abonnement: 54.61 } 63 | ].map(item => ({ 64 | ...item, 65 | bleu: { 66 | prixKwhHP: 21.48, 67 | prixKwhHC: 16.11 68 | }, 69 | weekend: { 70 | prixKwhHP: 16.11, 71 | prixKwhHC: 16.11 72 | } 73 | })), 74 | hc: [], 75 | hasHCCustom: true, 76 | hasSpecialDaysCustom: false, 77 | specialDays: [0, 6], 78 | getDayType: function (day) { 79 | let dayType = "bleu"; 80 | 81 | const isoDate = new Date(day.date); 82 | const dayOfWeek = isoDate.getDay(); 83 | 84 | if (this.specialDays.includes(dayOfWeek)) { 85 | dayType = "weekend"; 86 | } 87 | 88 | return dayType; 89 | } 90 | }); 91 | -------------------------------------------------------------------------------- /scripts/tarifs/edf/zenWeekEndPlus.js: -------------------------------------------------------------------------------- 1 | abonnements.push({ 2 | name: "EDF - Zen Week-End Plus", 3 | offer_type: "Marché", 4 | lastUpdate: "2025-09-15", 5 | isCommunity: false, 6 | subscription_url: "https://particulier.edf.fr/fr/accueil/electricite-gaz/offres-electricite/offres-marche/electricite-weekend/zen-week-end-plus.html", 7 | price_url: "https://particulier.edf.fr/content/dam/2-Actifs/Documents/Offres/grille-prix-zen-week-end-plus.pdf", 8 | prices: [ 9 | { puissance: 6, abonnement: 15.47 }, 10 | { puissance: 9, abonnement: 19.39 }, 11 | { puissance: 12, abonnement: 23.32 }, 12 | { puissance: 15, abonnement: 27.06 }, 13 | { puissance: 18, abonnement: 30.76 }, 14 | { puissance: 24, abonnement: 38.79 }, 15 | { puissance: 30, abonnement: 46.44 }, 16 | { puissance: 36, abonnement: 54.29 } 17 | ].map(item => ({ 18 | ...item, 19 | bleu: { 20 | prixKwhHC: 21.23 21 | }, 22 | weekend: { 23 | prixKwhHC: 15.93 24 | } 25 | })), 26 | hc: [{ 27 | start: { hour: 0, minute: 0 }, 28 | end: { hour: 24, minute: 0 } 29 | }], 30 | hasHCCustom: false, 31 | hasSpecialDaysCustom: true, 32 | specialDays: [0, 6], 33 | getDayType: function (day) { 34 | let dayType = "bleu"; 35 | 36 | const isoDate = new Date(day.date); 37 | const dayOfWeek = isoDate.getDay(); 38 | 39 | if (this.specialDays.includes(dayOfWeek)) { 40 | dayType = "weekend"; 41 | } 42 | 43 | return dayType; 44 | } 45 | }); 46 | 47 | abonnements.push({ 48 | name: "EDF - Zen Week-End Plus HC", 49 | offer_type: "Marché", 50 | lastUpdate: "2025-09-15", 51 | isCommunity: false, 52 | subscription_url: "https://particulier.edf.fr/fr/accueil/electricite-gaz/offres-electricite/offres-marche/electricite-weekend/zen-week-end-plus.html", 53 | price_url: "https://particulier.edf.fr/content/dam/2-Actifs/Documents/Offres/grille-prix-zen-week-end-plus.pdf", 54 | prices: [ 55 | { puissance: 6, abonnement: 15.74 }, 56 | { puissance: 9, abonnement: 19.81 }, 57 | { puissance: 12, abonnement: 23.76 }, 58 | { puissance: 15, abonnement: 27.49 }, 59 | { puissance: 18, abonnement: 31.34 }, 60 | { puissance: 24, abonnement: 39.47 }, 61 | { puissance: 30, abonnement: 47.02 }, 62 | { puissance: 36, abonnement: 54.61 } 63 | ].map(item => ({ 64 | ...item, 65 | bleu: { 66 | prixKwhHP: 22.03, 67 | prixKwhHC: 16.50 68 | }, 69 | weekend: { 70 | prixKwhHP: 16.50, 71 | prixKwhHC: 16.50, 72 | } 73 | })), 74 | hc: [{ 75 | start: { hour: 22, minute: 0 }, 76 | end: { hour: 24, minute: 0 } 77 | }, 78 | { 79 | start: { hour: 0, minute: 0 }, 80 | end: { hour: 6, minute: 0 } 81 | }], 82 | hasHCCustom: true, 83 | hasSpecialDaysCustom: true, 84 | specialDays: [0, 6], 85 | getDayType: function (day) { 86 | let dayType = "bleu"; 87 | 88 | const isoDate = new Date(day.date); 89 | const dayOfWeek = isoDate.getDay(); 90 | 91 | if (this.specialDays.includes(dayOfWeek)) { 92 | dayType = "weekend"; 93 | } 94 | 95 | return dayType; 96 | } 97 | }); 98 | -------------------------------------------------------------------------------- /scripts/tarifs/engie/electReference3ans.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "Engie - Elec Référence 3 ans", 4 | lastUpdate: "2025-11-27", 5 | subscription_url: "https://particuliers.engie.fr/electricite.html", 6 | price_url: "https://particuliers.engie.fr/content/dam/pdf/fiches-descriptives/fiche-descriptive-elec-reference-3-ans.pdf", 7 | prices: [ 8 | { puissance: 3, abonnement: (36.61 + 105.36) / 12 }, 9 | { puissance: 6, abonnement: (34.12 + 153.95) / 12 }, 10 | { puissance: 9, abonnement: (33.91 + 202.55) / 12 }, 11 | { puissance: 12, abonnement: (33.72 + 251.14) / 12 }, 12 | { puissance: 15, abonnement: (31.21 + 299.73) / 12 }, 13 | { puissance: 18, abonnement: (28.27 + 348.32) / 12 }, 14 | { puissance: 24, abonnement: (29.89 + 445.50) / 12 }, 15 | { puissance: 30, abonnement: (27.05 + 542.69) / 12 }, 16 | { puissance: 36, abonnement: (26.51 + 639.87) / 12 } 17 | ].map(item => { 18 | const obligationComptage = item.puissance <= 6 ? 1.302 : 1.439; 19 | return { 20 | ...item, 21 | // Fourniture + acheminement sans différenciation temporelle + Obligation comptage simple 22 | bleu: { prixKwhHC: 15.180 + 0.05808 + obligationComptage, prixKwhHP: 15.180 + 0.05808 + obligationComptage } 23 | }; 24 | }), 25 | hc: [{ 26 | start: {hour:0, minute:0}, 27 | end: {hour:24, minute:0} 28 | }], 29 | hasHCCustom: false, 30 | specialDays: [], 31 | getDayType: function (day) { 32 | let dayType = "bleu"; 33 | return dayType; 34 | } 35 | } 36 | ); 37 | 38 | abonnements.push( 39 | { 40 | name: "Engie - Elec Référence 3 ans HC", 41 | lastUpdate: "2025-11-27", 42 | subscription_url: "https://particuliers.engie.fr/electricite.html", 43 | price_url: "https://particuliers.engie.fr/content/dam/pdf/fiches-descriptives/fiche-descriptive-elec-reference-3-ans.pdf", 44 | prices: [ 45 | { puissance: 6, abonnement: (37.43 + 175.20) / 12 }, 46 | { puissance: 9, abonnement: (38.95 + 234.41) / 12 }, 47 | { puissance: 12, abonnement: (38.90 + 293.63) / 12 }, 48 | { puissance: 15, abonnement: (36.40 + 352.84) / 12 }, 49 | { puissance: 18, abonnement: (35.18 + 412.06) / 12 }, 50 | { puissance: 24, abonnement: (38.10 + 530.48) / 12 }, 51 | { puissance: 30, abonnement: (33.96 + 648.91) / 12 }, 52 | { puissance: 36, abonnement: (30.40 + 767.34) / 12 } 53 | ].map(item => ({ 54 | ...item, 55 | // Fourniture + acheminement 2 plages + Obligation comptage HP/HC 56 | bleu: { prixKwhHC: 13.183 + 0.04200 + 1.414 , prixKwhHP: 15.097 + 0.05928 + 1.414} 57 | })), 58 | hc: [{ 59 | start: { hour: 22, minute: 0 }, 60 | end: { hour: 24, minute: 0 } 61 | }, 62 | { 63 | start: { hour: 0, minute: 0 }, 64 | end: { hour: 6, minute: 0 } 65 | }], 66 | hasHCCustom: false, 67 | hasSpecialDaysCustom: false, 68 | specialDays: [], 69 | getDayType: function (day) { 70 | let dayType = "bleu"; 71 | return dayType; 72 | } 73 | } 74 | ); 75 | -------------------------------------------------------------------------------- /scripts/tarifs/enercoop/saisons.js: -------------------------------------------------------------------------------- 1 | abonnements.push({ 2 | name: "Enercoop - Haute Saison / Basse Saison", 3 | lastUpdate: "2024-02-01", 4 | subscription_url: "https://souscription.enercoop.fr", 5 | price_url: "https://www.faq.enercoop.fr/hc/fr/articles/360024967152-Annexes-tarifaires", 6 | prices: [ 7 | { 8 | puissance: 3, 9 | abonnement: 10.18, 10 | basseSaison: { 11 | prixKwhHP: 18.916, 12 | prixKwhHC: 13.946 13 | }, 14 | hauteSaison: { 15 | prixKwhHP: 27.058, 16 | prixKwhHC: 16.044 17 | } 18 | }, 19 | { 20 | puissance: 6, 21 | abonnement: 16.19, 22 | basseSaison: { 23 | prixKwhHP: 18.916, 24 | prixKwhHC: 13.946 25 | }, 26 | hauteSaison: { 27 | prixKwhHP: 27.058, 28 | prixKwhHC: 16.044 29 | } 30 | }, 31 | { 32 | puissance: 9, 33 | abonnement: 21.55, 34 | basseSaison: { 35 | prixKwhHP: 18.916, 36 | prixKwhHC: 13.946 37 | }, 38 | hauteSaison: { 39 | prixKwhHP: 27.058, 40 | prixKwhHC: 16.044 41 | } 42 | }, 43 | { 44 | puissance: 12, 45 | abonnement: 26.79, 46 | basseSaison: { 47 | prixKwhHP: 18.916, 48 | prixKwhHC: 13.946 49 | }, 50 | hauteSaison: { 51 | prixKwhHP: 27.058, 52 | prixKwhHC: 16.044 53 | } 54 | }, 55 | { 56 | puissance: 15, 57 | abonnement: 32.58, 58 | basseSaison: { 59 | prixKwhHP: 18.916, 60 | prixKwhHC: 13.946 61 | }, 62 | hauteSaison: { 63 | prixKwhHP: 27.058, 64 | prixKwhHC: 16.044 65 | } 66 | }, 67 | { 68 | puissance: 18, 69 | abonnement: 38.36, 70 | basseSaison: { 71 | prixKwhHP: 18.916, 72 | prixKwhHC: 13.946 73 | }, 74 | hauteSaison: { 75 | prixKwhHP: 27.058, 76 | prixKwhHC: 16.044 77 | } 78 | }, 79 | { 80 | puissance: 24, 81 | abonnement: 49.94, 82 | basseSaison: { 83 | prixKwhHP: 18.916, 84 | prixKwhHC: 13.946 85 | }, 86 | hauteSaison: { 87 | prixKwhHP: 27.058, 88 | prixKwhHC: 16.044 89 | } 90 | }, 91 | { 92 | puissance: 30, 93 | abonnement: 61.52, 94 | basseSaison: { 95 | prixKwhHP: 18.916, 96 | prixKwhHC: 13.946 97 | }, 98 | hauteSaison: { 99 | prixKwhHP: 27.058, 100 | prixKwhHC: 16.044 101 | } 102 | }, 103 | { 104 | puissance: 36, 105 | abonnement: 73.09, 106 | basseSaison: { 107 | prixKwhHP: 18.916, 108 | prixKwhHC: 13.946 109 | }, 110 | hauteSaison: { 111 | prixKwhHP: 27.058, 112 | prixKwhHC: 16.044 113 | } 114 | }], 115 | hc: [], 116 | hasHCCustom: true, 117 | hasSpecialDaysCustom: false, 118 | getDayType: function (day) { 119 | let dayType = "basseSaison"; 120 | const [currentyear, currentMonth, currentDay] = (day.date.split("/")).map(Number); 121 | 122 | if ((currentMonth >= 11 && currentDay >= 1) || (currentMonth <= 3 && currentDay <= 31)) { 123 | dayType = "hauteSaison"; 124 | } 125 | 126 | return dayType; 127 | } 128 | }); -------------------------------------------------------------------------------- /scripts/tarifs/ohm/soirWeekEndHC.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "OHM Energie - Offre soir et Week-End", 4 | offer_type: "Marché", 5 | lastUpdate: "2024-02-01", 6 | subscription_url: "https://ohm-energie.com/offre/electricite", 7 | price_url: "https://ohm-energie.com/grilles/elec/2024/02/ELEC_S%26WE.pdf", 8 | prices: [ 9 | { 10 | puissance: 3, 11 | abonnement: 10.11, 12 | bleu: { 13 | prixKwhHP: 27.29, 14 | prixKwhHC: 17.38 15 | }, 16 | weekend: { 17 | prixKwhHP: 17.38, 18 | prixKwhHC: 17.38 19 | } 20 | }, 21 | { 22 | puissance: 6, 23 | abonnement: 13.78, 24 | bleu: { 25 | prixKwhHP: 27.29, 26 | prixKwhHC: 17.38 27 | }, 28 | weekend: { 29 | prixKwhHP: 17.38, 30 | prixKwhHC: 17.38 31 | } 32 | }, 33 | { 34 | puissance: 9, 35 | abonnement: 17.49, 36 | bleu: { 37 | prixKwhHP: 27.29, 38 | prixKwhHC: 17.38 39 | }, 40 | weekend: { 41 | prixKwhHP: 17.38, 42 | prixKwhHC: 17.38 43 | } 44 | }, 45 | { 46 | puissance: 12, 47 | abonnement: 21.12, 48 | bleu: { 49 | prixKwhHP: 27.29, 50 | prixKwhHC: 17.38 51 | }, 52 | weekend: { 53 | prixKwhHP: 17.38, 54 | prixKwhHC: 17.38 55 | } 56 | }, 57 | { 58 | puissance: 15, 59 | abonnement: 24.57, 60 | bleu: { 61 | prixKwhHP: 27.29, 62 | prixKwhHC: 17.38 63 | }, 64 | weekend: { 65 | prixKwhHP: 17.38, 66 | prixKwhHC: 17.38 67 | } 68 | }, 69 | { 70 | puissance: 18, 71 | abonnement: 28.00, 72 | bleu: { 73 | prixKwhHP: 27.29, 74 | prixKwhHC: 17.38 75 | }, 76 | weekend: { 77 | prixKwhHP: 17.38, 78 | prixKwhHC: 17.38 79 | } 80 | }, 81 | { 82 | puissance: 24, 83 | abonnement: 35.19, 84 | bleu: { 85 | prixKwhHP: 27.29, 86 | prixKwhHC: 17.38 87 | }, 88 | weekend: { 89 | prixKwhHP: 17.38, 90 | prixKwhHC: 17.38 91 | } 92 | }, 93 | { 94 | puissance: 30, 95 | abonnement: 41.75, 96 | bleu: { 97 | prixKwhHP: 27.29, 98 | prixKwhHC: 17.38 99 | }, 100 | weekend: { 101 | prixKwhHP: 17.38, 102 | prixKwhHC: 17.38 103 | } 104 | }, 105 | { 106 | puissance: 36, 107 | abonnement: 48.37, 108 | bleu: { 109 | prixKwhHP: 27.29, 110 | prixKwhHC: 17.38 111 | }, 112 | weekend: { 113 | prixKwhHP: 17.38, 114 | prixKwhHC: 17.38 115 | } 116 | }], 117 | hc: [{ 118 | start: {hour:22, minute:0}, 119 | end: {hour:24, minute:0} 120 | }, 121 | { 122 | start: {hour:0, minute:0}, 123 | end: {hour:6, minute:0} 124 | }], 125 | hasHCCustom: true, 126 | hasSpecialDaysCustom: false, 127 | specialDays: [0, 6], 128 | getDayType: function (day) { 129 | let dayType = "bleu"; 130 | 131 | const isoDate = new Date(day.date); 132 | const dayOfWeek = isoDate.getDay(); 133 | 134 | if (this.specialDays.includes(dayOfWeek)) { 135 | dayType = "weekend"; 136 | } 137 | 138 | return dayType; 139 | } 140 | }); -------------------------------------------------------------------------------- /scripts/tarifs/edf/ejp.js: -------------------------------------------------------------------------------- 1 | abonnements.push({ 2 | name: "EDF - EJP", 3 | offer_type: "TRV", 4 | lastUpdate: "2025-08-01", 5 | isCommunity: false, 6 | subscription_url: "", 7 | price_url: "https://particulier.edf.fr/content/dam/2-Actifs/Documents/Offres/Grille_prix_EJP.pdf", 8 | prices: [ 9 | { puissance: 9, abonnement: 19.32 }, 10 | { puissance: 12, abonnement: 23.04 }, 11 | { puissance: 15, abonnement: 26.81 }, 12 | { puissance: 18, abonnement: 30.47 }, 13 | { puissance: 36, abonnement: 53.32 } 14 | ].map(item => ({ 15 | ...item, 16 | bleu: { 17 | prixKwhHP: 14.18, 18 | prixKwhHC: 14.18 19 | }, 20 | rouge: { 21 | prixKwhHP: 108.67, 22 | prixKwhHC: 14.18 23 | } 24 | })), 25 | hc: [{ 26 | start: { hour: 1, minute: 0 }, 27 | end: { hour: 7, minute: 0 } 28 | }], 29 | specialDays: [{ 30 | name: "rouge", 31 | numberOfDays: 22, 32 | monthBegin: 11, 33 | monthEnd: 3, 34 | lastDays: [ 35 | "2020/11/30", 36 | "2020/12/01", 37 | "2020/12/02", 38 | "2020/12/03", 39 | "2020/12/04", 40 | "2020/12/07", 41 | "2020/12/08", 42 | "2020/12/09", 43 | "2020/12/10", 44 | "2020/12/18", 45 | "2021/01/04", 46 | "2021/01/05", 47 | "2021/01/06", 48 | "2021/01/07", 49 | "2021/01/08", 50 | "2021/01/11", 51 | "2021/01/26", 52 | "2021/02/11", 53 | "2021/02/12", 54 | "2021/03/23", 55 | "2021/03/18", 56 | "2021/03/17", 57 | "2021/11/29", 58 | "2022/01/06", 59 | "2022/01/10", 60 | "2022/01/11", 61 | "2022/01/12", 62 | "2022/01/13", 63 | "2022/01/14", 64 | "2022/01/17", 65 | "2022/01/18", 66 | "2022/01/19", 67 | "2022/01/20", 68 | "2022/01/21", 69 | "2022/03/01", 70 | "2022/03/02", 71 | "2022/03/03", 72 | "2022/03/07", 73 | "2022/03/08", 74 | "2022/03/15", 75 | "2022/03/22", 76 | "2022/03/23", 77 | "2022/03/29", 78 | "2022/12/08", 79 | "2022/12/12", 80 | "2022/12/13", 81 | "2022/12/14", 82 | "2023/01/19", 83 | "2023/01/20", 84 | "2023/01/23", 85 | "2023/01/24", 86 | "2023/01/25", 87 | "2023/01/27", 88 | "2023/02/07", 89 | "2023/02/09", 90 | "2023/02/10", 91 | "2023/02/28", 92 | "2023/03/01", 93 | "2023/03/02", 94 | "2023/03/03", 95 | "2023/03/06", 96 | "2023/03/07", 97 | "2023/03/08", 98 | "2023/03/09", 99 | "2023/03/15", 100 | "2023/11/29", 101 | "2023/11/30", 102 | "2023/12/01", 103 | "2023/12/06", 104 | "2023/12/18", 105 | "2023/12/20", 106 | "2024/01/08", 107 | "2024/01/09", 108 | "2024/01/10", 109 | "2024/01/11", 110 | "2024/01/12", 111 | "2024/01/15", 112 | "2024/01/16", 113 | "2024/01/18", 114 | "2024/01/19", 115 | "2024/02/26", 116 | "2024/02/27", 117 | "2024/02/28", 118 | "2024/03/04", 119 | "2024/03/05", 120 | "2024/03/06", 121 | "2024/03/07", 122 | "2024/03/11", 123 | "2024/11/13", 124 | "2024/11/14", 125 | "2024/12/03", 126 | "2024/12/04", 127 | "2024/12/09", 128 | "2024/12/10", 129 | "2024/12/11", 130 | "2024/12/12", 131 | "2024/12/13", 132 | "2025/01/13", 133 | "2025/01/14", 134 | "2025/01/15", 135 | "2025/01/16", 136 | "2025/01/17", 137 | "2025/01/20", 138 | "2025/01/21", 139 | "2025/01/22", 140 | "2025/02/03", 141 | "2025/02/04", 142 | "2025/02/07", 143 | "2025/02/12", 144 | "2025/03/14" 145 | ] 146 | }], 147 | getDayType: function (day) { 148 | let dayType = "bleu"; 149 | 150 | this.specialDays.forEach((specialDay) => { 151 | if (specialDay.lastDays.includes(day.date)) { 152 | dayType = specialDay.name; 153 | } 154 | }); 155 | 156 | return dayType; 157 | } 158 | }); -------------------------------------------------------------------------------- /style.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --primary-color: #3498db; 3 | --secondary-color: #2ecc71; 4 | --background-color: #f8f9fa; 5 | --text-color: #333; 6 | --border-color: #e0e0e0; 7 | } 8 | 9 | body { 10 | font-family: 'Roboto', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; 11 | background-color: var(--background-color); 12 | color: var(--text-color); 13 | line-height: 1.6; 14 | } 15 | 16 | h1 a { 17 | text-decoration: none; 18 | color: black; 19 | } 20 | 21 | .container { 22 | max-width: 1200px; 23 | margin: 0 auto; 24 | padding: 2rem; 25 | } 26 | 27 | .card { 28 | background-color: #fff; 29 | border-radius: 8px; 30 | box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); 31 | padding: 2rem; 32 | margin-bottom: 2rem; 33 | } 34 | 35 | h1, 36 | h2, 37 | h3, 38 | h4, 39 | h5, 40 | h6 { 41 | margin-bottom: 1rem; 42 | font-weight: 600; 43 | } 44 | 45 | .main-title { 46 | font-size: 2.5rem; 47 | color: var(--primary-color); 48 | text-align: center; 49 | margin-bottom: 2rem; 50 | } 51 | 52 | .sub-title { 53 | font-size: 1.5rem; 54 | color: var(--secondary-color); 55 | text-align: center; 56 | margin-bottom: 1.5rem; 57 | } 58 | 59 | .table { 60 | width: 100%; 61 | border-collapse: separate; 62 | border-spacing: 0; 63 | margin-bottom: 2rem; 64 | background-color: #fff; 65 | border-radius: 8px; 66 | overflow: hidden; 67 | } 68 | 69 | .table thead th { 70 | background-color: var(--primary-color); 71 | color: #fff; 72 | font-weight: 600; 73 | text-align: left; 74 | padding: 1rem; 75 | border-bottom: 2px solid var(--secondary-color); 76 | } 77 | 78 | .table tbody td, 79 | .table tbody th { 80 | padding: 1rem; 81 | border-bottom: 1px solid var(--border-color); 82 | } 83 | 84 | .table tbody tr:last-child td { 85 | border-bottom: none; 86 | } 87 | 88 | .table tbody tr:hover { 89 | background-color: rgba(52, 152, 219, 0.1); 90 | } 91 | 92 | .btn { 93 | display: inline-block; 94 | padding: 0.5rem 1rem; 95 | font-size: 1rem; 96 | font-weight: 600; 97 | text-align: center; 98 | text-decoration: none; 99 | border-radius: 4px; 100 | transition: all 0.3s ease; 101 | cursor: pointer; 102 | } 103 | 104 | .btn-primary { 105 | background-color: var(--primary-color); 106 | color: #fff; 107 | border: none; 108 | } 109 | 110 | .btn-primary:hover { 111 | background-color: #2980b9; 112 | } 113 | 114 | .btn-secondary { 115 | background-color: var(--secondary-color); 116 | color: #fff; 117 | border: none; 118 | } 119 | 120 | .btn-secondary:hover { 121 | background-color: #27ae60; 122 | } 123 | 124 | .form-group { 125 | margin-bottom: 1.5rem; 126 | } 127 | 128 | .form-control { 129 | display: block; 130 | width: 100%; 131 | padding: 0.5rem; 132 | font-size: 1rem; 133 | line-height: 1.5; 134 | color: var(--text-color); 135 | background-color: #fff; 136 | border: 1px solid var(--border-color); 137 | border-radius: 4px; 138 | transition: border-color 0.3s ease; 139 | } 140 | 141 | .form-control:focus { 142 | border-color: var(--primary-color); 143 | outline: 0; 144 | box-shadow: 0 0 0 0.2rem rgba(52, 152, 219, 0.25); 145 | } 146 | 147 | .alert { 148 | padding: 1rem; 149 | margin-bottom: 1rem; 150 | border: 1px solid transparent; 151 | border-radius: 4px; 152 | } 153 | 154 | .alert-success { 155 | color: #155724; 156 | background-color: #d4edda; 157 | border-color: #c3e6cb; 158 | } 159 | 160 | .alert-info { 161 | color: #0c5460; 162 | background-color: #d1ecf1; 163 | border-color: #bee5eb; 164 | } 165 | 166 | .alert-warning { 167 | color: #856404; 168 | background-color: #fff3cd; 169 | border-color: #ffeeba; 170 | } 171 | 172 | .alert-danger { 173 | color: #721c24; 174 | background-color: #f8d7da; 175 | border-color: #f5c6cb; 176 | } 177 | 178 | @media (min-width: 992px) { 179 | .col-lg-8 { 180 | width: 100%; 181 | } 182 | } 183 | 184 | @media (min-width: 1200px) { 185 | .col-lg-8 { 186 | width: 66%; 187 | } 188 | } 189 | 190 | @media (max-width: 768px) { 191 | .container { 192 | padding: 1rem; 193 | } 194 | 195 | .card { 196 | padding: 1rem; 197 | } 198 | 199 | .table thead { 200 | display: none; 201 | } 202 | 203 | .table, 204 | .table tbody, 205 | .table tr, 206 | .table td { 207 | display: block; 208 | width: 100%; 209 | } 210 | 211 | .table tr { 212 | margin-bottom: 1rem; 213 | } 214 | 215 | .table td { 216 | text-align: right; 217 | padding-left: 50%; 218 | position: relative; 219 | } 220 | 221 | .table td::before { 222 | content: attr(data-label); 223 | position: absolute; 224 | left: 6px; 225 | width: 45%; 226 | padding-right: 10px; 227 | white-space: nowrap; 228 | text-align: left; 229 | font-weight: bold; 230 | } 231 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # EDF_Simulateur_Prix 2 | Un outil pour simuler les différents tarifs de fournisseurs d'électricité depuis un export Linky de la consommation. 3 | 4 | [Version en ligne: https://comparateur-abonnements-electricite.fr](https://comparateur-abonnements-electricite.fr) 5 | 6 | ## Derniers tarifs: 7 | * EDF : 2025-10-27 8 | * Alpiq : 2025-10-27 9 | * Alterna : 2025-10-27 10 | * Mint Energie : 2025-10-27 11 | * Engie : 2025-10-27 12 | * TotalEnergie : 2025-10-27 13 | * Octopus : 2025-10-27 14 | * ~~Ekwateur : 30 janvier 2024~~ 15 | * ~~Enercoop : 01 Février 2024~~ 16 | * ~~ES : 01 Février 2024~~ 17 | * ~~Ilek : 01 Février 2024~~ 18 | * ~~La belle énergie : 01 Février 2024~~ 19 | * ~~OHM Energie : 01 Février 2024~~ 20 | * ~~Switch : 01 Février 2024~~ [Voir ici](https://www.jechange.fr/energie/chez-switch/) 21 | 22 | ## Remerciements 23 | Basé sur une idée de [Nicolas 'Automnen'](https://twitter.com/autommen/) et [Malory Bouvier](https://twitter.com/MaloryBouvier/). 24 | 25 | ### Contributeurs 26 | * [Dawey](https://github.com/Daweyy) 27 | * [DuchkPy](https://github.com/DuchkPy) 28 | * [Zarwinch](https://github.com/zarwinch) 29 | * [Benoit Deldicque](https://github.com/bddq) 30 | * [Tom Niget](https://github.com/zdimension) 31 | * [Benoit Goimier](https://github.com/BenoitGoimier) 32 | * [J0hnMatrix](https://github.com/J0hnMatrix) 33 | * [fdonv](https://github.com/fdonv) 34 | * [chatainsim](https://github.com/chatainsim) 35 | * [csailly](https://github.com/csailly) 36 | * [nviallatte](https://github.com/nviallatte) 37 | * [Jonathan Sarrazi](https://github.com/jo-sarrazin) 38 | * [Szepeviktor](https://github.com/szepeviktor) 39 | * [Jason Marechal](https://github.com/JasonMarechal) 40 | * [Lucas Duval](https://github.com/LucasDuval) 41 | * [Pierre Pinon](https://github.com/pierrepinon) 42 | * [Abauzac](https://github.com/abauzac) 43 | * [Ponsifiax](https://github.com/ponsifiax) 44 | * [10tribu](https://github.com/10tribu) 45 | * [libussa](libussa) 46 | 47 | ## Comment contribuer 48 | Vous trouverez la documentation dans le [wiki](https://github.com/JC144/EDF_Simulateur_Prix/wiki). 49 | 50 | ## Utilisation 51 | 52 | ### Depuis le site d'EDF 53 | 1. Récupérez sur le site d'EDF votre consommation [https://suiviconso.edf.fr/comprendre](https://suiviconso.edf.fr/comprendre) 54 | ![Bouton télécharger](https://user-images.githubusercontent.com/1168432/216930725-d3af991d-7761-40bc-892f-285d11390fd8.png) 55 | 2. Dézippez ce répertoire 56 | 57 | ### Depuis le site d'Enedis 58 | 1. Depuis le site d'Enedis: [https://mon-compte-particulier.enedis.fr/mes-telechargements-mesures/](https://mon-compte-particulier.enedis.fr/mes-telechargements-mesures/) 59 | 2. Cliquez sur "Nouveau Téléchargement" en haut à droite 60 | 3. Sélectionnez "Consommation horaire" 61 | 4. Cliquez sur Date de début et cherchez la date la plus ancienne 62 | 5. Cliquez sur Télécharger mes données 63 | 6. Revenez plus tard sur la page "Mes téléchargements". La génération du fichier n'est pas immédiate 64 | 7. Quand une nouvelle ligne apparaît sur cette page, cliquez sur la flèche pour télécharger 65 | 66 | ### Depuis le site de TotalEnergies 67 | 1. Depuis le site de TotalEnergies [https://www.totalenergies.fr/clients/ma-conso](https://www.totalenergies.fr/clients/ma-conso) 68 | 2. Cliquez sur "Électricité" 69 | 3. Sélectionnez "Heure", par défaut vous serez sur "Echéancier" 70 | 4. Cliquez sur le bouton Télécharger, cela va télécharger les données depuis la mise en place de votre Linky, dans une limite de 3 ans 71 | 72 | ### Depuis le site de Strasbourg Electricité 73 | 1. Depuis le site de [Strasbourg Electricité Réseaux](https://maconsolinky.strasbourg-electricite-reseaux.fr) 74 | 2. Cliquez sur "Courbe de charge". 75 | 3. Choisissez, si possible, une période d'au moins 1 an via le bouton "Personnalisé". 76 | 4. Cliquez sur "Exporter les données" 77 | 5. Utilisez le fichier (sans le renommer) : "export_courbe_charges.csv" 78 | 79 | ### Depuis votre export HomeAssistant 80 | HomeAssistant est une plateforme de domotique Open-Source. 81 | Certains outils permettent un export de la consommation au quart d'heure. 82 | Vérifiez que votre export s'appelle bien history.csv. 83 | 84 | ### Accéder à ce comparateur 85 | Vos données seront traitées en local, aucune donnée ne sera envoyée vers un serveur. 86 | Vous pouvez accéder à l'outil depuis cette url : [http://jc144.github.io/EDF_Simulateur_Prix](http://jc144.github.io/EDF_Simulateur_Prix) 87 | **Ou** vous pouvez le télécharger pour une utilisation hors ligne : 88 | 1. Téléchargez ce projet en cliquant sur le bouton code puis "Download zip" 89 | ![Comment récupérer le projet](https://user-images.githubusercontent.com/1168432/216541398-0d862d3f-30d6-4b08-9e79-7e3d5a1cdfef.png) 90 | 2. Dézippez-le 91 | 3. Double-cliquez sur le fichier index.html. Il devrait s'ouvrir dans votre navigateur. 92 | 93 | ### Utiliser ce comparateur 94 | 1. Cliquez sur parcourir et sélectionnez votre fichier 95 | * Pour EDF : "mes-puissances-atteintes-30min-XXXXX-YYYYY.csv" **(Ne modifiez pas le nom du fichier!)** 96 | * Pour Ennedis : "Enedis_Conso_Heure_DATEDEBUT-DATEFIN_XXXXX.csv" **(Ne modifiez pas le nom du fichier!)** 97 | 2. A partir de là, vous pouvez choisir les différentes tarifications que vous voulez expérimenter ! 98 | 99 | ## A propos de l'auteur 100 | [Jean-Christophe VASSELON](https://www.linkedin.com/in/jvasselon/) 101 | -------------------------------------------------------------------------------- /scripts/calculator.js: -------------------------------------------------------------------------------- 1 | const abonnements = []; 2 | var calculator = { 3 | getTarif: function (puissance, data, grille) { 4 | const monthsData = []; 5 | 6 | let abonnement = grille.prices.find((t) => t.puissance == puissance); 7 | 8 | if (abonnement) { 9 | let currentMonth = 0; 10 | let currentYear = 0; 11 | 12 | let monthData = {}; 13 | for (let day = 0; day < data.length; day++) { 14 | let date = data[day].date.split("/"); 15 | currentYear = parseInt(date[0]); 16 | 17 | if (date[1] != currentMonth) { 18 | if (monthData.days) { 19 | sumMonthData(monthData); 20 | } 21 | currentMonth = date[1]; 22 | monthData = {}; 23 | monthData.month = currentMonth; 24 | monthData.year = currentYear; 25 | monthData.firstDayDate = new Date(currentYear, +currentMonth - 1, 1); 26 | monthData.days = []; 27 | monthData.hasErrors = false; 28 | monthData.numberOfDaysInMonth = new Date(currentYear, +currentMonth, 0).getDate(); 29 | monthData.aboPriceByDay = abonnement.abonnement / monthData.numberOfDaysInMonth; 30 | 31 | monthsData.push(monthData); 32 | } 33 | 34 | 35 | let dayData = { 36 | date: data[day].date, 37 | hours: [] 38 | }; 39 | dayData.consoHC = 0; 40 | dayData.priceHC = 0; 41 | dayData.consoHP = 0; 42 | dayData.priceHP = 0; 43 | 44 | //On définit le pas de consommation pour chaque jour. 45 | //Si on a 48 valeurs, on est à la demi-heure, 96 pour le quart d'heure, etc... 46 | const step = Math.floor(data[day].hours.length / 24); 47 | 48 | //Si on a un pas de 0 on a sûrement moins de 24 tranches de remontées 49 | //La journée sera faussée, on la marque en erreur 50 | if (step == 0) { 51 | dayData.conso = NaN; 52 | dayData.price = NaN; 53 | } 54 | else { 55 | // pour une journée donnée, parcours la listes heures et consommations 56 | data[day].hours.forEach((hourLine) => { 57 | 58 | const splittedHour = hourLine[0].split(":"); 59 | 60 | let hourData = { 61 | time: { hour: parseInt(splittedHour[0]), minute: parseInt(splittedHour[1]) }, 62 | conso: parseInt(hourLine[1]) / step 63 | }; 64 | if (isNaN(hourData.conso)) { 65 | hourData.hasErrors = true; 66 | } 67 | 68 | const dayType = grille.getDayType(dayData, hourData.time); 69 | // 00:00:00 est converti en 24:00:00 pour le calcul du type de jour 70 | // On reconverti à une heure réelle pour le calcul des HC/HP 71 | const realHour = hourData.time.hour == 24 ? 0 : hourData.time.hour; 72 | const realTime = { hour: realHour, minute: hourData.time.minute }; 73 | if (grille.hc.some(range => isHC(realTime, range.start, range.end))) { 74 | hourData.type = dayType + " HC"; 75 | const prixKwh = abonnement[dayType].prixKwhHC; 76 | hourData.price = (((hourData.conso / 1000) * prixKwh) / 100); 77 | if (!isNaN(hourData.price)) { 78 | dayData.priceHC += hourData.price; 79 | } 80 | if (!isNaN(hourData.conso)) { 81 | dayData.consoHC += hourData.conso; 82 | } 83 | } 84 | else { 85 | hourData.type = dayType + " HP"; 86 | const prixKwh = abonnement[dayType].prixKwhHP; 87 | hourData.price = (((hourData.conso / 1000) * prixKwh) / 100); 88 | if (!isNaN(hourData.price)) { 89 | dayData.priceHP += hourData.price; 90 | } 91 | if (!isNaN(hourData.conso)) { 92 | dayData.consoHP += hourData.conso; 93 | } 94 | } 95 | 96 | dayData.hours.push(hourData); 97 | }); 98 | 99 | dayData.conso = dayData.hours.filter(m => !isNaN(m.conso)).reduce((a, b) => a + b.conso, 0); 100 | dayData.price = dayData.hours.filter(m => !isNaN(m.price)).reduce((a, b) => a + b.price, 0) + monthData.aboPriceByDay; 101 | } 102 | monthData.days.push(dayData); 103 | } 104 | 105 | sumMonthData(monthData); 106 | } 107 | 108 | return monthsData; 109 | }, 110 | 111 | calculateTarifForPeriod: function (monthsData, dateBegin, dateEnd) { 112 | let tarifForPeriod = { 113 | conso: 0, 114 | price: 0, 115 | months: [] 116 | }; 117 | 118 | //On prend tous les mois entre la date de début et de fin 119 | let months = monthsData.filter(m => m.firstDayDate >= dateBegin && m.firstDayDate <= dateEnd); 120 | 121 | tarifForPeriod.conso = months.filter(m => !isNaN(m.conso)).reduce((a, b) => a + b.conso, 0); 122 | tarifForPeriod.price = months.filter(m => !isNaN(m.price)).reduce((a, b) => a + b.price, 0); 123 | tarifForPeriod.months = months; 124 | 125 | return tarifForPeriod; 126 | } 127 | } 128 | 129 | function sumMonthData(monthData) { 130 | monthData.conso = monthData.days.filter(d => !isNaN(d.conso)).reduce((a, b) => a + b.conso, 0); 131 | monthData.price = monthData.days.filter(d => !isNaN(d.price)).reduce((a, b) => a + b.price, 0); 132 | const diffNumberOfDays = monthData.numberOfDaysInMonth - monthData.days.length; 133 | if (diffNumberOfDays > 0) { 134 | monthData.hasErrors = true; 135 | monthData.price += diffNumberOfDays * monthData.aboPriceByDay; 136 | } 137 | } 138 | 139 | function isHC(timeInformation, hcTimeBegin, hcTimeEnd) { 140 | begin = hcTimeBegin.hour + (hcTimeBegin.minute === 30 ? 0.5 : 0); 141 | end = hcTimeEnd.hour + (hcTimeEnd.minute === 30 ? 0.5 : 0); 142 | time = timeInformation.hour + (timeInformation.minute === 30 ? 0.5 : 0); 143 | 144 | if (timeInformation.hour === 0 && timeInformation.minute === 0) { 145 | time = 24; 146 | } 147 | 148 | const isHC = time > begin && time <= end; 149 | 150 | return isHC; 151 | } -------------------------------------------------------------------------------- /scripts/tarifs/engie/electHappyHeuresVertes1an.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "Engie - Happy Heures Vertes - 13h/15h - 1 an", 4 | lastUpdate: "2025-10-27", 5 | subscription_url: "https://particuliers.engie.fr/electricite.html", 6 | price_url: "https://particuliers.engie.fr/content/dam/pdf/fiches-descriptives/fiche-descriptive-elec-happy_heures-vertes-1-an.pdf", 7 | prices: [ 8 | { puissance: 6, abonnement: 192.07 / 12, bleu: { prixKwhHP: 24.480, prixKwhHC: 19.078 }, happy: { prixKwhHP: 3.598, prixKwhHC: 3.598 } }, 9 | { puissance: 9, abonnement: 242.53 / 12, bleu: { prixKwhHP: 24.480, prixKwhHC: 19.078 }, happy: { prixKwhHP: 3.598, prixKwhHC: 3.598 } }, 10 | { puissance: 12, abonnement: 291.41 / 12, bleu: { prixKwhHP: 24.480, prixKwhHC: 19.078 }, happy: { prixKwhHP: 3.598, prixKwhHC: 3.598 } }, 11 | { puissance: 15, abonnement: 337.85 / 12, bleu: { prixKwhHP: 24.480, prixKwhHC: 19.078 }, happy: { prixKwhHP: 3.598, prixKwhHC: 3.598 } }, 12 | { puissance: 18, abonnement: 385.57 / 12, bleu: { prixKwhHP: 24.480, prixKwhHC: 19.078 }, happy: { prixKwhHP: 3.598, prixKwhHC: 3.598 } }, 13 | { puissance: 24, abonnement: 486.36 / 12, bleu: { prixKwhHP: 24.480, prixKwhHC: 19.078 }, happy: { prixKwhHP: 3.598, prixKwhHC: 3.598 } }, 14 | { puissance: 30, abonnement: 580.09 / 12, bleu: { prixKwhHP: 24.480, prixKwhHC: 19.078 }, happy: { prixKwhHP: 3.598, prixKwhHC: 3.598 } }, 15 | { puissance: 36, abonnement: 674.39 / 12, bleu: { prixKwhHP: 24.480, prixKwhHC: 19.078 }, happy: { prixKwhHP: 3.598, prixKwhHC: 3.598 } } 16 | ], 17 | hc: [ 18 | { 19 | start: { hour: 0, minute: 0 }, 20 | end: { hour: 6, minute: 0 } 21 | }], 22 | happy: [{ 23 | start: { hour: 13, minute: 0 }, 24 | end: { hour: 15, minute: 0 } 25 | }], 26 | hasHCCustom: false, 27 | hasSpecialDaysCustom: false, 28 | specialDays: [], 29 | getDayType: function (day, time) { 30 | let dayType = "bleu"; 31 | const hour = time.hour; 32 | const minute = time.minute; 33 | const timeInMinutes = hour * 60 + minute; 34 | 35 | // Vérifier si on est dans les heures "happy" 36 | for (let range of this.happy) { 37 | const rangeStart = range.start.hour * 60 + range.start.minute; 38 | const rangeEnd = range.end.hour * 60 + range.end.minute; 39 | 40 | if (timeInMinutes >= rangeStart && timeInMinutes < rangeEnd) { 41 | dayType = "happy"; 42 | break; 43 | } 44 | } 45 | 46 | return dayType; 47 | } 48 | } 49 | ); 50 | 51 | abonnements.push( 52 | { 53 | name: "Engie - Happy Heures Vertes - 14h/16h - 1 an", 54 | lastUpdate: "2025-10-27", 55 | subscription_url: "https://particuliers.engie.fr/electricite.html", 56 | price_url: "https://particuliers.engie.fr/content/dam/pdf/fiches-descriptives/fiche-descriptive-elec-happy_heures-vertes-1-an.pdf", 57 | prices: [ 58 | { puissance: 6, abonnement: 192.07 / 12, bleu: { prixKwhHP: 24.480, prixKwhHC: 19.078 }, happy: { prixKwhHP: 3.598, prixKwhHC: 3.598 } }, 59 | { puissance: 9, abonnement: 242.53 / 12, bleu: { prixKwhHP: 24.480, prixKwhHC: 19.078 }, happy: { prixKwhHP: 3.598, prixKwhHC: 3.598 } }, 60 | { puissance: 12, abonnement: 291.41 / 12, bleu: { prixKwhHP: 24.480, prixKwhHC: 19.078 }, happy: { prixKwhHP: 3.598, prixKwhHC: 3.598 } }, 61 | { puissance: 15, abonnement: 337.85 / 12, bleu: { prixKwhHP: 24.480, prixKwhHC: 19.078 }, happy: { prixKwhHP: 3.598, prixKwhHC: 3.598 } }, 62 | { puissance: 18, abonnement: 385.57 / 12, bleu: { prixKwhHP: 24.480, prixKwhHC: 19.078 }, happy: { prixKwhHP: 3.598, prixKwhHC: 3.598 } }, 63 | { puissance: 24, abonnement: 486.36 / 12, bleu: { prixKwhHP: 24.480, prixKwhHC: 19.078 }, happy: { prixKwhHP: 3.598, prixKwhHC: 3.598 } }, 64 | { puissance: 30, abonnement: 580.09 / 12, bleu: { prixKwhHP: 24.480, prixKwhHC: 19.078 }, happy: { prixKwhHP: 3.598, prixKwhHC: 3.598 } }, 65 | { puissance: 36, abonnement: 674.39 / 12, bleu: { prixKwhHP: 24.480, prixKwhHC: 19.078 }, happy: { prixKwhHP: 3.598, prixKwhHC: 3.598 } } 66 | ], 67 | hc: [ 68 | { 69 | start: { hour: 0, minute: 0 }, 70 | end: { hour: 6, minute: 0 } 71 | }], 72 | happy: [{ 73 | start: { hour: 14, minute: 0 }, 74 | end: { hour: 16, minute: 0 } 75 | }], 76 | hasHCCustom: false, 77 | hasSpecialDaysCustom: false, 78 | specialDays: [], 79 | getDayType: function (day, time) { 80 | let dayType = "bleu"; 81 | const hour = time.hour; 82 | const minute = time.minute; 83 | const timeInMinutes = hour * 60 + minute; 84 | 85 | // Vérifier si on est dans les heures "happy" 86 | for (let range of this.happy) { 87 | const rangeStart = range.start.hour * 60 + range.start.minute; 88 | const rangeEnd = range.end.hour * 60 + range.end.minute; 89 | 90 | if (timeInMinutes >= rangeStart && timeInMinutes < rangeEnd) { 91 | dayType = "happy"; 92 | break; 93 | } 94 | } 95 | 96 | return dayType; 97 | } 98 | } 99 | ); 100 | 101 | abonnements.push( 102 | { 103 | name: "Engie - Happy Heures Vertes - 15h/17h - 1 an", 104 | lastUpdate: "2025-10-27", 105 | subscription_url: "https://particuliers.engie.fr/electricite.html", 106 | price_url: "https://particuliers.engie.fr/content/dam/pdf/fiches-descriptives/fiche-descriptive-elec-happy_heures-vertes-1-an.pdf", 107 | prices: [ 108 | { puissance: 6, abonnement: 192.07 / 12, bleu: { prixKwhHP: 24.480, prixKwhHC: 19.078 }, happy: { prixKwhHP: 3.598, prixKwhHC: 3.598 } }, 109 | { puissance: 9, abonnement: 242.53 / 12, bleu: { prixKwhHP: 24.480, prixKwhHC: 19.078 }, happy: { prixKwhHP: 3.598, prixKwhHC: 3.598 } }, 110 | { puissance: 12, abonnement: 291.41 / 12, bleu: { prixKwhHP: 24.480, prixKwhHC: 19.078 }, happy: { prixKwhHP: 3.598, prixKwhHC: 3.598 } }, 111 | { puissance: 15, abonnement: 337.85 / 12, bleu: { prixKwhHP: 24.480, prixKwhHC: 19.078 }, happy: { prixKwhHP: 3.598, prixKwhHC: 3.598 } }, 112 | { puissance: 18, abonnement: 385.57 / 12, bleu: { prixKwhHP: 24.480, prixKwhHC: 19.078 }, happy: { prixKwhHP: 3.598, prixKwhHC: 3.598 } }, 113 | { puissance: 24, abonnement: 486.36 / 12, bleu: { prixKwhHP: 24.480, prixKwhHC: 19.078 }, happy: { prixKwhHP: 3.598, prixKwhHC: 3.598 } }, 114 | { puissance: 30, abonnement: 580.09 / 12, bleu: { prixKwhHP: 24.480, prixKwhHC: 19.078 }, happy: { prixKwhHP: 3.598, prixKwhHC: 3.598 } }, 115 | { puissance: 36, abonnement: 674.39 / 12, bleu: { prixKwhHP: 24.480, prixKwhHC: 19.078 }, happy: { prixKwhHP: 3.598, prixKwhHC: 3.598 } } 116 | ], 117 | hc: [ 118 | { 119 | start: { hour: 0, minute: 0 }, 120 | end: { hour: 6, minute: 0 } 121 | }], 122 | happy: [{ 123 | start: { hour: 15, minute: 0 }, 124 | end: { hour: 17, minute: 0 } 125 | }], 126 | hasHCCustom: false, 127 | hasSpecialDaysCustom: false, 128 | specialDays: [], 129 | getDayType: function (day, time) { 130 | let dayType = "bleu"; 131 | const hour = time.hour; 132 | const minute = time.minute; 133 | const timeInMinutes = hour * 60 + minute; 134 | 135 | // Vérifier si on est dans les heures "happy" 136 | for (let range of this.happy) { 137 | const rangeStart = range.start.hour * 60 + range.start.minute; 138 | const rangeEnd = range.end.hour * 60 + range.end.minute; 139 | 140 | if (timeInMinutes >= rangeStart && timeInMinutes < rangeEnd) { 141 | dayType = "happy"; 142 | break; 143 | } 144 | } 145 | 146 | return dayType; 147 | } 148 | } 149 | ); 150 | 151 | 152 | -------------------------------------------------------------------------------- /scripts/tarifs/edf/zenWeekEnd.js: -------------------------------------------------------------------------------- 1 | abonnements.push({ 2 | name: "EDF - Zen Week-End", 3 | offer_type: "Marché", 4 | hasSpecialDaysCustom: false, 5 | lastUpdate: "2025-09-15", 6 | isCommunity: false, 7 | subscription_url: "https://particulier.edf.fr/fr/accueil/electricite-gaz/offres-electricite/offres-marche/electricite-weekend/zen-week-end.html", 8 | price_url: "https://particulier.edf.fr/content/dam/2-Actifs/Documents/Offres/grille-prix-zen-week-end.pdf", 9 | prices: [ 10 | { puissance: 3, abonnement: 11.73 }, 11 | { puissance: 6, abonnement: 15.47 }, 12 | { puissance: 9, abonnement: 19.39 }, 13 | { puissance: 12, abonnement: 23.32 }, 14 | { puissance: 15, abonnement: 27.06 }, 15 | { puissance: 18, abonnement: 30.76 }, 16 | { puissance: 24, abonnement: 38.79 }, 17 | { puissance: 30, abonnement: 46.44 }, 18 | { puissance: 36, abonnement: 54.29 } 19 | ].map(item => ({ 20 | ...item, 21 | bleu: { 22 | prixKwhHC: 20.28, 23 | }, 24 | weekend: { 25 | prixKwhHC: 15.27 26 | } 27 | })), 28 | hc: [{ 29 | start: { hour: 0, minute: 0 }, 30 | end: { hour: 24, minute: 0 } 31 | }], 32 | hasHCCustom: false, 33 | hasSpecialDaysCustom: false, 34 | specialDays: [0, 6], 35 | getDayType: function (day) { 36 | let dayType = "bleu"; 37 | 38 | const isoDate = new Date(day.date); 39 | const dayOfWeek = isoDate.getDay(); 40 | 41 | if (this.specialDays.includes(dayOfWeek)) { 42 | dayType = "weekend"; 43 | } 44 | 45 | return dayType; 46 | } 47 | }); 48 | 49 | abonnements.push({ 50 | name: "EDF - Zen Week-End HC", 51 | offer_type: "Marché", 52 | lastUpdate: "2025-09-15", 53 | isCommunity: false, 54 | subscription_url: "https://particulier.edf.fr/fr/accueil/electricite-gaz/offres-electricite/offres-marche/electricite-weekend/zen-week-end.html", 55 | price_url: "https://particulier.edf.fr/content/dam/2-Actifs/Documents/Offres/grille-prix-zen-week-end.pdf", 56 | prices: [ 57 | { puissance: 6, abonnement: 15.74 }, 58 | { puissance: 9, abonnement: 19.81 }, 59 | { puissance: 12, abonnement: 23.76 }, 60 | { puissance: 15, abonnement: 27.49 }, 61 | { puissance: 18, abonnement: 31.34 }, 62 | { puissance: 24, abonnement: 39.47 }, 63 | { puissance: 30, abonnement: 47.02 }, 64 | { puissance: 36, abonnement: 54.61 } 65 | ].map(item => ({ 66 | ...item, 67 | bleu: { 68 | prixKwhHP: 21.43, 69 | prixKwhHC: 16.08 70 | }, 71 | weekend: { 72 | prixKwhHP: 16.08, 73 | prixKwhHC: 16.08 74 | } 75 | })), 76 | hc: [{ 77 | start: { hour: 22, minute: 0 }, 78 | end: { hour: 24, minute: 0 } 79 | }, 80 | { 81 | start: { hour: 0, minute: 0 }, 82 | end: { hour: 6, minute: 0 } 83 | }], 84 | hasHCCustom: true, 85 | hasSpecialDaysCustom: false, 86 | specialDays: [0, 6], 87 | getDayType: function (day) { 88 | let dayType = "bleu"; 89 | 90 | const isoDate = new Date(day.date); 91 | const dayOfWeek = isoDate.getDay(); 92 | 93 | if (this.specialDays.includes(dayOfWeek)) { 94 | dayType = "weekend"; 95 | } 96 | 97 | return dayType; 98 | } 99 | }); 100 | 101 | abonnements.push({ 102 | name: "EDF - Zen Week-End Option Flex", 103 | offer_type: "Marché", 104 | lastUpdate: "2025-09-15", 105 | isCommunity: false, 106 | subscription_url: "https://particulier.edf.fr/fr/accueil/electricite-gaz/offres-electricite/offres-marche/electricite-weekend/zen-flex.html", 107 | price_url: "https://particulier.edf.fr/content/dam/2-Actifs/Documents/Offres/grille-prix-zen-week-end.pdf", 108 | prices: [ 109 | { puissance: 6, abonnement: 15.74 }, 110 | { puissance: 9, abonnement: 19.81 }, 111 | { puissance: 12, abonnement: 23.76 }, 112 | { puissance: 15, abonnement: 27.49 }, 113 | { puissance: 18, abonnement: 31.34 }, 114 | { puissance: 24, abonnement: 39.47 }, 115 | { puissance: 30, abonnement: 47.02 }, 116 | { puissance: 36, abonnement: 54.61 } 117 | ].map(item => ({ 118 | ...item, 119 | bleu: { 120 | prixKwhHC: 15.08, 121 | prixKwhHP: 20.81 122 | }, 123 | sobriete: { 124 | prixKwhHC: 20.81, 125 | prixKwhHP: 72.43 126 | } 127 | })), 128 | hc: [{ 129 | start: { hour: 0, minute: 0 }, 130 | end: { hour: 8, minute: 0 } 131 | }, 132 | { 133 | start: { hour: 13, minute: 0 }, 134 | end: { hour: 18, minute: 0 } 135 | }, 136 | { 137 | start: { hour: 20, minute: 0 }, 138 | end: { hour: 24, minute: 0 } 139 | }], 140 | hasHCCustom: false, 141 | hasSpecialDaysCustom: false, 142 | specialDays: [{ 143 | name: "sobriete", 144 | numberOfDays: 20, 145 | monthBegin: 10, 146 | monthEnd: 4, 147 | lastDays: [ 148 | "2021/01/05", 149 | "2021/01/06", 150 | "2020/01/07", 151 | "2020/01/20", 152 | "2020/01/21", 153 | "2020/01/22", 154 | "2020/01/23", 155 | "2020/01/24", 156 | "2020/01/29", 157 | "2020/02/05", 158 | "2020/02/06", 159 | "2020/02/19", 160 | "2020/03/02", 161 | "2020/03/03", 162 | "2020/03/04", 163 | "2020/03/05", 164 | "2020/03/06", 165 | "2020/12/02", 166 | "2020/12/07", 167 | "2020/12/08", 168 | "2021/01/06", 169 | "2021/01/07", 170 | "2021/01/08", 171 | "2021/01/11", 172 | "2021/01/12", 173 | "2021/01/13", 174 | "2021/01/15", 175 | "2021/01/18", 176 | "2021/01/25", 177 | "2021/01/26", 178 | "2021/01/27", 179 | "2021/02/08", 180 | "2021/02/09", 181 | "2021/02/10", 182 | "2021/02/11", 183 | "2021/11/29", 184 | "2021/12/13", 185 | "2021/12/14", 186 | "2021/12/15", 187 | "2021/12/20", 188 | "2022/01/06", 189 | "2022/01/07", 190 | "2022/01/08", 191 | "2022/01/09", 192 | "2022/01/10", 193 | "2022/01/11", 194 | "2022/01/12", 195 | "2022/01/13", 196 | "2022/01/14", 197 | "2022/01/17", 198 | "2022/01/18", 199 | "2022/01/19", 200 | "2022/01/20", 201 | "2022/01/21", 202 | "2022/01/24", 203 | "2022/01/25", 204 | "2022/12/08", 205 | "2022/12/12", 206 | "2022/12/13", 207 | "2022/12/14", 208 | "2023/11/29", 209 | "2023/12/06", 210 | "2023/12/15", 211 | "2023/12/18", 212 | "2023/12/20", 213 | "2023/12/21", 214 | "2023/12/22", 215 | "2024/01/08", 216 | "2024/01/09", 217 | "2024/01/10", 218 | "2024/01/11", 219 | "2024/01/12", 220 | "2024/01/15", 221 | "2024/01/16", 222 | "2024/01/19", 223 | "2024/03/04", 224 | "2024/03/06", 225 | "2024/03/07", 226 | "2024/12/03", 227 | "2024/12/09", 228 | "2024/12/10", 229 | "2024/12/11", 230 | "2024/12/12", 231 | "2024/12/13", 232 | "2024/12/16", 233 | "2024/12/17", 234 | "2024/12/20", 235 | "2025/01/02", 236 | "2025/01/03", 237 | "2025/01/10", 238 | "2025/01/13", 239 | "2025/01/14", 240 | "2025/01/15", 241 | "2025/01/16", 242 | "2025/01/17", 243 | "2025/01/20", 244 | "2025/01/21", 245 | "2025/01/22", 246 | "2025/02/04", 247 | "2025/02/07" 248 | ] 249 | }], 250 | getDayType: function (day) { 251 | let dayType = "bleu"; 252 | 253 | this.specialDays.forEach((specialDay) => { 254 | if (specialDay.lastDays.includes(day.date)) { 255 | dayType = specialDay.name; 256 | } 257 | }); 258 | 259 | return dayType; 260 | } 261 | }); 262 | -------------------------------------------------------------------------------- /scripts/tarifs/uem/serviceTempo.js: -------------------------------------------------------------------------------- 1 | abonnements.push({ 2 | "name": "UEM - Tempo", 3 | "offer_type": "TRV", 4 | "lastUpdate": "2025-01-04", 5 | "isCommunity": true, 6 | "subscription_url": "https://particuliers.uem-metz.fr/nos-offres-denergies/offre-delectricite/", 7 | "price_url": "https://particuliers.uem-metz.fr/wp-content/uploads/sites/2/2024/07/Tarif-bleu-particuliers.pdf", 8 | "prices": [ 9 | { "puissance": 9, "abonnement": 202.05/12, "bleu": { "prixKwhHP": 12.96, "prixKwhHC": 16.09 }, "blanc": { "prixKwhHP": 14.86, "prixKwhHC": 18.94 }, "rouge": { "prixKwhHP": 75.62, "prixKwhHC": 60.92 } }, 10 | { "puissance": 12, "abonnement": 244.05/12, "bleu": { "prixKwhHP": 12.96, "prixKwhHC": 16.09 }, "blanc": { "prixKwhHP": 14.86, "prixKwhHC": 18.94 }, "rouge": { "prixKwhHP": 75.62, "prixKwhHC": 60.92 } }, 11 | { "puissance": 15, "abonnement": 282.75/12, "bleu": { "prixKwhHP": 12.96, "prixKwhHC": 16.09 }, "blanc": { "prixKwhHP": 14.86, "prixKwhHC": 18.94 }, "rouge": { "prixKwhHP": 75.62, "prixKwhHC": 60.92 } }, 12 | { "puissance": 18, "abonnement": 321.21/12, "bleu": { "prixKwhHP": 12.96, "prixKwhHC": 16.09 }, "blanc": { "prixKwhHP": 14.86, "prixKwhHC": 18.94 }, "rouge": { "prixKwhHP": 75.62, "prixKwhHC": 60.92 } }, 13 | { "puissance": 24, "abonnement": 468.00/12, "bleu": { "prixKwhHP": 12.96, "prixKwhHC": 16.09 }, "blanc": { "prixKwhHP": 14.86, "prixKwhHC": 18.94 }, "rouge": { "prixKwhHP": 75.62, "prixKwhHC": 60.92 } } 14 | ], 15 | hc: [{ 16 | start: { hour: 0, minute: 0 }, 17 | end: { hour: 24, minute: 0 } 18 | }], 19 | hasHCCustom: false, 20 | hasSpecialDaysCustom: false, 21 | specialDays: [ 22 | { 23 | name: "rouge", 24 | numberOfDays: 22, 25 | monthBegin: 11, 26 | monthEnd: 3, 27 | lastDays: [ 28 | "2020/12/02", 29 | "2020/12/07", 30 | "2020/12/08", 31 | "2020/12/09", 32 | "2020/12/31", 33 | "2021/01/04", 34 | "2021/01/05", 35 | "2021/01/06", 36 | "2020/01/07", 37 | "2020/01/20", 38 | "2020/01/21", 39 | "2020/01/22", 40 | "2020/01/23", 41 | "2020/01/24", 42 | "2020/01/29", 43 | "2020/02/05", 44 | "2020/02/06", 45 | "2020/02/19", 46 | "2020/03/02", 47 | "2020/03/03", 48 | "2020/03/04", 49 | "2020/03/05", 50 | "2020/03/06", 51 | "2020/12/02", 52 | "2020/12/07", 53 | "2020/12/08", 54 | "2020/12/09", 55 | "2020/12/31", 56 | "2021/01/04", 57 | "2021/01/05", 58 | "2021/01/06", 59 | "2021/01/07", 60 | "2021/01/08", 61 | "2021/01/11", 62 | "2021/01/12", 63 | "2021/01/13", 64 | "2021/01/15", 65 | "2021/01/18", 66 | "2021/01/25", 67 | "2021/01/26", 68 | "2021/01/27", 69 | "2021/02/08", 70 | "2021/02/09", 71 | "2021/02/10", 72 | "2021/02/11", 73 | "2021/11/29", 74 | "2021/12/13", 75 | "2021/12/14", 76 | "2021/12/15", 77 | "2021/12/20", 78 | "2021/12/21", 79 | "2021/01/22", 80 | "2022/12/08", 81 | "2022/12/12", 82 | "2022/12/13", 83 | "2022/12/14", 84 | "2022/12/08", 85 | "2022/01/06", 86 | "2022/01/10", 87 | "2022/01/11", 88 | "2022/01/12", 89 | "2022/01/13", 90 | "2022/01/14", 91 | "2022/01/17", 92 | "2022/01/18", 93 | "2022/01/19", 94 | "2022/01/20", 95 | "2022/01/21", 96 | "2022/01/24", 97 | "2022/01/25", 98 | "2022/01/26", 99 | "2022/01/27", 100 | "2022/12/08", 101 | "2022/12/12", 102 | "2022/12/13", 103 | "2022/12/14", 104 | "2023/01/17", 105 | "2023/01/18", 106 | "2023/01/19", 107 | "2023/01/20", 108 | "2023/01/23", 109 | "2023/01/24", 110 | "2023/01/25", 111 | "2023/01/26", 112 | "2023/01/27", 113 | "2023/01/30", 114 | "2023/01/31", 115 | "2023/02/06", 116 | "2023/02/07", 117 | "2023/02/08", 118 | "2023/02/09", 119 | "2023/02/10", 120 | "2023/03/01", 121 | "2023/03/02", 122 | "2023/11/29", 123 | "2023/12/01", 124 | "2023/12/06", 125 | "2023/12/18", 126 | "2024/01/08", 127 | "2024/01/09", 128 | "2024/01/10", 129 | "2024/01/11", 130 | "2024/01/12", 131 | "2024/01/15", 132 | "2024/01/16", 133 | "2024/01/18", 134 | "2024/01/19", 135 | "2024/02/12", 136 | "2024/02/27", 137 | "2024/02/28", 138 | "2024/03/04", 139 | "2024/03/05", 140 | "2024/03/06", 141 | "2024/03/11", 142 | "2024/03/12", 143 | "2024/03/29", 144 | "2024/12/03", 145 | "2024/12/10", 146 | "2024/12/11", 147 | "2024/12/12", 148 | "2024/12/13", 149 | "2024/12/16", 150 | "2024/12/27", 151 | "2024/12/30" 152 | ] 153 | }, 154 | { 155 | name: "blanc", 156 | numberOfDays: 43, 157 | monthBegin: 10, 158 | monthEnd: 6, 159 | lastDays: [ 160 | "2020/11/23", 161 | "2020/11/24", 162 | "2020/11/25", 163 | "2020/11/26", 164 | "2020/11/30", 165 | "2020/12/01", 166 | "2020/12/03", 167 | "2020/12/04", 168 | "2020/12/05", 169 | "2020/12/10", 170 | "2020/12/11", 171 | "2020/12/15", 172 | "2020/12/17", 173 | "2020/12/28", 174 | "2020/12/29", 175 | "2020/12/30", 176 | "2021/01/01", 177 | "2021/01/02", 178 | "2021/01/09", 179 | "2021/01/14", 180 | "2021/01/16", 181 | "2021/01/19", 182 | "2021/01/22", 183 | "2021/01/23", 184 | "2021/02/01", 185 | "2021/02/04", 186 | "2021/02/05", 187 | "2021/02/12", 188 | "2021/02/13", 189 | "2021/02/15", 190 | "2021/02/16", 191 | "2021/03/04", 192 | "2021/03/08", 193 | "2021/03/09", 194 | "2021/03/15", 195 | "2021/03/16", 196 | "2021/03/17", 197 | "2021/03/18", 198 | "2021/03/19", 199 | "2021/03/22", 200 | "2021/03/23", 201 | "2021/03/24", 202 | "2021/04/06", 203 | "2021/11/23", 204 | "2021/11/24", 205 | "2021/11/25", 206 | "2021/11/26", 207 | "2021/11/30", 208 | "2021/12/01", 209 | "2021/12/02", 210 | "2021/12/03", 211 | "2021/12/06", 212 | "2021/12/07", 213 | "2021/12/08", 214 | "2021/12/09", 215 | "2021/12/11", 216 | "2021/12/16", 217 | "2021/12/17", 218 | "2022/01/05", 219 | "2022/01/07", 220 | "2022/01/15", 221 | "2022/01/22", 222 | "2022/01/28", 223 | "2022/01/31", 224 | "2022/02/02", 225 | "2022/02/03", 226 | "2022/02/07", 227 | "2022/02/08", 228 | "2022/02/09", 229 | "2022/02/10", 230 | "2022/02/11", 231 | "2022/02/23", 232 | "2022/02/25", 233 | "2022/02/28", 234 | "2022/03/01", 235 | "2022/03/02", 236 | "2022/03/03", 237 | "2022/03/07", 238 | "2022/03/08", 239 | "2022/04/04", 240 | "2022/04/05", 241 | "2022/04/06", 242 | "2022/04/14", 243 | "2022/05/24", 244 | "2022/05/30", 245 | "2022/05/31", 246 | "2022/11/29", 247 | "2022/11/30", 248 | "2022/12/01", 249 | "2022/12/02", 250 | "2022/12/05", 251 | "2022/12/06", 252 | "2022/12/07", 253 | "2022/12/09", 254 | "2022/12/10", 255 | "2022/12/15", 256 | "2022/12/16", 257 | "2022/12/17", 258 | "2023/01/16", 259 | "2023/01/21", 260 | "2023/01/28", 261 | "2023/02/01", 262 | "2023/02/02", 263 | "2023/02/03", 264 | "2023/02/04", 265 | "2023/02/11", 266 | "2023/02/13", 267 | "2023/02/14", 268 | "2023/02/15", 269 | "2023/02/16", 270 | "2023/02/22", 271 | "2023/02/23", 272 | "2023/02/24", 273 | "2023/02/27", 274 | "2023/02/28", 275 | "2023/03/03", 276 | "2023/03/06", 277 | "2023/03/07", 278 | "2023/04/04", 279 | "2023/04/05", 280 | "2023/04/06", 281 | "2023/04/07", 282 | "2023/04/13", 283 | "2023/04/25", 284 | "2023/04/26", 285 | "2023/06/07", 286 | "2023/06/08", 287 | "2023/06/09", 288 | "2023/06/12", 289 | "2023/11/22", 290 | "2023/11/27", 291 | "2023/11/28", 292 | "2023/11/30", 293 | "2023/12/02", 294 | "2023/12/05", 295 | "2023/12/07", 296 | "2023/12/08", 297 | "2023/12/14", 298 | "2023/12/15", 299 | "2023/12/16", 300 | "2023/12/19", 301 | "2024/01/04", 302 | "2024/01/05", 303 | "2024/01/06", 304 | "2024/01/13", 305 | "2024/01/17", 306 | "2024/01/20", 307 | "2024/01/26", 308 | "2024/01/29", 309 | "2024/01/30", 310 | "2024/01/31", 311 | "2024/02/01", 312 | "2024/02/02", 313 | "2024/02/05", 314 | "2024/02/13", 315 | "2024/02/19", 316 | "2024/02/20", 317 | "2024/02/23", 318 | "2024/02/24", 319 | "2024/02/26", 320 | "2024/02/29", 321 | "2024/03/07", 322 | "2024/03/08", 323 | "2024/03/13", 324 | "2024/03/26", 325 | "2024/04/10", 326 | "2024/11/14", 327 | "2024/11/15", 328 | "2024/11/20", 329 | "2024/11/21", 330 | "2024/11/22", 331 | "2024/11/28", 332 | "2024/12/04", 333 | "2024/12/09", 334 | "2024/12/14", 335 | "2024/12/17", 336 | "2024/12/20", 337 | "2024/12/23", 338 | "2024/12/24", 339 | "2024/12/26", 340 | "2024/12/28", 341 | "2024/12/31", 342 | "2025/01/04", 343 | "2025/01/07", 344 | "2025/01/08", 345 | "2025/01/09", 346 | "2025/01/11", 347 | "2025/01/18" 348 | ] 349 | } 350 | ], 351 | getDayType: function (day, time) { 352 | let dayType = "bleu"; 353 | let date = day.date; 354 | 355 | if (time.hour < 6) { 356 | // color is that of previous day 357 | let dateObj = new Date(day.date + " 12:00:00"); // JS doesn't have proper parsing routines 358 | dateObj.setDate(dateObj.getDate() - 1); 359 | date = dateObj.toISOString().split("T")[0].replace(/-/g, "/"); 360 | } 361 | 362 | this.specialDays.forEach((specialDay) => { 363 | if (specialDay.lastDays.includes(date)) { 364 | dayType = specialDay.name; 365 | } 366 | }); 367 | 368 | return dayType; 369 | } 370 | } 371 | ); 372 | -------------------------------------------------------------------------------- /scripts/tarifs/es/tempo.js: -------------------------------------------------------------------------------- 1 | abonnements.push({ 2 | name: "ES - Tempo", 3 | offer_type: "TRV", 4 | lastUpdate: "2024-02-01", 5 | subscription_url: "https://particuliers.es.fr/Offres-energies-services/Electricite-Gaz/Les-offres-electricite-d-ES/Tarif-Reglemente-electricite", 6 | price_url: "https://particuliers.es.fr/Media/Files/Part/Documentation-electricite/Tarif-reglemente-Fiche-descriptive-de-l-offre", 7 | prices: [ 8 | { 9 | puissance: 6, 10 | abonnement: 13.33, 11 | bleu: { 12 | prixKwhHP: 16.092, 13 | prixKwhHC: 12.96 14 | }, 15 | blanc: { 16 | prixKwhHP: 18.936, 17 | prixKwhHC: 14.856 18 | }, 19 | rouge: { 20 | prixKwhHP: 75.624, 21 | prixKwhHC: 15.684 22 | } 23 | }, 24 | { 25 | puissance: 9, 26 | abonnement: 16.72, 27 | bleu: { 28 | prixKwhHP: 16.092, 29 | prixKwhHC: 12.96 30 | }, 31 | blanc: { 32 | prixKwhHP: 18.936, 33 | prixKwhHC: 14.856 34 | }, 35 | rouge: { 36 | prixKwhHP: 75.624, 37 | prixKwhHC: 15.684 38 | } 39 | }, 40 | { 41 | puissance: 12, 42 | abonnement: 20.19, 43 | bleu: { 44 | prixKwhHP: 16.092, 45 | prixKwhHC: 12.96 46 | }, 47 | blanc: { 48 | prixKwhHP: 18.936, 49 | prixKwhHC: 14.856 50 | }, 51 | rouge: { 52 | prixKwhHP: 75.624, 53 | prixKwhHC: 15.684 54 | } 55 | }, 56 | { 57 | puissance: 15, 58 | abonnement: 23.39, 59 | bleu: { 60 | prixKwhHP: 16.092, 61 | prixKwhHC: 12.96 62 | }, 63 | blanc: { 64 | prixKwhHP: 18.936, 65 | prixKwhHC: 14.856 66 | }, 67 | rouge: { 68 | prixKwhHP: 75.624, 69 | prixKwhHC: 15.684 70 | } 71 | }, 72 | { 73 | puissance: 18, 74 | abonnement: 26.57, 75 | bleu: { 76 | prixKwhHP: 16.092, 77 | prixKwhHC: 12.96 78 | }, 79 | blanc: { 80 | prixKwhHP: 18.936, 81 | prixKwhHC: 14.856 82 | }, 83 | rouge: { 84 | prixKwhHP: 75.624, 85 | prixKwhHC: 15.684 86 | } 87 | }, 88 | { 89 | puissance: 30, 90 | abonnement: 40.16, 91 | bleu: { 92 | prixKwhHP: 16.092, 93 | prixKwhHC: 12.96 94 | }, 95 | blanc: { 96 | prixKwhHP: 18.936, 97 | prixKwhHC: 14.856 98 | }, 99 | rouge: { 100 | prixKwhHP: 75.624, 101 | prixKwhHC: 15.684 102 | } 103 | }, 104 | { 105 | puissance: 36, 106 | abonnement: 46.67, 107 | bleu: { 108 | prixKwhHP: 16.092, 109 | prixKwhHC: 12.96 110 | }, 111 | blanc: { 112 | prixKwhHP: 18.936, 113 | prixKwhHC: 14.856 114 | }, 115 | rouge: { 116 | prixKwhHP: 75.624, 117 | prixKwhHC: 15.684 118 | } 119 | }], 120 | hc: [{ 121 | start: {hour:22, minute:0}, 122 | end: {hour:24, minute:0} 123 | }, 124 | { 125 | start: {hour:0, minute:0}, 126 | end: {hour:6, minute:0} 127 | }], 128 | hasHCCustom: false, 129 | hasSpecialDaysCustom: false, 130 | specialDays: [{ 131 | name: "rouge", 132 | numberOfDays: 22, 133 | monthBegin: 11, 134 | monthEnd: 3, 135 | lastDays: [ 136 | "2020/12/02", 137 | "2020/12/07", 138 | "2020/12/08", 139 | "2020/12/09", 140 | "2020/12/31", 141 | "2021/01/04", 142 | "2021/01/05", 143 | "2021/01/06", 144 | "2020/01/07", 145 | "2020/01/20", 146 | "2020/01/21", 147 | "2020/01/22", 148 | "2020/01/23", 149 | "2020/01/24", 150 | "2020/01/29", 151 | "2020/02/05", 152 | "2020/02/06", 153 | "2020/02/19", 154 | "2020/03/02", 155 | "2020/03/03", 156 | "2020/03/04", 157 | "2020/03/05", 158 | "2020/03/06", 159 | "2020/12/02", 160 | "2020/12/07", 161 | "2020/12/08", 162 | "2020/12/09", 163 | "2020/12/31", 164 | "2021/01/04", 165 | "2021/01/05", 166 | "2021/01/06", 167 | "2021/01/07", 168 | "2021/01/08", 169 | "2021/01/11", 170 | "2021/01/12", 171 | "2021/01/13", 172 | "2021/01/15", 173 | "2021/01/18", 174 | "2021/01/25", 175 | "2021/01/26", 176 | "2021/01/27", 177 | "2021/02/08", 178 | "2021/02/09", 179 | "2021/02/10", 180 | "2021/02/11", 181 | "2021/11/29", 182 | "2021/12/13", 183 | "2021/12/14", 184 | "2021/12/15", 185 | "2021/12/20", 186 | "2021/12/21", 187 | "2021/01/22", 188 | "2022/12/08", 189 | "2022/12/12", 190 | "2022/12/13", 191 | "2022/12/14", 192 | "2022/12/08", 193 | "2022/01/06", 194 | "2022/01/10", 195 | "2022/01/11", 196 | "2022/01/12", 197 | "2022/01/13", 198 | "2022/01/14", 199 | "2022/01/17", 200 | "2022/01/18", 201 | "2022/01/19", 202 | "2022/01/20", 203 | "2022/01/21", 204 | "2022/01/24", 205 | "2022/01/25", 206 | "2022/01/26", 207 | "2022/01/27", 208 | "2022/12/08", 209 | "2022/12/12", 210 | "2022/12/13", 211 | "2022/12/14", 212 | "2023/01/17", 213 | "2023/01/18", 214 | "2023/01/19", 215 | "2023/01/20", 216 | "2023/01/23", 217 | "2023/01/24", 218 | "2023/01/25", 219 | "2023/01/26", 220 | "2023/01/27", 221 | "2023/01/30", 222 | "2023/01/31", 223 | "2023/02/06", 224 | "2023/02/07", 225 | "2023/02/08", 226 | "2023/02/09", 227 | "2023/02/10", 228 | "2023/03/01", 229 | "2023/03/02", 230 | "2023/11/29", 231 | "2023/12/01", 232 | "2023/12/06", 233 | "2023/12/18", 234 | "2024/01/08", 235 | "2024/01/09", 236 | "2024/01/10", 237 | "2024/01/11", 238 | "2024/01/12", 239 | "2024/01/15", 240 | "2024/01/16", 241 | "2024/01/18", 242 | "2024/01/19", 243 | "2024/02/12", 244 | "2024/02/27", 245 | "2024/02/28", 246 | "2024/03/04", 247 | "2024/03/05", 248 | "2024/03/06", 249 | "2024/03/11", 250 | "2024/03/12", 251 | "2024/03/29" 252 | ] 253 | }, 254 | { 255 | name: "blanc", 256 | numberOfDays: 43, 257 | monthBegin: 10, 258 | monthEnd: 6, 259 | lastDays: [ 260 | "2020/11/23", 261 | "2020/11/24", 262 | "2020/11/25", 263 | "2020/11/26", 264 | "2020/11/30", 265 | "2020/12/01", 266 | "2020/12/03", 267 | "2020/12/04", 268 | "2020/12/05", 269 | "2020/12/10", 270 | "2020/12/11", 271 | "2020/12/15", 272 | "2020/12/17", 273 | "2020/12/28", 274 | "2020/12/29", 275 | "2020/12/30", 276 | "2021/01/01", 277 | "2021/01/02", 278 | "2021/01/09", 279 | "2021/01/14", 280 | "2021/01/16", 281 | "2021/01/19", 282 | "2021/01/22", 283 | "2021/01/23", 284 | "2021/02/01", 285 | "2021/02/04", 286 | "2021/02/05", 287 | "2021/02/12", 288 | "2021/02/13", 289 | "2021/02/15", 290 | "2021/02/16", 291 | "2021/03/04", 292 | "2021/03/08", 293 | "2021/03/09", 294 | "2021/03/15", 295 | "2021/03/16", 296 | "2021/03/17", 297 | "2021/03/18", 298 | "2021/03/19", 299 | "2021/03/22", 300 | "2021/03/23", 301 | "2021/03/24", 302 | "2021/04/06", 303 | "2021/11/23", 304 | "2021/11/24", 305 | "2021/11/25", 306 | "2021/11/26", 307 | "2021/11/30", 308 | "2021/12/01", 309 | "2021/12/02", 310 | "2021/12/03", 311 | "2021/12/06", 312 | "2021/12/07", 313 | "2021/12/08", 314 | "2021/12/09", 315 | "2021/12/11", 316 | "2021/12/16", 317 | "2021/12/17", 318 | "2022/01/05", 319 | "2022/01/07", 320 | "2022/01/15", 321 | "2022/01/22", 322 | "2022/01/28", 323 | "2022/01/31", 324 | "2022/02/02", 325 | "2022/02/03", 326 | "2022/02/07", 327 | "2022/02/08", 328 | "2022/02/09", 329 | "2022/02/10", 330 | "2022/02/11", 331 | "2022/02/23", 332 | "2022/02/25", 333 | "2022/02/28", 334 | "2022/03/01", 335 | "2022/03/02", 336 | "2022/03/03", 337 | "2022/03/07", 338 | "2022/03/08", 339 | "2022/04/04", 340 | "2022/04/05", 341 | "2022/04/06", 342 | "2022/04/14", 343 | "2022/05/24", 344 | "2022/05/30", 345 | "2022/05/31", 346 | "2022/11/29", 347 | "2022/11/30", 348 | "2022/12/01", 349 | "2022/12/02", 350 | "2022/12/05", 351 | "2022/12/06", 352 | "2022/12/07", 353 | "2022/12/09", 354 | "2022/12/10", 355 | "2022/12/15", 356 | "2022/12/16", 357 | "2022/12/17", 358 | "2023/01/16", 359 | "2023/01/21", 360 | "2023/01/28", 361 | "2023/02/01", 362 | "2023/02/02", 363 | "2023/02/03", 364 | "2023/02/04", 365 | "2023/02/11", 366 | "2023/02/13", 367 | "2023/02/14", 368 | "2023/02/15", 369 | "2023/02/16", 370 | "2023/02/22", 371 | "2023/02/23", 372 | "2023/02/24", 373 | "2023/02/27", 374 | "2023/02/28", 375 | "2023/03/03", 376 | "2023/03/06", 377 | "2023/03/07", 378 | "2023/04/04", 379 | "2023/04/05", 380 | "2023/04/06", 381 | "2023/04/07", 382 | "2023/04/13", 383 | "2023/04/25", 384 | "2023/04/26", 385 | "2023/06/07", 386 | "2023/06/08", 387 | "2023/06/09", 388 | "2023/06/12", 389 | "2023/11/22", 390 | "2023/11/27", 391 | "2023/11/28", 392 | "2023/11/30", 393 | "2023/12/02", 394 | "2023/12/05", 395 | "2023/12/07", 396 | "2023/12/08", 397 | "2023/12/14", 398 | "2023/12/15", 399 | "2023/12/16", 400 | "2023/12/19", 401 | "2024/01/04", 402 | "2024/01/05", 403 | "2024/01/06", 404 | "2024/01/13", 405 | "2024/01/17", 406 | "2024/01/20", 407 | "2024/01/26", 408 | "2024/01/29", 409 | "2024/01/30", 410 | "2024/01/31", 411 | "2024/02/01", 412 | "2024/02/02", 413 | "2024/02/05", 414 | "2024/02/13", 415 | "2024/02/19", 416 | "2024/02/20", 417 | "2024/02/23", 418 | "2024/02/24", 419 | "2024/02/26", 420 | "2024/02/29", 421 | "2024/03/07", 422 | "2024/03/08", 423 | "2024/03/13", 424 | "2024/03/26", 425 | "2024/04/10", 426 | "2024/11/14", 427 | "2024/11/15", 428 | "2024/11/20", 429 | "2024/11/21", 430 | "2024/11/22", 431 | "2024/11/28", 432 | "2024/12/04", 433 | "2024/12/09", 434 | "2024/12/14", 435 | "2024/12/17", 436 | "2024/12/20", 437 | "2024/12/23", 438 | "2024/12/24", 439 | "2024/12/26", 440 | "2024/12/28", 441 | "2024/12/31", 442 | "2025/01/04", 443 | "2025/01/07", 444 | "2025/01/08", 445 | "2025/01/09", 446 | "2025/01/11", 447 | "2025/01/18" 448 | ] 449 | }], 450 | getDayType: function (day, time) { 451 | let dayType = "bleu"; 452 | let date = day.date; 453 | 454 | if (time.hour < 6) { 455 | // color is that of previous day 456 | let dateObj = new Date(day.date + " 12:00:00"); // JS doesn't have proper parsing routines 457 | dateObj.setDate(dateObj.getDate() - 1); 458 | date = dateObj.toISOString().split("T")[0].replace(/-/g, "/"); 459 | } 460 | 461 | this.specialDays.forEach((specialDay) => { 462 | if (specialDay.lastDays.includes(date)) { 463 | dayType = specialDay.name; 464 | } 465 | }); 466 | 467 | return dayType; 468 | } 469 | }); 470 | -------------------------------------------------------------------------------- /scripts/tarifs/edf/bleu.js: -------------------------------------------------------------------------------- 1 | abonnements.push( 2 | { 3 | name: "EDF - Bleu", 4 | offer_type: "TRV", 5 | lastUpdate: "2025-08-01", 6 | isCommunity: false, 7 | subscription_url: "https://particulier.edf.fr/fr/accueil/electricite-gaz/offres-electricite/tarif-bleu.html", 8 | price_url: "https://particulier.edf.fr/content/dam/2-Actifs/Documents/Offres/Grille_prix_Tarif_Bleu.pdf", 9 | prices: [ 10 | { puissance: 3, abonnement: 11.73 }, 11 | { puissance: 6, abonnement: 15.47 }, 12 | { puissance: 9, abonnement: 19.39 }, 13 | { puissance: 12, abonnement: 23.32 }, 14 | { puissance: 15, abonnement: 27.06 }, 15 | { puissance: 18, abonnement: 30.76 }, 16 | { puissance: 24, abonnement: 38.79 }, 17 | { puissance: 30, abonnement: 46.44 }, 18 | { puissance: 36, abonnement: 54.29 } 19 | ].map(item => ({ 20 | ...item, 21 | bleu: { prixKwhHC: 19.52 } 22 | })), 23 | hc: [{ 24 | start: { hour: 0, minute: 0 }, 25 | end: { hour: 24, minute: 0 } 26 | }], 27 | hasHCCustom: false, 28 | hasSpecialDaysCustom: false, 29 | specialDays: [], 30 | getDayType: function (day) { 31 | let dayType = "bleu"; 32 | return dayType; 33 | } 34 | } 35 | ); 36 | 37 | abonnements.push( 38 | { 39 | name: "EDF - Bleu Heures Creuses", 40 | offer_type: "TRV", 41 | lastUpdate: "2025-08-01", 42 | isCommunity: false, 43 | subscription_url: "https://particulier.edf.fr/fr/accueil/electricite-gaz/offres-electricite/tarif-bleu.html", 44 | price_url: "https://particulier.edf.fr/content/dam/2-Actifs/Documents/Offres/Grille_prix_Tarif_Bleu.pdf", 45 | prices: [ 46 | { puissance: 6, abonnement: 15.74 }, 47 | { puissance: 9, abonnement: 19.81 }, 48 | { puissance: 12, abonnement: 23.76 }, 49 | { puissance: 15, abonnement: 27.49 }, 50 | { puissance: 18, abonnement: 31.34 }, 51 | { puissance: 24, abonnement: 39.47 }, 52 | { puissance: 30, abonnement: 47.02 }, 53 | { puissance: 36, abonnement: 54.61 } 54 | ].map(item => ({ 55 | ...item, 56 | bleu: { prixKwhHP: 20.81, prixKwhHC: 16.35 } 57 | })), 58 | hc: [], 59 | hasHCCustom: true, 60 | hasSpecialDaysCustom: false, 61 | specialDays: [], 62 | getDayType: function (day) { 63 | let dayType = "bleu"; 64 | return dayType; 65 | } 66 | }); 67 | 68 | abonnements.push({ 69 | name: "EDF - Tempo", 70 | offer_type: "TRV", 71 | isCommunity: false, 72 | lastUpdate: "2025-08-01", 73 | subscription_url: "https://particulier.edf.fr/fr/accueil/gestion-contrat/options/tempo/details.html", 74 | price_url: "https://particulier.edf.fr/content/dam/2-Actifs/Documents/Offres/Grille_prix_Tarif_Bleu.pdf", 75 | prices: [ 76 | { puissance: 6, abonnement: 15.50 }, 77 | { puissance: 9, abonnement: 19.49 }, 78 | { puissance: 12, abonnement: 23.38 }, 79 | { puissance: 15, abonnement: 27.01 }, 80 | { puissance: 18, abonnement: 30.79 }, 81 | { puissance: 30, abonnement: 46.31 }, 82 | { puissance: 36, abonnement: 54.43 } 83 | ].map(item => ({ 84 | ...item, 85 | bleu: { 86 | prixKwhHC: 12.32, 87 | prixKwhHP: 14.94 88 | }, 89 | blanc: { 90 | prixKwhHC: 13.91, 91 | prixKwhHP: 17.30 92 | }, 93 | rouge: { 94 | prixKwhHC: 14.60, 95 | prixKwhHP: 64.68 96 | } 97 | })), 98 | hc: [{ 99 | start: { hour: 22, minute: 0 }, 100 | end: { hour: 24, minute: 0 } 101 | }, 102 | { 103 | start: { hour: 0, minute: 0 }, 104 | end: { hour: 6, minute: 0 } 105 | }], 106 | hasHCCustom: false, 107 | hasSpecialDaysCustom: false, 108 | specialDays: [{ 109 | name: "rouge", 110 | numberOfDays: 22, 111 | monthBegin: 11, 112 | monthEnd: 3, 113 | lastDays: [ 114 | "2020/12/02", 115 | "2020/12/07", 116 | "2020/12/08", 117 | "2020/12/09", 118 | "2020/12/31", 119 | "2021/01/04", 120 | "2021/01/05", 121 | "2021/01/06", 122 | "2020/01/07", 123 | "2020/01/20", 124 | "2020/01/21", 125 | "2020/01/22", 126 | "2020/01/23", 127 | "2020/01/24", 128 | "2020/01/29", 129 | "2020/02/05", 130 | "2020/02/06", 131 | "2020/02/19", 132 | "2020/03/02", 133 | "2020/03/03", 134 | "2020/03/04", 135 | "2020/03/05", 136 | "2020/03/06", 137 | "2020/12/02", 138 | "2020/12/07", 139 | "2020/12/08", 140 | "2020/12/09", 141 | "2020/12/31", 142 | "2021/01/04", 143 | "2021/01/05", 144 | "2021/01/06", 145 | "2021/01/07", 146 | "2021/01/08", 147 | "2021/01/11", 148 | "2021/01/12", 149 | "2021/01/13", 150 | "2021/01/15", 151 | "2021/01/18", 152 | "2021/01/25", 153 | "2021/01/26", 154 | "2021/01/27", 155 | "2021/02/08", 156 | "2021/02/09", 157 | "2021/02/10", 158 | "2021/02/11", 159 | "2021/11/29", 160 | "2021/12/13", 161 | "2021/12/14", 162 | "2021/12/15", 163 | "2021/12/20", 164 | "2021/12/21", 165 | "2021/01/22", 166 | "2022/12/08", 167 | "2022/12/12", 168 | "2022/12/13", 169 | "2022/12/14", 170 | "2022/12/08", 171 | "2022/01/06", 172 | "2022/01/10", 173 | "2022/01/11", 174 | "2022/01/12", 175 | "2022/01/13", 176 | "2022/01/14", 177 | "2022/01/17", 178 | "2022/01/18", 179 | "2022/01/19", 180 | "2022/01/20", 181 | "2022/01/21", 182 | "2022/01/24", 183 | "2022/01/25", 184 | "2022/01/26", 185 | "2022/01/27", 186 | "2022/12/08", 187 | "2022/12/12", 188 | "2022/12/13", 189 | "2022/12/14", 190 | "2023/01/17", 191 | "2023/01/18", 192 | "2023/01/19", 193 | "2023/01/20", 194 | "2023/01/23", 195 | "2023/01/24", 196 | "2023/01/25", 197 | "2023/01/26", 198 | "2023/01/27", 199 | "2023/01/30", 200 | "2023/01/31", 201 | "2023/02/06", 202 | "2023/02/07", 203 | "2023/02/08", 204 | "2023/02/09", 205 | "2023/02/10", 206 | "2023/03/01", 207 | "2023/03/02", 208 | "2023/11/29", 209 | "2023/12/01", 210 | "2023/12/06", 211 | "2023/12/18", 212 | "2024/01/08", 213 | "2024/01/09", 214 | "2024/01/10", 215 | "2024/01/11", 216 | "2024/01/12", 217 | "2024/01/15", 218 | "2024/01/16", 219 | "2024/01/18", 220 | "2024/01/19", 221 | "2024/02/12", 222 | "2024/02/27", 223 | "2024/02/28", 224 | "2024/03/04", 225 | "2024/03/05", 226 | "2024/03/06", 227 | "2024/03/11", 228 | "2024/03/12", 229 | "2024/03/29", 230 | "2024/12/03", 231 | "2024/12/10", 232 | "2024/12/11", 233 | "2024/12/12", 234 | "2024/12/13", 235 | "2024/12/16", 236 | "2024/12/27", 237 | "2024/12/30", 238 | "2025/01/02", 239 | "2025/01/03", 240 | "2025/01/10", 241 | "2025/01/13", 242 | "2025/01/14", 243 | "2025/01/15", 244 | "2025/01/16", 245 | "2025/01/17", 246 | "2025/01/20", 247 | "2025/01/21", 248 | "2025/01/22", 249 | "2025/01/30", 250 | "2025/01/31", 251 | "2025/02/03" 252 | ] 253 | }, 254 | { 255 | name: "blanc", 256 | numberOfDays: 43, 257 | monthBegin: 10, 258 | monthEnd: 6, 259 | lastDays: [ 260 | "2020/11/23", 261 | "2020/11/24", 262 | "2020/11/25", 263 | "2020/11/26", 264 | "2020/11/30", 265 | "2020/12/01", 266 | "2020/12/03", 267 | "2020/12/04", 268 | "2020/12/05", 269 | "2020/12/10", 270 | "2020/12/11", 271 | "2020/12/15", 272 | "2020/12/17", 273 | "2020/12/28", 274 | "2020/12/29", 275 | "2020/12/30", 276 | "2021/01/01", 277 | "2021/01/02", 278 | "2021/01/09", 279 | "2021/01/14", 280 | "2021/01/16", 281 | "2021/01/19", 282 | "2021/01/22", 283 | "2021/01/23", 284 | "2021/02/01", 285 | "2021/02/04", 286 | "2021/02/05", 287 | "2021/02/12", 288 | "2021/02/13", 289 | "2021/02/15", 290 | "2021/02/16", 291 | "2021/03/04", 292 | "2021/03/08", 293 | "2021/03/09", 294 | "2021/03/15", 295 | "2021/03/16", 296 | "2021/03/17", 297 | "2021/03/18", 298 | "2021/03/19", 299 | "2021/03/22", 300 | "2021/03/23", 301 | "2021/03/24", 302 | "2021/04/06", 303 | "2021/11/23", 304 | "2021/11/24", 305 | "2021/11/25", 306 | "2021/11/26", 307 | "2021/11/30", 308 | "2021/12/01", 309 | "2021/12/02", 310 | "2021/12/03", 311 | "2021/12/06", 312 | "2021/12/07", 313 | "2021/12/08", 314 | "2021/12/09", 315 | "2021/12/11", 316 | "2021/12/16", 317 | "2021/12/17", 318 | "2022/01/05", 319 | "2022/01/07", 320 | "2022/01/15", 321 | "2022/01/22", 322 | "2022/01/28", 323 | "2022/01/31", 324 | "2022/02/02", 325 | "2022/02/03", 326 | "2022/02/07", 327 | "2022/02/08", 328 | "2022/02/09", 329 | "2022/02/10", 330 | "2022/02/11", 331 | "2022/02/23", 332 | "2022/02/25", 333 | "2022/02/28", 334 | "2022/03/01", 335 | "2022/03/02", 336 | "2022/03/03", 337 | "2022/03/07", 338 | "2022/03/08", 339 | "2022/04/04", 340 | "2022/04/05", 341 | "2022/04/06", 342 | "2022/04/14", 343 | "2022/05/24", 344 | "2022/05/30", 345 | "2022/05/31", 346 | "2022/11/29", 347 | "2022/11/30", 348 | "2022/12/01", 349 | "2022/12/02", 350 | "2022/12/05", 351 | "2022/12/06", 352 | "2022/12/07", 353 | "2022/12/09", 354 | "2022/12/10", 355 | "2022/12/15", 356 | "2022/12/16", 357 | "2022/12/17", 358 | "2023/01/16", 359 | "2023/01/21", 360 | "2023/01/28", 361 | "2023/02/01", 362 | "2023/02/02", 363 | "2023/02/03", 364 | "2023/02/04", 365 | "2023/02/11", 366 | "2023/02/13", 367 | "2023/02/14", 368 | "2023/02/15", 369 | "2023/02/16", 370 | "2023/02/22", 371 | "2023/02/23", 372 | "2023/02/24", 373 | "2023/02/27", 374 | "2023/02/28", 375 | "2023/03/03", 376 | "2023/03/06", 377 | "2023/03/07", 378 | "2023/04/04", 379 | "2023/04/05", 380 | "2023/04/06", 381 | "2023/04/07", 382 | "2023/04/13", 383 | "2023/04/25", 384 | "2023/04/26", 385 | "2023/06/07", 386 | "2023/06/08", 387 | "2023/06/09", 388 | "2023/06/12", 389 | "2023/11/22", 390 | "2023/11/27", 391 | "2023/11/28", 392 | "2023/11/30", 393 | "2023/12/02", 394 | "2023/12/05", 395 | "2023/12/07", 396 | "2023/12/08", 397 | "2023/12/14", 398 | "2023/12/15", 399 | "2023/12/16", 400 | "2023/12/19", 401 | "2024/01/04", 402 | "2024/01/05", 403 | "2024/01/06", 404 | "2024/01/13", 405 | "2024/01/17", 406 | "2024/01/20", 407 | "2024/01/26", 408 | "2024/01/29", 409 | "2024/01/30", 410 | "2024/01/31", 411 | "2024/02/01", 412 | "2024/02/02", 413 | "2024/02/05", 414 | "2024/02/13", 415 | "2024/02/19", 416 | "2024/02/20", 417 | "2024/02/23", 418 | "2024/02/24", 419 | "2024/02/26", 420 | "2024/02/29", 421 | "2024/03/07", 422 | "2024/03/08", 423 | "2024/03/13", 424 | "2024/03/26", 425 | "2024/04/10", 426 | "2024/11/14", 427 | "2024/11/15", 428 | "2024/11/20", 429 | "2024/11/21", 430 | "2024/11/22", 431 | "2024/11/28", 432 | "2024/12/04", 433 | "2024/12/09", 434 | "2024/12/14", 435 | "2024/12/17", 436 | "2024/12/20", 437 | "2024/12/23", 438 | "2024/12/24", 439 | "2024/12/26", 440 | "2024/12/28", 441 | "2024/12/31", 442 | "2025/01/04", 443 | "2025/01/07", 444 | "2025/01/08", 445 | "2025/01/09", 446 | "2025/01/11", 447 | "2025/01/18", 448 | "2025/01/23", 449 | "2025/01/29", 450 | "2025/02/01", 451 | "2025/02/04", 452 | "2025/02/05", 453 | "2025/02/06", 454 | "2025/02/07", 455 | "2025/02/08", 456 | "2025/02/10", 457 | "2025/02/11", 458 | "2025/02/12", 459 | "2025/02/13", 460 | "2025/02/14", 461 | "2025/02/17", 462 | "2025/02/18", 463 | "2025/02/19", 464 | "2025/02/28", 465 | "2025/03/03", 466 | "2025/03/04", 467 | "2025/03/12", 468 | "2025/03/13" 469 | ] 470 | }], 471 | getDayType: function (day, time) { 472 | let dayType = "bleu"; 473 | let date = day.date; 474 | 475 | if (time.hour < 6) { 476 | // color is that of previous day 477 | let dateObj = new Date(day.date + " 12:00:00"); // JS doesn't have proper parsing routines 478 | dateObj.setDate(dateObj.getDate() - 1); 479 | date = dateObj.toISOString().split("T")[0].replace(/-/g, "/"); 480 | } 481 | 482 | this.specialDays.forEach((specialDay) => { 483 | if (specialDay.lastDays.includes(date)) { 484 | dayType = specialDay.name; 485 | } 486 | }); 487 | 488 | return dayType; 489 | } 490 | }); 491 | 492 | 493 | --------------------------------------------------------------------------------