Kosten und Einsparungen in TypeScript berechnen

Sie können Ihre eigenen Berechnungen mit TypeScript erstellen. Anhand des Codes am Ende dieser Seite kannst du feststellen, ob die Installation von Solarmodulen auf lange Sicht günstiger ist oder ob du deine Stromrechnung unverändert bezahlst.

Im Folgenden finden Sie eine grobe Aufstellung, 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 Strom, den Ihre Solarkollektoren generieren können.
  • totalCostWithSolar: Die Kosten für Strom mit Solarmodulen über viele Jahre hinweg.
  • totalCostWithoutSolar: Die Kosten für Strom über viele Jahre ohne Sonnenkollektoren.

Teil 3: Ergebnisse

Der Code enthält außerdem folgende Informationen:

  • savings: Die Differenz zwischen den Kosten mit und ohne Solarmodule.
  • breakEvenYear: gibt an, wie lange es dauert, bis die Kosten für Solarmodule die Einsparungen bei Strom 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`);