Calcular custos e economias no TypeScript

Você pode criar seus próprios cálculos usando o TypeScript. O código na parte de baixo desta página ajuda a determinar se, a longo prazo, é mais barato instalar painéis solares ou continuar pagando a conta de energia elétrica.

Confira um detalhamento geral de como o código determina os custos dos painéis solares.

Parte 1: necessidades e configuração do sistema

Primeiro, defina o uso e as contas de energia elétrica atuais:

  • Quanta eletricidade você usa por mês? (monthlyKwhEnergyConsumption)
  • Quanto custa essa eletricidade? (energyCostPerKwh)

Em seguida, insira seus planos de sistema solar:

  • Quantos painéis? (panelsCount)
  • Qual a potência dos painéis? (panelCapacityWatts)
  • Quanto custa a instalação? (installationCostPerWatt)
  • Tem algum desconto no sistema? (solarIncentives)

Parte 2: cálculos

Com base nos valores inseridos, o código calcula:

  • yearlyProductionAcKwh: a eletricidade total anual que seus painéis solares podem gerar.
  • totalCostWithSolar: o custo da eletricidade ao longo de muitos anos com painéis solares.
  • totalCostWithoutSolar: o custo da eletricidade ao longo de muitos anos sem painéis solares.

Parte 3: resultados

O código também informa o seguinte:

  • savings: a diferença entre o custo com e sem painéis solares.
  • breakEvenYear: Quantos anos até que o custo dos painéis solares seja igual à economia de eletricidade.

Exemplo de código

// Solar configuration, from buildingInsights.solarPotential.solarPanelConfigs
let panelsCount
= 20;
let yearlyEnergyDcKwh
= 12000;

// Basic settings
let monthlyAverageEnergyBill
: number = 300;
let energyCostPerKwh
= 0.31;
let panelCapacityWatts
= 400;
let solarIncentives
: number = 7000;
let installationCostPerWatt
: number = 4.0;
let installationLifeSpan
: number = 20;

// Advanced settings
let dcToAcDerate
= 0.85;
let efficiencyDepreciationFactor
= 0.995;
let costIncreaseFactor
= 1.022;
let discountRate
= 1.04;

// Solar installation
let installationSizeKw
: number = (panelsCount * panelCapacityWatts) / 1000;
let installationCostTotal
: number = installationCostPerWatt * installationSizeKw * 1000;

// Energy consumption
let monthlyKwhEnergyConsumption
: number = monthlyAverageEnergyBill / energyCostPerKwh;
let yearlyKwhEnergyConsumption
: number = monthlyKwhEnergyConsumption * 12;

// Energy produced for installation life span
let initialAcKwhPerYear
: number = yearlyEnergyDcKwh * dcToAcDerate;
let yearlyProductionAcKwh
: number[] = [...Array(installationLifeSpan).keys()].map(
 
(year) => initialAcKwhPerYear * efficiencyDepreciationFactor ** year,
);

// Cost with solar for installation life span
let yearlyUtilityBillEstimates
: number[] = yearlyProductionAcKwh.map(
 
(yearlyKwhEnergyProduced, year) => {
   
const billEnergyKwh = yearlyKwhEnergyConsumption - yearlyKwhEnergyProduced;
   
const billEstimate =
     
(billEnergyKwh * energyCostPerKwh * costIncreaseFactor ** year) / discountRate ** year;
   
return Math.max(billEstimate, 0); // bill cannot be negative
 
},
);
let remainingLifetimeUtilityBill
: number = yearlyUtilityBillEstimates.reduce((x, y) => x + y, 0);
let totalCostWithSolar
: number =
  installationCostTotal
+ remainingLifetimeUtilityBill - solarIncentives;
console
.log(`Cost with solar: $${totalCostWithSolar.toFixed(2)}`);

// Cost without solar for installation life span
let yearlyCostWithoutSolar
: number[] = [...Array(installationLifeSpan).keys()].map(
 
(year) => (monthlyAverageEnergyBill * 12 * costIncreaseFactor ** year) / discountRate ** year,
);
let totalCostWithoutSolar
: number = yearlyCostWithoutSolar.reduce((x, y) => x + y, 0);
console
.log(`Cost without solar: $${totalCostWithoutSolar.toFixed(2)}`);

// Savings with solar for installation life span
let savings
: number = totalCostWithoutSolar - totalCostWithSolar;
console
.log(`Savings: $${savings.toFixed(2)} in ${installationLifeSpan} years`);