From 7f216699ac8b5dc873e809e99e49a035b61e8c6e Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Mon, 27 Feb 2023 14:30:27 -0600 Subject: [PATCH] wip --- src/data/energy.ts | 49 +++++++++++++++++++++++++++++++++++++++------- 1 file changed, 42 insertions(+), 7 deletions(-) diff --git a/src/data/energy.ts b/src/data/energy.ts index d253d63d0d..ba92ff2ba8 100644 --- a/src/data/energy.ts +++ b/src/data/energy.ts @@ -193,6 +193,11 @@ export interface EnergyPreferencesValidation { device_consumption: EnergyValidationIssue[][]; } +export interface EnergyInfoAndCO2Signal { + energyInfo: EnergyInfo; + co2SignalEntity: string | undefined; +} + export const getEnergyInfo = (hass: HomeAssistant) => hass.callWS({ type: "energy/info", @@ -332,13 +337,9 @@ export const getReferencedStatisticIds = ( return statIDs; }; -const getEnergyData = async ( - hass: HomeAssistant, - prefs: EnergyPreferences, - start: Date, - end?: Date, - compare?: boolean -): Promise => { +const getEnergyInfoAndCO2Signal = async ( + hass: HomeAssistant +): Promise => { const [configEntries, info] = await Promise.all([ getConfigEntries(hass, { domain: "co2signal" }), getEnergyInfo(hass), @@ -366,6 +367,40 @@ const getEnergyData = async ( } } + return { + energyInfo: info, + co2SignalEntity: co2SignalEntity, + }; +}; + +const getEnergyData = async ( + hass: HomeAssistant, + prefs: EnergyPreferences, + start: Date, + end?: Date, + compare?: boolean +): Promise => { + const energyInfoAndCO2Signal = await getEnergyInfoAndCO2Signal(hass); + return getEnergyDataWithInfo( + hass, + energyInfoAndCO2Signal, + prefs, + start, + end, + compare + ); +}; + +const getEnergyDataWithInfo = async ( + hass: HomeAssistant, + energyInfoAndCO2Signal: EnergyInfoAndCO2Signal, + prefs: EnergyPreferences, + start: Date, + end?: Date, + compare?: boolean +): Promise => { + const info = energyInfoAndCO2Signal.energyInfo; + const co2SignalEntity = energyInfoAndCO2Signal.co2SignalEntity; const consumptionStatIDs: string[] = []; for (const source of prefs.energy_sources) { // grid source