Kosten und Einsparungen in TypeScript berechnen

Mit TypeScript können Sie eigene Berechnungen erstellen. Anhand des Codes unten auf dieser Seite können Sie ermitteln, ob es langfristig günstiger ist, Solarmodule zu installieren oder Ihre Stromrechnung so zu begleichen, wie Sie es bisher getan haben.

Hier eine allgemeine Aufschlüsselung, wie die Kosten für Solarmodule im Code ermittelt werden.

Teil 1: Systemanforderungen und -einrichtung

Definieren Sie zuerst Ihren aktuellen Stromverbrauch und Ihre Rechnungen:

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

Geben Sie als Nächstes Ihre Pläne für das Sonnensystem ein:

  • Wie viele Module? (panelsCount)
  • Wie leistungsstark sind die Module? (panelCapacityWatts)
  • Wie viel kostet die Installation? (installationCostPerWatt)
  • Gibt es Rabatte auf das System? (solarIncentives)

Teil 2: Berechnungen

Anhand der eingegebenen Werte berechnet der Code Folgendes:

  • yearlyProductionAcKwh: Die jährliche Strommenge, die Ihre Solarmodule insgesamt erzeugen können.
  • totalCostWithSolar: Die Stromkosten über viele Jahre mit Solarmodulen.
  • totalCostWithoutSolar: Die Stromkosten über viele Jahre ohne Solarmodule.

Teil 3: Ergebnisse

Der Code gibt Ihnen außerdem folgende Informationen:

  • savings: Die Differenz zwischen den Kosten mit und ohne Solarmodule.
  • breakEvenYear: Wie viele Jahre vergehen, bis die Kosten für die Solarmodule 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`);