Kosten und Einsparungen in TypeScript berechnen

Entwickler im Europäischen Wirtschaftsraum (EWR)

Sie können eigene Berechnungen mit TypeScript erstellen. Mit dem Code unten auf dieser Seite können Sie ermitteln, ob es langfristig günstiger ist, Sonnenkollektoren zu installieren oder weiterhin Ihre Stromrechnung wie bisher zu bezahlen.

Hier ist 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 verbrauchst du pro Monat? (monthlyKwhEnergyConsumption)
  • Wie viel kostet dieser Strom? (energyCostPerKwh)

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

  • Wie viele Panels? (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 gesamte jährliche Strommenge, die Ihre Solarmodule 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 auch Folgendes an:

  • savings: Die Differenz zwischen den Kosten mit und ohne Solarmodule.
  • breakEvenYear: Die Anzahl der Jahre, bis die Kosten für Solarmodule den Stromverbrauch ausgleichen.

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