From 92611f46f45de4d51daaf30ace348154a1712044 Mon Sep 17 00:00:00 2001 From: Petar Petrov Date: Thu, 27 Nov 2025 17:44:56 +0200 Subject: [PATCH] Fix water sankey calculation to include total supply from sources (#28191) --- .../cards/water/hui-water-sankey-card.ts | 29 ++++++++++++++----- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/src/panels/lovelace/cards/water/hui-water-sankey-card.ts b/src/panels/lovelace/cards/water/hui-water-sankey-card.ts index 61bccb87ae..79718cfd16 100644 --- a/src/panels/lovelace/cards/water/hui-water-sankey-card.ts +++ b/src/panels/lovelace/cards/water/hui-water-sankey-card.ts @@ -98,17 +98,32 @@ class HuiWaterSankeyCard const nodes: Node[] = []; const links: Link[] = []; - // Calculate total water consumption from all devices - let totalWaterConsumption = 0; - prefs.device_consumption_water.forEach((device) => { + // Calculate total water consumption from all sources or devices + const totalDownstreamConsumption = prefs.device_consumption_water.reduce( + (total, device) => { + const value = + device.stat_consumption in this._data!.stats + ? calculateStatisticSumGrowth( + this._data!.stats[device.stat_consumption] + ) || 0 + : 0; + return total + value; + }, + 0 + ); + const totalSourceSupply = waterSources.reduce((total, source) => { const value = - device.stat_consumption in this._data!.stats + source.stat_energy_from in this._data!.stats ? calculateStatisticSumGrowth( - this._data!.stats[device.stat_consumption] + this._data!.stats[source.stat_energy_from] ) || 0 : 0; - totalWaterConsumption += value; - }); + return total + value; + }, 0); + const totalWaterConsumption = Math.max( + totalDownstreamConsumption, + totalSourceSupply + ); // Create home/consumption node const homeNode: Node = {