يمكنك إنشاء العمليات الحسابية الخاصة بك باستخدام TypeScript. الكود الموجود في الجزء السفلي من في تحديد ما إذا كانت أرخص تكلفة تثبيت على المدى الطويل الألواح الشمسية أو الاستمرار في دفع فاتورة الكهرباء كما هي.
في ما يلي تفاصيل عالية المستوى حول كيفية تحديد الرمز لتكلفة الألواح الشمسية.
الجزء 1: احتياجات النظام والإعداد
أولاً، حدد استهلاكك الحالي للكهرباء وفواتيرك:
- كم تستخدم من الكهرباء كل شهر؟ (
monthlyKwhEnergyConsumption
) - كم تبلغ تكلفة هذه الكهرباء؟ (
energyCostPerKwh
)
بعد ذلك، أدخل خطط النظام الشمسي:
- كم عدد اللوحات؟ (
panelsCount
) - ما مدى قوة هذه اللوحات؟ (
panelCapacityWatts
) - ما هي تكلفة التركيب؟ (
installationCostPerWatt
) - هل هناك خصومات على النظام؟ (
solarIncentives
)
الجزء 2: العمليات الحسابية
استنادًا إلى القيم التي تم إدخالها، يحسب الرمز ما يلي:
yearlyProductionAcKwh
: إجمالي الكهرباء السنوية التي يمكن أن تستخدمها الألواح الشمسية الإنشاء.totalCostWithSolar
: تكلفة الكهرباء على مدار سنوات عديدة باستخدام الطاقة الشمسية واللوحات.totalCostWithoutSolar
: تكلفة الكهرباء على مدى سنوات عديدة بدون وألواح الطاقة الشمسية.
الجزء 3: النتائج
يخبرك الرمز أيضًا بما يلي:
savings
: الفرق بين تكلفة الألواح الشمسية وبدونهاbreakEvenYear
: عدد السنوات المتبقية حتى تساوي تكلفة الألواح الشمسية توفير في استهلاك الكهرباء.
مثال على الرمز
// 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`);