Bạn có thể tự tạo các phép tính bằng TypeScript. Mã ở cuối trang này giúp bạn xác định xem về lâu dài, việc lắp đặt tấm năng lượng mặt trời có rẻ hơn hay không, hoặc bạn có nên tiếp tục thanh toán hoá đơn tiền điện như hiện tại hay không.
Sau đây là thông tin tổng quan về cách mã xác định chi phí tấm năng lượng mặt trời.
Phần 1: Yêu cầu hệ thống và thiết lập
Trước tiên, hãy xác định mức sử dụng điện và hoá đơn tiền điện hiện tại:
- Mỗi tháng bạn sử dụng bao nhiêu điện? (
monthlyKwhEnergyConsumption) - Chi phí cho lượng điện đó là bao nhiêu? (
energyCostPerKwh)
Tiếp theo, hãy nhập kế hoạch lắp đặt hệ thống năng lượng mặt trời:
- Số lượng tấm pin? (
panelsCount) - Công suất của các tấm pin? (
panelCapacityWatts) - Chi phí lắp đặt? (
installationCostPerWatt) - Có chiết khấu cho hệ thống không? (
solarIncentives)
Phần 2: Phép tính
Dựa trên các giá trị đã nhập, mã sẽ tính toán:
yearlyProductionAcKwh: Tổng lượng điện hàng năm mà các tấm pin năng lượng mặt trời có thể tạo ra.totalCostWithSolar: Chi phí điện trong nhiều năm khi có tấm pin năng lượng mặt trời.totalCostWithoutSolar: Chi phí điện trong nhiều năm khi không có tấm pin năng lượng mặt trời.
Phần 3: Kết quả
Mã cũng cho bạn biết những thông tin sau:
savings: Mức chênh lệch giữa chi phí khi có và không có tấm pin năng lượng mặt trời.breakEvenYear: Số năm cho đến khi chi phí tấm pin năng lượng mặt trời bằng với mức tiết kiệm điện.
Mã mẫu
// 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`);