Kosten und Einsparungen in TypeScript berechnen

Sie können Ihre eigenen Berechnungen mit TypeScript erstellen. Mit dem Code am Ende dieser Seite können Sie feststellen, ob es langfristig günstiger ist, Solarmodule zu installieren oder Ihre Stromrechnung weiterhin unverändert zu bezahlen.

Hier sehen Sie einen groben Überblick darüber, wie der Code die Kosten für Solarmodule bestimmt.

Teil 1: Systemanforderungen und Einrichtung

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

  • Wie viel Strom verbrauchst du jeden Monat? (monthlyKwhEnergyConsumption)
  • Wie viel kostet dieser Strom? (energyCostPerKwh)

Gib als Nächstes die Pläne für dein Sonnensystem ein:

  • Wie viele Panels? (panelsCount)
  • Wie leistungsstark sind die Infobereiche? (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 jährliche Stromverbrauch, den Ihre Solarmodule insgesamt erzeugen können.
  • totalCostWithSolar: Die Kosten des Stroms über viele Jahre mit Solarmodulen.
  • totalCostWithoutSolar: Die Stromkosten über viele Jahre ohne Solarmodule.

Teil 3: Ergebnisse

Der Code sagt Ihnen auch Folgendes:

  • savings: Die Differenz zwischen den Kosten mit und ohne Solarmodule.
  • breakEvenYear: Anzahl der Jahre, bis die Kosten für Solarmodule den Einsparungen bei den Stromeinsparungen entsprechen.

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