Spaces:
Sleeping
Sleeping
| """Quick start example for Solar Intelligence Platform. | |
| Demonstrates the core workflow: | |
| 1. Load solar data (synthetic) | |
| 2. Analyze irradiance patterns | |
| 3. Estimate energy production | |
| 4. Find optimal panel orientation | |
| 5. Run financial analysis | |
| 6. Generate AI insights | |
| """ | |
| import logging | |
| from solar_intelligence.ai_engine import SolarAIEngine | |
| from solar_intelligence.data_loader import generate_synthetic_solar_data | |
| from solar_intelligence.energy_estimator import EnergyEstimator | |
| from solar_intelligence.financial import FinancialAnalyzer | |
| from solar_intelligence.orientation_simulator import OrientationSimulator | |
| from solar_intelligence.solar_analysis import SolarAnalyzer | |
| logger = logging.getLogger(__name__) | |
| def main(): | |
| """Run the complete Solar Intelligence analysis pipeline.""" | |
| logging.basicConfig( | |
| level=logging.INFO, | |
| format="%(asctime)s [%(levelname)s] %(name)s: %(message)s", | |
| ) | |
| # --- Configuration --- | |
| CITY = "New Delhi" | |
| LAT, LON = 28.6139, 77.2090 | |
| logger.info("Solar Potential Intelligence Platform") | |
| logger.info("Location: %s (%.4f N, %.4f E)", CITY, LAT, LON) | |
| # --- 1. Load Data --- | |
| logger.info("1. Loading solar radiation data...") | |
| ds = generate_synthetic_solar_data(lat=LAT, lon=LON, start_year=2020, end_year=2023) | |
| logger.info(" Dataset: %d days, %s...", len(ds.time), list(ds.data_vars)[:5]) | |
| # --- 2. Solar Analysis --- | |
| logger.info("2. Analyzing solar irradiance...") | |
| analyzer = SolarAnalyzer(dataset=ds, latitude=LAT, longitude=LON) | |
| summary = analyzer.summary() | |
| logger.info(" Average daily GHI: %.2f kWh/m2/day", summary["average_daily_ghi"]) | |
| logger.info(" Annual solar energy: %.0f kWh/m2/year", summary["annual_solar_energy_kwh_m2"]) | |
| logger.info(" Best month: %s (%.2f)", summary["best_month"], summary["best_month_ghi"]) | |
| logger.info(" Worst month: %s (%.2f)", summary["worst_month"], summary["worst_month_ghi"]) | |
| # --- 3. Energy Estimation --- | |
| logger.info("3. Estimating energy production...") | |
| estimator = EnergyEstimator( | |
| panel_efficiency=0.20, | |
| panel_area=1.7, | |
| num_panels=20, | |
| system_losses=0.14, | |
| ) | |
| energy_summary = estimator.system_summary(ds) | |
| logger.info(" System capacity: %.1f kW", energy_summary["system"]["capacity_kw"]) | |
| logger.info(" Annual energy: %,.0f kWh", energy_summary["production"]["annual_energy_kwh"]) | |
| logger.info(" Capacity factor: %.1f%%", energy_summary["performance"]["capacity_factor_pct"]) | |
| # --- 4. Orientation Simulation --- | |
| logger.info("4. Simulating panel orientations...") | |
| simulator = OrientationSimulator( | |
| latitude=LAT, longitude=LON, | |
| panel_efficiency=0.20, | |
| panel_area=estimator.total_area, | |
| system_losses=0.14, | |
| tilt_angles=[0, 15, 30, 45], | |
| azimuths={"North": 0, "East": 90, "South": 180, "West": 270}, | |
| ) | |
| ghi_year = ds["ALLSKY_SFC_SW_DWN"].sel(time=slice("2023-01-01", "2023-12-31")).values | |
| optimal = simulator.optimal_orientation(ghi_year, year=2023) | |
| logger.info(" Optimal: %s at %d tilt", optimal["best_direction"], optimal["best_tilt"]) | |
| logger.info(" Gain vs horizontal: %.1f%%", optimal["energy_gain_vs_horizontal_pct"]) | |
| logger.info(" Gain vs worst: %.1f%%", optimal["energy_gain_vs_worst_pct"]) | |
| # --- 5. Financial Analysis --- | |
| logger.info("5. Financial analysis...") | |
| annual_energy = energy_summary["production"]["annual_energy_kwh"] | |
| financial = FinancialAnalyzer( | |
| system_cost=20000, | |
| electricity_rate=0.12, | |
| incentive_percent=0.30, | |
| ) | |
| fin = financial.financial_summary(annual_energy) | |
| logger.info(" Net cost: $%,.0f", fin["investment"]["net_cost"]) | |
| logger.info(" Payback: %s years", fin["returns"]["payback_years"]) | |
| logger.info(" 25-year NPV: $%,.0f", fin["returns"]["npv_25yr"]) | |
| logger.info(" ROI: %.0f%%", fin["returns"]["roi_pct"]) | |
| logger.info(" CO2 offset: %,.0f kg/year", fin["environmental"]["annual_co2_offset_kg"]) | |
| logger.info(" Equivalent trees: %d", fin["environmental"]["equivalent_trees"]) | |
| # --- 6. AI Insights --- | |
| logger.info("6. Generating AI insights...") | |
| ai = SolarAIEngine() | |
| report = ai.generate_report(summary, energy_summary, fin, optimal) | |
| logger.info("AI Report:\n%s", report) | |
| logger.info("Analysis complete!") | |
| if __name__ == "__main__": | |
| main() | |