TypeScript'te maliyetleri ve tasarrufları hesaplama

TypeScript kullanarak kendi hesaplamalarınızı oluşturabilirsiniz. Bu sayfanın altındaki kod, güneş paneli montajının uzun vadede daha ucuz mu olacağını yoksa elektrik faturanızı olduğu gibi ödemeye mi devam edeceğinizi belirlemenize yardımcı olur.

Kodun güneş paneli maliyetlerini nasıl belirlediğinin üst düzey dökümü aşağıda verilmiştir.

1. Bölüm: Sistem ihtiyaçları ve kurulumu

Öncelikle mevcut elektrik kullanımınızı ve faturalarınızı tanımlayın:

  • Her ay ne kadar elektrik kullanıyorsunuz? (monthlyKwhEnergyConsumption)
  • O elektriğin maliyeti ne kadar? (energyCostPerKwh)

Sonra güneş sistemi planlarınızı girin:

  • Kaç panel var? (panelsCount)
  • Paneller ne kadar güçlü? (panelCapacityWatts)
  • Kurulumun maliyeti ne kadardır? (installationCostPerWatt)
  • Sistemde indirim var mı? (solarIncentives)

2. Bölüm: Hesaplamalar

Kod, girilen değerlere bağlı olarak şunları hesaplar:

  • yearlyProductionAcKwh: Güneş panellerinizin üretebileceği yıllık toplam elektrik miktarı.
  • totalCostWithSolar: Güneş panelleri ile uzun yıllar içinde elde edilen elektrik maliyeti.
  • totalCostWithoutSolar: Güneş panelleri kullanılmayan yıllar boyunca elektrik maliyeti.

Bölüm 3: Sonuçlar

Kod ayrıca şunları da belirtir:

  • savings: Güneş paneli içeren ve içermeyen maliyetler arasındaki fark.
  • breakEvenYear: Güneş panellerinin maliyetinin elektrik tasarrufuna eşit olmasına kaç yıl var?

Örnek kod

// 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`);