Core PVSystem Class

This module defines the PVSystem class for representing and managing photovoltaic (PV) systems.

With the PVSystem class, users can create new PV system configurations, retrieve existing ones by UUID, and modify or delete them as needed. It also provides methods to convert and validate PV system configurations, including expert parameters. A helper function is also provided to get the UUIDs of all available systems.

Classes:

PVSystem: A class representing a photovoltaic system, allowing operations such as creation, update, and deletion.

Functions:

get_pvsystem_uuids(): Retrieves all your PV system UUIDs and names from Steadyweb API

pydantic model steadysun.pvsystem.PVSystem

Bases: TypeCheckingBaseModel

Dataclass to represent a photovoltaic (PV) system with various configuration parameters.

uuid

Unique identifier for the PV system.

Type:

UUID

title

Title of the PV system.

Type:

StrictStr

name

Name of the PV system.

Type:

StrictStr

location

Geolocation of the PV system.

Type:

PointModel

altitude

Altitude of the PV system (default is 0).

Type:

NonNegativeFloat

pv_type

Type of the PV system (default is fixed).

Type:

PVType

requested_fields

List of requested fields for the system.

Type:

List[int]

expert_params

Expert parameters for advanced configurations.

Type:

PVSystemExpertParams

Show JSON schema
{
   "title": "PVSystem",
   "description": "Dataclass to represent a photovoltaic (PV) system with various configuration parameters.\n\nAttributes:\n    uuid (UUID): Unique identifier for the PV system.\n    title (StrictStr): Title of the PV system.\n    name (StrictStr): Name of the PV system.\n    location (PointModel): Geolocation of the PV system.\n    altitude (NonNegativeFloat): Altitude of the PV system (default is 0).\n    pv_type (PVType): Type of the PV system (default is fixed).\n    requested_fields (List[int]): List of requested fields for the system.\n    expert_params (PVSystemExpertParams): Expert parameters for advanced configurations.",
   "type": "object",
   "properties": {
      "uuid": {
         "format": "uuid",
         "title": "Uuid",
         "type": "string"
      },
      "title": {
         "title": "Title",
         "type": "string"
      },
      "name": {
         "title": "Name",
         "type": "string"
      },
      "location": {
         "$ref": "#/$defs/PointModel"
      },
      "altitude": {
         "default": 0,
         "minimum": 0.0,
         "title": "Altitude",
         "type": "number"
      },
      "pv_type": {
         "$ref": "#/$defs/PVType",
         "default": 1
      },
      "requested_fields": {
         "items": {
            "type": "integer"
         },
         "title": "Requested Fields",
         "type": "array"
      },
      "expert_params": {
         "$ref": "#/$defs/PVSystemExpertParams"
      }
   },
   "$defs": {
      "AoiModel": {
         "description": "PV - Angle-of-incidence models.",
         "enum": [
            1,
            2
         ],
         "title": "AoiModel",
         "type": "integer"
      },
      "Array": {
         "description": "Represents an array of PV modules in a PV system.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "integer"
            },
            "pvmodules_pdc0": {
               "title": "Pvmodules Pdc0",
               "type": "number"
            },
            "orientation": {
               "title": "Orientation",
               "type": "number"
            },
            "inclination": {
               "title": "Inclination",
               "type": "number"
            },
            "module_technology": {
               "$ref": "#/$defs/ModuleTechnology"
            },
            "module_material": {
               "$ref": "#/$defs/ModuleMaterial"
            },
            "racking": {
               "$ref": "#/$defs/Racking"
            },
            "module_type": {
               "$ref": "#/$defs/ModuleType"
            },
            "power_temp_coeff": {
               "title": "Power Temp Coeff",
               "type": "number"
            }
         },
         "required": [
            "id",
            "pvmodules_pdc0",
            "orientation",
            "inclination",
            "module_technology",
            "module_material",
            "racking",
            "module_type",
            "power_temp_coeff"
         ],
         "title": "Array",
         "type": "object"
      },
      "BifacialConfig": {
         "description": "Configuration for a bifacial PV system.",
         "properties": {
            "bifaciality": {
               "title": "Bifaciality",
               "type": "number"
            },
            "gcr": {
               "title": "Gcr",
               "type": "number"
            },
            "pvrow_height": {
               "title": "Pvrow Height",
               "type": "number"
            },
            "pvrow_width": {
               "title": "Pvrow Width",
               "type": "number"
            }
         },
         "required": [
            "bifaciality",
            "gcr",
            "pvrow_height",
            "pvrow_width"
         ],
         "title": "BifacialConfig",
         "type": "object"
      },
      "Coordinates": {
         "maxItems": 2,
         "minItems": 2,
         "prefixItems": [
            {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "integer"
                  }
               ],
               "ge": -180,
               "le": 180,
               "title": "Lon"
            },
            {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "integer"
                  }
               ],
               "ge": -90,
               "le": 90,
               "title": "Lat"
            }
         ],
         "type": "array"
      },
      "DecompositionModel": {
         "description": "PV - Decomposition models",
         "enum": [
            1,
            2,
            3
         ],
         "title": "DecompositionModel",
         "type": "integer"
      },
      "InverterParameters": {
         "description": "Parameters for an inverter in a PV system.",
         "properties": {
            "pdc0": {
               "title": "Pdc0",
               "type": "number"
            },
            "eta_inv_nom": {
               "title": "Eta Inv Nom",
               "type": "number"
            }
         },
         "required": [
            "pdc0",
            "eta_inv_nom"
         ],
         "title": "InverterParameters",
         "type": "object"
      },
      "Irradiances": {
         "description": "Irradiance-related parameters for a PV system.",
         "properties": {
            "timestamp_interval": {
               "$ref": "#/$defs/TimestampInterval"
            },
            "decomposition_model": {
               "$ref": "#/$defs/DecompositionModel"
            },
            "transposition_model": {
               "$ref": "#/$defs/TranspositionModel"
            },
            "spectral_model": {
               "$ref": "#/$defs/SpectralModel"
            },
            "aoi_model": {
               "$ref": "#/$defs/AoiModel"
            },
            "albedo": {
               "title": "Albedo",
               "type": "number"
            },
            "self_shading": {
               "title": "Self Shading",
               "type": "boolean"
            }
         },
         "required": [
            "timestamp_interval",
            "decomposition_model",
            "transposition_model",
            "spectral_model",
            "aoi_model",
            "albedo",
            "self_shading"
         ],
         "title": "Irradiances",
         "type": "object"
      },
      "LossesParameters": {
         "description": "Losses parameters for a PV system.",
         "properties": {
            "wiring": {
               "title": "Wiring",
               "type": "number"
            },
            "lid": {
               "title": "Lid",
               "type": "number"
            },
            "nameplate_rating": {
               "title": "Nameplate Rating",
               "type": "number"
            },
            "mismatch": {
               "title": "Mismatch",
               "type": "number"
            },
            "soiling": {
               "title": "Soiling",
               "type": "number"
            },
            "snow": {
               "title": "Snow",
               "type": "number"
            },
            "shading": {
               "title": "Shading",
               "type": "number"
            },
            "availability": {
               "title": "Availability",
               "type": "number"
            },
            "connections": {
               "title": "Connections",
               "type": "number"
            },
            "age": {
               "title": "Age",
               "type": "number"
            },
            "aging": {
               "title": "Aging",
               "type": "number"
            },
            "aging_auto_compute": {
               "title": "Aging Auto Compute",
               "type": "boolean"
            }
         },
         "required": [
            "wiring",
            "lid",
            "nameplate_rating",
            "mismatch",
            "soiling",
            "snow",
            "shading",
            "availability",
            "connections",
            "age",
            "aging",
            "aging_auto_compute"
         ],
         "title": "LossesParameters",
         "type": "object"
      },
      "ModuleMaterial": {
         "description": "PV - Module material types",
         "enum": [
            1,
            2,
            3,
            4,
            5,
            6,
            7
         ],
         "title": "ModuleMaterial",
         "type": "integer"
      },
      "ModuleTechnology": {
         "description": "PV - Module technology types",
         "enum": [
            1,
            2
         ],
         "title": "ModuleTechnology",
         "type": "integer"
      },
      "ModuleType": {
         "description": "PV - Module types",
         "enum": [
            1,
            2
         ],
         "title": "ModuleType",
         "type": "integer"
      },
      "PVSystemExpertParams": {
         "description": "Expert-level configuration parameters for a PV system.",
         "properties": {
            "installation_date": {
               "title": "Installation Date",
               "type": "string"
            },
            "arrays": {
               "items": {
                  "$ref": "#/$defs/Array"
               },
               "title": "Arrays",
               "type": "array"
            },
            "tracker_config": {
               "anyOf": [
                  {
                     "$ref": "#/$defs/TrackerConfig"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null
            },
            "bifacial_config": {
               "anyOf": [
                  {
                     "$ref": "#/$defs/BifacialConfig"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null
            },
            "inverter_parameters": {
               "anyOf": [
                  {
                     "$ref": "#/$defs/InverterParameters"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null
            },
            "irradiances": {
               "anyOf": [
                  {
                     "$ref": "#/$defs/Irradiances"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null
            },
            "losses_parameters": {
               "anyOf": [
                  {
                     "$ref": "#/$defs/LossesParameters"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null
            }
         },
         "required": [
            "installation_date",
            "arrays"
         ],
         "title": "PVSystemExpertParams",
         "type": "object"
      },
      "PVType": {
         "description": "PV - PV system types",
         "enum": [
            1,
            2,
            3
         ],
         "title": "PVType",
         "type": "integer"
      },
      "PointModel": {
         "properties": {
            "type": {
               "default": "Point",
               "title": "Point",
               "type": "string"
            },
            "coordinates": {
               "$ref": "#/$defs/Coordinates"
            }
         },
         "required": [
            "coordinates"
         ],
         "title": "PointModel",
         "type": "object"
      },
      "Racking": {
         "description": "PV - Racking types",
         "enum": [
            1,
            2,
            3
         ],
         "title": "Racking",
         "type": "integer"
      },
      "SpectralModel": {
         "description": "PV - Spectral models",
         "enum": [
            1,
            2
         ],
         "title": "SpectralModel",
         "type": "integer"
      },
      "TimestampInterval": {
         "description": "PV - Timestamp intervals",
         "enum": [
            1,
            2,
            3
         ],
         "title": "TimestampInterval",
         "type": "integer"
      },
      "TrackerConfig": {
         "description": "Configuration for a tracker system.",
         "properties": {
            "max_angle": {
               "title": "Max Angle",
               "type": "number"
            },
            "backtrack": {
               "title": "Backtrack",
               "type": "boolean"
            },
            "gcr": {
               "title": "Gcr",
               "type": "number"
            },
            "slope_azimuth": {
               "title": "Slope Azimuth",
               "type": "number"
            },
            "slope_tilt": {
               "title": "Slope Tilt",
               "type": "number"
            }
         },
         "required": [
            "max_angle",
            "backtrack",
            "gcr",
            "slope_azimuth",
            "slope_tilt"
         ],
         "title": "TrackerConfig",
         "type": "object"
      },
      "TranspositionModel": {
         "description": "PV - Transposition models",
         "enum": [
            1
         ],
         "title": "TranspositionModel",
         "type": "integer"
      }
   },
   "required": [
      "uuid",
      "title",
      "name",
      "location",
      "requested_fields",
      "expert_params"
   ]
}

Config:
  • validate_assignment: bool = True

Fields:
Validators:
field altitude: Annotated[float, Ge(ge=0)] = 0
Constraints:
  • ge = 0

field expert_params: PVSystemExpertParams [Required]
field location: PointModel [Required]
field name: Annotated[str, Strict(strict=True)] [Required]
Constraints:
  • strict = True

field pv_type: PVType = PVType.fixed
Validated by:
  • _convert_enum

field requested_fields: List[int] [Required]
field title: Annotated[str, Strict(strict=True)] [Required]
Constraints:
  • strict = True

field uuid: UUID [Required]
classmethod create_new(name: Annotated[str, Strict(strict=True)], location: Tuple[Annotated[float, AllowInfNan(allow_inf_nan=False)], Annotated[float, AllowInfNan(allow_inf_nan=False)]], pdc0: Annotated[float, Ge(ge=0)], orientation: Annotated[float, Ge(ge=0)] = 180, inclination: Annotated[float, Ge(ge=0)] = 30)

Creates a new PVSystem on Steadyweb with the provided parameters.

Parameters:
  • name (StrictStr) – Name of the PV system.

  • location (Tuple[FiniteFloat, FiniteFloat]) – Geolocation of the PV system (longitude, latitude).

  • pdc0 (NonNegativeFloat) – Peak power of the PV system (in W).

  • orientation (NonNegativeFloat) – Orientation of the PV system in degrees (default is 180).

  • inclination (NonNegativeFloat) – Inclination of the PV system in degrees (default is 30).

Returns:

PVSystem – The newly created PVSystem instance.

delete()

Deletes the PVSystem from the Steadyweb API. This action is irreversible.

Returns:

dict – The response from the Steadyweb API after deletion.

classmethod from_uuid(uuid)

Retrieves a PVSystem instance based on its UUID from the Steadyweb API.

Parameters:

uuid (UUID) – The unique identifier of the PV system.

Returns:

PVSystem – An instance of the PVSystem class.

save_changes() dict

Saves changes made to the PVSystem by sending an updated configuration to the Steadyweb API.

Returns:

dict – The response from the Steadyweb API after patching the PV system.

steadysun.pvsystem.get_pvsystem_uuids() Dict[str, str]

Retrieves all your PV system UUIDs and names.

Returns:

dict – A dictionary mapping PV system UUIDs to their corresponding names.

Enums and Supporting Classes

class steadysun.models.pvsystem.AoiModel(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

Bases: EnumIntStr

PV - Angle-of-incidence models.

ashrae = 1
sapm = 2
pydantic model steadysun.models.pvsystem.Array

Bases: TypeCheckingBaseModel

Represents an array of PV modules in a PV system.

Show JSON schema
{
   "title": "Array",
   "description": "Represents an array of PV modules in a PV system.",
   "type": "object",
   "properties": {
      "id": {
         "title": "Id",
         "type": "integer"
      },
      "pvmodules_pdc0": {
         "title": "Pvmodules Pdc0",
         "type": "number"
      },
      "orientation": {
         "title": "Orientation",
         "type": "number"
      },
      "inclination": {
         "title": "Inclination",
         "type": "number"
      },
      "module_technology": {
         "$ref": "#/$defs/ModuleTechnology"
      },
      "module_material": {
         "$ref": "#/$defs/ModuleMaterial"
      },
      "racking": {
         "$ref": "#/$defs/Racking"
      },
      "module_type": {
         "$ref": "#/$defs/ModuleType"
      },
      "power_temp_coeff": {
         "title": "Power Temp Coeff",
         "type": "number"
      }
   },
   "$defs": {
      "ModuleMaterial": {
         "description": "PV - Module material types",
         "enum": [
            1,
            2,
            3,
            4,
            5,
            6,
            7
         ],
         "title": "ModuleMaterial",
         "type": "integer"
      },
      "ModuleTechnology": {
         "description": "PV - Module technology types",
         "enum": [
            1,
            2
         ],
         "title": "ModuleTechnology",
         "type": "integer"
      },
      "ModuleType": {
         "description": "PV - Module types",
         "enum": [
            1,
            2
         ],
         "title": "ModuleType",
         "type": "integer"
      },
      "Racking": {
         "description": "PV - Racking types",
         "enum": [
            1,
            2,
            3
         ],
         "title": "Racking",
         "type": "integer"
      }
   },
   "required": [
      "id",
      "pvmodules_pdc0",
      "orientation",
      "inclination",
      "module_technology",
      "module_material",
      "racking",
      "module_type",
      "power_temp_coeff"
   ]
}

Config:
  • validate_assignment: bool = True

Fields:
Validators:
field id: int [Required]
field inclination: float [Required]
field module_material: ModuleMaterial [Required]
Validated by:
field module_technology: ModuleTechnology [Required]
Validated by:
field module_type: ModuleType [Required]
Validated by:
field orientation: float [Required]
field power_temp_coeff: float [Required]
field pvmodules_pdc0: float [Required]
field racking: Racking [Required]
Validated by:
validator convert_enum  »  module_material, module_technology, racking, module_type

Convert a value to its corresponding enum type.

pydantic model steadysun.models.pvsystem.BifacialConfig

Bases: TypeCheckingBaseModel

Configuration for a bifacial PV system.

Show JSON schema
{
   "title": "BifacialConfig",
   "description": "Configuration for a bifacial PV system.",
   "type": "object",
   "properties": {
      "bifaciality": {
         "title": "Bifaciality",
         "type": "number"
      },
      "gcr": {
         "title": "Gcr",
         "type": "number"
      },
      "pvrow_height": {
         "title": "Pvrow Height",
         "type": "number"
      },
      "pvrow_width": {
         "title": "Pvrow Width",
         "type": "number"
      }
   },
   "required": [
      "bifaciality",
      "gcr",
      "pvrow_height",
      "pvrow_width"
   ]
}

Config:
  • validate_assignment: bool = True

Fields:
field bifaciality: float [Required]
field gcr: float [Required]
field pvrow_height: float [Required]
field pvrow_width: float [Required]
class steadysun.models.pvsystem.DecompositionModel(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

Bases: EnumIntStr

PV - Decomposition models

dirindex = 2
disc = 1
engerer2 = 3
pydantic model steadysun.models.pvsystem.InverterParameters

Bases: TypeCheckingBaseModel

Parameters for an inverter in a PV system.

Show JSON schema
{
   "title": "InverterParameters",
   "description": "Parameters for an inverter in a PV system.",
   "type": "object",
   "properties": {
      "pdc0": {
         "title": "Pdc0",
         "type": "number"
      },
      "eta_inv_nom": {
         "title": "Eta Inv Nom",
         "type": "number"
      }
   },
   "required": [
      "pdc0",
      "eta_inv_nom"
   ]
}

Config:
  • validate_assignment: bool = True

Fields:
field eta_inv_nom: float [Required]
field pdc0: float [Required]
pydantic model steadysun.models.pvsystem.Irradiances

Bases: TypeCheckingBaseModel

Irradiance-related parameters for a PV system.

Show JSON schema
{
   "title": "Irradiances",
   "description": "Irradiance-related parameters for a PV system.",
   "type": "object",
   "properties": {
      "timestamp_interval": {
         "$ref": "#/$defs/TimestampInterval"
      },
      "decomposition_model": {
         "$ref": "#/$defs/DecompositionModel"
      },
      "transposition_model": {
         "$ref": "#/$defs/TranspositionModel"
      },
      "spectral_model": {
         "$ref": "#/$defs/SpectralModel"
      },
      "aoi_model": {
         "$ref": "#/$defs/AoiModel"
      },
      "albedo": {
         "title": "Albedo",
         "type": "number"
      },
      "self_shading": {
         "title": "Self Shading",
         "type": "boolean"
      }
   },
   "$defs": {
      "AoiModel": {
         "description": "PV - Angle-of-incidence models.",
         "enum": [
            1,
            2
         ],
         "title": "AoiModel",
         "type": "integer"
      },
      "DecompositionModel": {
         "description": "PV - Decomposition models",
         "enum": [
            1,
            2,
            3
         ],
         "title": "DecompositionModel",
         "type": "integer"
      },
      "SpectralModel": {
         "description": "PV - Spectral models",
         "enum": [
            1,
            2
         ],
         "title": "SpectralModel",
         "type": "integer"
      },
      "TimestampInterval": {
         "description": "PV - Timestamp intervals",
         "enum": [
            1,
            2,
            3
         ],
         "title": "TimestampInterval",
         "type": "integer"
      },
      "TranspositionModel": {
         "description": "PV - Transposition models",
         "enum": [
            1
         ],
         "title": "TranspositionModel",
         "type": "integer"
      }
   },
   "required": [
      "timestamp_interval",
      "decomposition_model",
      "transposition_model",
      "spectral_model",
      "aoi_model",
      "albedo",
      "self_shading"
   ]
}

Config:
  • validate_assignment: bool = True

Fields:
field albedo: float [Required]
field aoi_model: AoiModel [Required]
field decomposition_model: DecompositionModel [Required]
field self_shading: bool [Required]
field spectral_model: SpectralModel [Required]
field timestamp_interval: TimestampInterval [Required]
field transposition_model: TranspositionModel [Required]
pydantic model steadysun.models.pvsystem.LossesParameters

Bases: TypeCheckingBaseModel

Losses parameters for a PV system.

Show JSON schema
{
   "title": "LossesParameters",
   "description": "Losses parameters for a PV system.",
   "type": "object",
   "properties": {
      "wiring": {
         "title": "Wiring",
         "type": "number"
      },
      "lid": {
         "title": "Lid",
         "type": "number"
      },
      "nameplate_rating": {
         "title": "Nameplate Rating",
         "type": "number"
      },
      "mismatch": {
         "title": "Mismatch",
         "type": "number"
      },
      "soiling": {
         "title": "Soiling",
         "type": "number"
      },
      "snow": {
         "title": "Snow",
         "type": "number"
      },
      "shading": {
         "title": "Shading",
         "type": "number"
      },
      "availability": {
         "title": "Availability",
         "type": "number"
      },
      "connections": {
         "title": "Connections",
         "type": "number"
      },
      "age": {
         "title": "Age",
         "type": "number"
      },
      "aging": {
         "title": "Aging",
         "type": "number"
      },
      "aging_auto_compute": {
         "title": "Aging Auto Compute",
         "type": "boolean"
      }
   },
   "required": [
      "wiring",
      "lid",
      "nameplate_rating",
      "mismatch",
      "soiling",
      "snow",
      "shading",
      "availability",
      "connections",
      "age",
      "aging",
      "aging_auto_compute"
   ]
}

Config:
  • validate_assignment: bool = True

Fields:
field age: float [Required]
field aging: float [Required]
field aging_auto_compute: bool [Required]
field availability: float [Required]
field connections: float [Required]
field lid: float [Required]
field mismatch: float [Required]
field nameplate_rating: float [Required]
field shading: float [Required]
field snow: float [Required]
field soiling: float [Required]
field wiring: float [Required]
class steadysun.models.pvsystem.ModuleMaterial(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

Bases: EnumIntStr

PV - Module material types

asi = 3
cdte = 4
cigs = 2
monosi = 1
multisi = 6
polysi = 7
xsi = 5
class steadysun.models.pvsystem.ModuleTechnology(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

Bases: EnumIntStr

PV - Module technology types

bifacial = 2
standard = 1
class steadysun.models.pvsystem.ModuleType(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

Bases: EnumIntStr

PV - Module types

glass_glass = 2
glass_polymer = 1
pydantic model steadysun.models.pvsystem.PVSystemExpertParams

Bases: TypeCheckingBaseModel

Expert-level configuration parameters for a PV system.

Show JSON schema
{
   "title": "PVSystemExpertParams",
   "description": "Expert-level configuration parameters for a PV system.",
   "type": "object",
   "properties": {
      "installation_date": {
         "title": "Installation Date",
         "type": "string"
      },
      "arrays": {
         "items": {
            "$ref": "#/$defs/Array"
         },
         "title": "Arrays",
         "type": "array"
      },
      "tracker_config": {
         "anyOf": [
            {
               "$ref": "#/$defs/TrackerConfig"
            },
            {
               "type": "null"
            }
         ],
         "default": null
      },
      "bifacial_config": {
         "anyOf": [
            {
               "$ref": "#/$defs/BifacialConfig"
            },
            {
               "type": "null"
            }
         ],
         "default": null
      },
      "inverter_parameters": {
         "anyOf": [
            {
               "$ref": "#/$defs/InverterParameters"
            },
            {
               "type": "null"
            }
         ],
         "default": null
      },
      "irradiances": {
         "anyOf": [
            {
               "$ref": "#/$defs/Irradiances"
            },
            {
               "type": "null"
            }
         ],
         "default": null
      },
      "losses_parameters": {
         "anyOf": [
            {
               "$ref": "#/$defs/LossesParameters"
            },
            {
               "type": "null"
            }
         ],
         "default": null
      }
   },
   "$defs": {
      "AoiModel": {
         "description": "PV - Angle-of-incidence models.",
         "enum": [
            1,
            2
         ],
         "title": "AoiModel",
         "type": "integer"
      },
      "Array": {
         "description": "Represents an array of PV modules in a PV system.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "integer"
            },
            "pvmodules_pdc0": {
               "title": "Pvmodules Pdc0",
               "type": "number"
            },
            "orientation": {
               "title": "Orientation",
               "type": "number"
            },
            "inclination": {
               "title": "Inclination",
               "type": "number"
            },
            "module_technology": {
               "$ref": "#/$defs/ModuleTechnology"
            },
            "module_material": {
               "$ref": "#/$defs/ModuleMaterial"
            },
            "racking": {
               "$ref": "#/$defs/Racking"
            },
            "module_type": {
               "$ref": "#/$defs/ModuleType"
            },
            "power_temp_coeff": {
               "title": "Power Temp Coeff",
               "type": "number"
            }
         },
         "required": [
            "id",
            "pvmodules_pdc0",
            "orientation",
            "inclination",
            "module_technology",
            "module_material",
            "racking",
            "module_type",
            "power_temp_coeff"
         ],
         "title": "Array",
         "type": "object"
      },
      "BifacialConfig": {
         "description": "Configuration for a bifacial PV system.",
         "properties": {
            "bifaciality": {
               "title": "Bifaciality",
               "type": "number"
            },
            "gcr": {
               "title": "Gcr",
               "type": "number"
            },
            "pvrow_height": {
               "title": "Pvrow Height",
               "type": "number"
            },
            "pvrow_width": {
               "title": "Pvrow Width",
               "type": "number"
            }
         },
         "required": [
            "bifaciality",
            "gcr",
            "pvrow_height",
            "pvrow_width"
         ],
         "title": "BifacialConfig",
         "type": "object"
      },
      "DecompositionModel": {
         "description": "PV - Decomposition models",
         "enum": [
            1,
            2,
            3
         ],
         "title": "DecompositionModel",
         "type": "integer"
      },
      "InverterParameters": {
         "description": "Parameters for an inverter in a PV system.",
         "properties": {
            "pdc0": {
               "title": "Pdc0",
               "type": "number"
            },
            "eta_inv_nom": {
               "title": "Eta Inv Nom",
               "type": "number"
            }
         },
         "required": [
            "pdc0",
            "eta_inv_nom"
         ],
         "title": "InverterParameters",
         "type": "object"
      },
      "Irradiances": {
         "description": "Irradiance-related parameters for a PV system.",
         "properties": {
            "timestamp_interval": {
               "$ref": "#/$defs/TimestampInterval"
            },
            "decomposition_model": {
               "$ref": "#/$defs/DecompositionModel"
            },
            "transposition_model": {
               "$ref": "#/$defs/TranspositionModel"
            },
            "spectral_model": {
               "$ref": "#/$defs/SpectralModel"
            },
            "aoi_model": {
               "$ref": "#/$defs/AoiModel"
            },
            "albedo": {
               "title": "Albedo",
               "type": "number"
            },
            "self_shading": {
               "title": "Self Shading",
               "type": "boolean"
            }
         },
         "required": [
            "timestamp_interval",
            "decomposition_model",
            "transposition_model",
            "spectral_model",
            "aoi_model",
            "albedo",
            "self_shading"
         ],
         "title": "Irradiances",
         "type": "object"
      },
      "LossesParameters": {
         "description": "Losses parameters for a PV system.",
         "properties": {
            "wiring": {
               "title": "Wiring",
               "type": "number"
            },
            "lid": {
               "title": "Lid",
               "type": "number"
            },
            "nameplate_rating": {
               "title": "Nameplate Rating",
               "type": "number"
            },
            "mismatch": {
               "title": "Mismatch",
               "type": "number"
            },
            "soiling": {
               "title": "Soiling",
               "type": "number"
            },
            "snow": {
               "title": "Snow",
               "type": "number"
            },
            "shading": {
               "title": "Shading",
               "type": "number"
            },
            "availability": {
               "title": "Availability",
               "type": "number"
            },
            "connections": {
               "title": "Connections",
               "type": "number"
            },
            "age": {
               "title": "Age",
               "type": "number"
            },
            "aging": {
               "title": "Aging",
               "type": "number"
            },
            "aging_auto_compute": {
               "title": "Aging Auto Compute",
               "type": "boolean"
            }
         },
         "required": [
            "wiring",
            "lid",
            "nameplate_rating",
            "mismatch",
            "soiling",
            "snow",
            "shading",
            "availability",
            "connections",
            "age",
            "aging",
            "aging_auto_compute"
         ],
         "title": "LossesParameters",
         "type": "object"
      },
      "ModuleMaterial": {
         "description": "PV - Module material types",
         "enum": [
            1,
            2,
            3,
            4,
            5,
            6,
            7
         ],
         "title": "ModuleMaterial",
         "type": "integer"
      },
      "ModuleTechnology": {
         "description": "PV - Module technology types",
         "enum": [
            1,
            2
         ],
         "title": "ModuleTechnology",
         "type": "integer"
      },
      "ModuleType": {
         "description": "PV - Module types",
         "enum": [
            1,
            2
         ],
         "title": "ModuleType",
         "type": "integer"
      },
      "Racking": {
         "description": "PV - Racking types",
         "enum": [
            1,
            2,
            3
         ],
         "title": "Racking",
         "type": "integer"
      },
      "SpectralModel": {
         "description": "PV - Spectral models",
         "enum": [
            1,
            2
         ],
         "title": "SpectralModel",
         "type": "integer"
      },
      "TimestampInterval": {
         "description": "PV - Timestamp intervals",
         "enum": [
            1,
            2,
            3
         ],
         "title": "TimestampInterval",
         "type": "integer"
      },
      "TrackerConfig": {
         "description": "Configuration for a tracker system.",
         "properties": {
            "max_angle": {
               "title": "Max Angle",
               "type": "number"
            },
            "backtrack": {
               "title": "Backtrack",
               "type": "boolean"
            },
            "gcr": {
               "title": "Gcr",
               "type": "number"
            },
            "slope_azimuth": {
               "title": "Slope Azimuth",
               "type": "number"
            },
            "slope_tilt": {
               "title": "Slope Tilt",
               "type": "number"
            }
         },
         "required": [
            "max_angle",
            "backtrack",
            "gcr",
            "slope_azimuth",
            "slope_tilt"
         ],
         "title": "TrackerConfig",
         "type": "object"
      },
      "TranspositionModel": {
         "description": "PV - Transposition models",
         "enum": [
            1
         ],
         "title": "TranspositionModel",
         "type": "integer"
      }
   },
   "required": [
      "installation_date",
      "arrays"
   ]
}

Config:
  • validate_assignment: bool = True

Fields:
field arrays: List[Array] [Required]
field bifacial_config: BifacialConfig | None = None
field installation_date: str [Required]
field inverter_parameters: InverterParameters | None = None
field irradiances: Irradiances | None = None
field losses_parameters: LossesParameters | None = None
field tracker_config: TrackerConfig | None = None
class steadysun.models.pvsystem.PVType(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

Bases: EnumIntStr

PV - PV system types

double_axis = 3
fixed = 1
single_axis = 2
class steadysun.models.pvsystem.Racking(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

Bases: EnumIntStr

PV - Racking types

close_mount = 2
insulated_back = 3
open_rack = 1
class steadysun.models.pvsystem.SpectralModel(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

Bases: EnumIntStr

PV - Spectral models

no = 2
yes = 1
class steadysun.models.pvsystem.TimestampInterval(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

Bases: EnumIntStr

PV - Timestamp intervals

centered = 3
left = 1
right = 2
pydantic model steadysun.models.pvsystem.TrackerConfig

Bases: TypeCheckingBaseModel

Configuration for a tracker system.

Show JSON schema
{
   "title": "TrackerConfig",
   "description": "Configuration for a tracker system.",
   "type": "object",
   "properties": {
      "max_angle": {
         "title": "Max Angle",
         "type": "number"
      },
      "backtrack": {
         "title": "Backtrack",
         "type": "boolean"
      },
      "gcr": {
         "title": "Gcr",
         "type": "number"
      },
      "slope_azimuth": {
         "title": "Slope Azimuth",
         "type": "number"
      },
      "slope_tilt": {
         "title": "Slope Tilt",
         "type": "number"
      }
   },
   "required": [
      "max_angle",
      "backtrack",
      "gcr",
      "slope_azimuth",
      "slope_tilt"
   ]
}

Config:
  • validate_assignment: bool = True

Fields:
field backtrack: bool [Required]
field gcr: float [Required]
field max_angle: float [Required]
field slope_azimuth: float [Required]
field slope_tilt: float [Required]
class steadysun.models.pvsystem.TranspositionModel(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

Bases: EnumIntStr

PV - Transposition models

haydavies = 1