ניתן ליצור חישובים משלכם באמצעות 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`);