Kosten und Einsparungen in TypeScript berechnen

Sie können Ihre eigenen Berechnungen mit TypeScript erstellen. Der Code unten auf der können Sie feststellen, ob die Installation auf lange Sicht kostengünstiger ist, Sonnenkollektoren oder die Stromrechnung bezahlen, wie sie sind.

Im Folgenden finden Sie eine allgemeine Aufschlüsselung, wie die Kosten für Solarmodule durch den Code bestimmt werden.

Teil 1: Systemanforderungen und -einrichtung

Definieren Sie zunächst Ihren aktuellen Stromverbrauch und Ihre aktuellen Stromrechnungen:

  • Wie viel Strom verbrauchen Sie jeden Monat? (monthlyKwhEnergyConsumption)
  • Wie viel kostet dieser Strom? (energyCostPerKwh)

Gib als Nächstes deine Pläne für das Sonnensystem ein:

  • Wie viele Bereiche? (panelsCount)
  • Wie leistungsstark sind die Panels? (panelCapacityWatts)
  • Wie viel kostet die Installation? (installationCostPerWatt)
  • Gibt es Rabatte im System? (solarIncentives)

Teil 2: Berechnungen

Anhand der eingegebenen Werte berechnet der Code Folgendes:

  • yearlyProductionAcKwh: Der gesamte jährliche Stromverbrauch, den Sie mit Ihren Solarmodulen erzielen können generieren.
  • totalCostWithSolar: Die Stromkosten mit Solarenergie über viele Jahre hinweg Steuerfeldern.
  • totalCostWithoutSolar: Die Stromkosten über viele Jahre hinweg ohne Sonnenkollektoren.

Teil 3: Ergebnisse

Der Code enthält außerdem folgende Informationen:

  • savings: Die Differenz zwischen den Kosten mit und ohne Solarmodule.
  • breakEvenYear: Wie lange dauert es, bis die Kosten für Solarmodule gleich Stromeinsparungen.

Beispielcode

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