Le module PV.ProductionElectriquePV.SolarSystem simule la production photovoltaïque d’un site à partir de sa localisation, en s’appuyant sur pvlib-python et la météo horaire PVGIS. Chaque fonctionnalité de la classe est illustrée ci-dessous par un exemple.

Créer un système et calculer la production

from PV.ProductionElectriquePV import SolarSystem

pv = SolarSystem(
    latitude=45.764, longitude=4.8357,
    name='Usine Lyon', altitude=200,
    timezone='Europe/Paris',
    azimut=180,       # 0=Nord, 90=Est, 180=Sud, 270=Ouest
    inclinaison=20,   # degrés par rapport à l'horizontale
)

pv.retrieve_module_inverter_data(
    module_name='Canadian_Solar_CS5P_220M___2009_',
    inverter_name='ABB__MICRO_0_25_I_OUTD_US_208__208V_',
    temperature_model='open_rack_glass_glass',
)

pv.calculate_solar_parameters()   # télécharge la météo PVGIS automatiquement
print(pv.df)

Sortie pv.df (météo PVGIS, un module) :

                            SolarSystem
Site                          Usine Lyon
Module    Canadian_Solar_CS5P_220M___2009_
Surface module (m2)                 1.701
Puissance STC (Wc)                  219.7
Onduleur  ABB__MICRO_0_25_I_OUTD_US_208__208V_
Production / module (kWh/an)        306.9
Productivite (kWh/kWc/an)            1397
  • latitude / longitude / altitude : position du site ;

  • azimut : orientation (0°=Nord, 180°=Sud) ;

  • inclinaison : angle par rapport à l’horizontale ;

  • module_name : module PV (base Sandia, 500+ références) ;

  • inverter_name : onduleur (base CEC, 1000+ références) ;

  • temperature_model : modèle thermique (open_rack_glass_glass, close_mount_glass_glass…).

Synthèse technique et économique — pv.summary()

print(pv.summary(
    nb_modules=455, module_wc=220,
    capex_eur_m2=155,
    opex_eur_m2=2,
    tarif_elec_eur_mwh=120,
    duree_vie=25,
))

Renvoie une synthèse pour l’ensemble du champ : puissance installée, surface, production annuelle, puis les indicateurs économiques (CAPEX, OPEX, temps de retour, ROI, TRI) calculés à partir des hypothèses passées en argument.

Graphique de production — pv.plot()

pv.plot(nb_modules=455)

Affiche la production AC horaire (nulle la nuit, maximale en milieu de journée) et le profil mensuel du champ.

Export Excel — pv.to_excel()

pv.to_excel('production_lyon.xlsx', nb_modules=455)

Génère un classeur à trois onglets : Horaire (8760 lignes), Mensuel (12 lignes) et Synthèse.

Étude d’orientation — SolarSystem.orientation_study()

Méthode de classe qui simule et compare plusieurs orientations / inclinaisons pour un même site :

scenarios = [
    {'nom': 'Sud 35', 'azimut': 180, 'inclinaison': 35},
    {'nom': 'Sud 10', 'azimut': 180, 'inclinaison': 10},
    {'nom': 'SE 30',  'azimut': 135, 'inclinaison': 30},
    {'nom': 'Est 85', 'azimut': 90,  'inclinaison': 85},
]

df, df_monthly = SolarSystem.orientation_study(
    latitude=45.764, longitude=4.8357,
    name='Lyon', altitude=200, timezone='Europe/Paris',
    scenarios=scenarios,
)
print(df)                                             # production annuelle par scénario
SolarSystem.plot_orientation_study(df, df_monthly, name='Lyon')   # profils mensuels