From d4cbdab4a36ef866cbbb952163d1cd05267028b1 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Thu, 29 Jul 2021 20:29:49 +0200 Subject: [PATCH] Fix energy calculations (#9647) * Fix calculations * max.. not min... --- .../hui-energy-carbon-consumed-gauge-card.ts | 5 ++- .../energy/hui-energy-distribution-card.ts | 31 ++++++------------- 2 files changed, 12 insertions(+), 24 deletions(-) diff --git a/src/panels/lovelace/cards/energy/hui-energy-carbon-consumed-gauge-card.ts b/src/panels/lovelace/cards/energy/hui-energy-carbon-consumed-gauge-card.ts index f682895585..84a2e54206 100644 --- a/src/panels/lovelace/cards/energy/hui-energy-carbon-consumed-gauge-card.ts +++ b/src/panels/lovelace/cards/energy/hui-energy-carbon-consumed-gauge-card.ts @@ -102,10 +102,9 @@ class HuiEnergyCarbonGaugeCard extends LitElement implements LovelaceCard { const totalEnergyConsumed = totalGridConsumption + - (totalSolarProduction || 0) - - (totalGridReturned || 0); + Math.max(0, (totalSolarProduction || 0) - (totalGridReturned || 0)); - value = round((highCarbonEnergy / totalEnergyConsumed) * 100); + value = round((1 - highCarbonEnergy / totalEnergyConsumed) * 100); } return html` diff --git a/src/panels/lovelace/cards/energy/hui-energy-distribution-card.ts b/src/panels/lovelace/cards/energy/hui-energy-distribution-card.ts index 286940fd58..a3b27745f6 100644 --- a/src/panels/lovelace/cards/energy/hui-energy-distribution-card.ts +++ b/src/panels/lovelace/cards/energy/hui-energy-distribution-card.ts @@ -104,17 +104,17 @@ class HuiEnergyDistrubutionCard extends LitElement implements LovelaceCard { ) || 0; } - const totalConsumption = - totalGridConsumption + - (totalSolarProduction || 0) - - (productionReturnedToGrid || 0); + const solarConsumption = Math.max( + 0, + (totalSolarProduction || 0) - (productionReturnedToGrid || 0) + ); + + const totalHomeConsumption = totalGridConsumption + solarConsumption; let homeSolarCircumference: number | undefined; if (hasSolarProduction) { - const homePctSolar = - ((totalSolarProduction || 0) - (productionReturnedToGrid || 0)) / - totalConsumption; - homeSolarCircumference = CIRCLE_CIRCUMFERENCE * homePctSolar; + homeSolarCircumference = + CIRCLE_CIRCUMFERENCE * (solarConsumption / totalHomeConsumption); } let lowCarbonConsumption: number | undefined; @@ -142,10 +142,8 @@ class HuiEnergyDistrubutionCard extends LitElement implements LovelaceCard { if (highCarbonConsumption !== null) { lowCarbonConsumption = totalGridConsumption - highCarbonConsumption; - const homePctGridHighCarbon = highCarbonConsumption / totalConsumption; - homeHighCarbonCircumference = - CIRCLE_CIRCUMFERENCE * homePctGridHighCarbon; + CIRCLE_CIRCUMFERENCE * (highCarbonConsumption / totalHomeConsumption); homeLowCarbonCircumference = CIRCLE_CIRCUMFERENCE - @@ -154,15 +152,6 @@ class HuiEnergyDistrubutionCard extends LitElement implements LovelaceCard { } } - homeSolarCircumference = CIRCLE_CIRCUMFERENCE * 0.1; - - homeHighCarbonCircumference = CIRCLE_CIRCUMFERENCE * 0.8; - - homeLowCarbonCircumference = - CIRCLE_CIRCUMFERENCE - - (homeSolarCircumference || 0) - - homeHighCarbonCircumference; - return html`
@@ -252,7 +241,7 @@ class HuiEnergyDistrubutionCard extends LitElement implements LovelaceCard { })}" > - ${formatNumber(totalConsumption, this.hass.locale, { + ${formatNumber(totalHomeConsumption, this.hass.locale, { maximumFractionDigits: 1, })} kWh