Step 4: Model Solar Production
Create a solar production profile for the proposed system before generating post-storage profiles in the Storage-in-Switch workflow.
Create a solar production profile for the proposed system before generating post-storage profiles in the Storage-in-Switch workflow.
Solar production workflow
- Choose a solar production input method.
- Create a profile with
serviceTypes=SOLAR_PV. - Set the profile
sourcetoPVWattsfor this tutorial. - Pass system properties such as
systemSize,azimuth, andtilt. - Confirm the response includes
serviceTypes=SOLAR_PV,source.sourceId=PVWatts, andbaselineMeasures.
Create a solar profile
As covered in Step 3, an Account object can have several profiles, and historical bill usage data can be loaded into a profile with a service type of ELECTRICITY. Profiles can hold many types of energy data, including solar production. For solar, use a service type of SOLAR_PV.
You have several options for modeling your proposed solar system's production. The Arcadia API supports the following methods:
- You can use the integrated NREL PVWatts tool by passing in system size and other properties. This is the most commonly used option with our residential customers.
- If you have your own solar model, you can use our API to pass in your own estimated hourly production for a typical year.
- Alternatively, you can use our File Uploader to pass in a CSV, a PVSyst file, or a Helioscope file and we'll automatically parse and load it into a profile.
- You can use our Typical Solar Production data, which is a first-pass easy approximation and suitable for market assessments and marketing.
For this tutorial, you will use option 1, the integrated NREL PVWatts API. More specifically, you will model a 2.65 kW PV system with a 170-degree azimuth and 17-degree tilt. Use this request:
PUT /rest/v1/profiles{
"providerAccountId": "storage-switch-example",
"providerProfileId": "storage-switch-example-solar",
"groupBy": "YEAR",
"serviceTypes": "SOLAR_PV",
"source": {
"sourceId": "PVWatts",
"sourceVersion": "8"
},
"properties": {
"systemSize": {
"keyName": "systemSize",
"dataValue": "2.65"
},
"azimuth": {
"keyName": "azimuth",
"dataValue": "170"
},
"losses": {
"keyName": "losses",
"dataValue": "15"
},
"inverterEfficiency": {
"keyName": "inverterEfficiency",
"dataValue": "96"
},
"tilt": {
"keyName": "tilt",
"dataValue": "17"
},
"bifaciality": {
"keyName": "bifaciality",
"dataValue": "0.5"
},
"albedo": {
"keyName": "albedo",
"dataValue": "0.5"
},
"useWeatherFileAlbedo": {
"keyName": "useWeatherFileAlbedo",
"dataValue": "0"
},
"soiling": {
"keyName": "soiling",
"dataValue": "12.0, 4.0, 45.0, 23.0, 9.0, 99.0, 67.0, 12.54, 54.0, 9.0, 0.0, 7.6"
}
}
} | Field | Purpose |
|---|---|
providerAccountId | Associates the solar profile with the tutorial account. |
providerProfileId | Your stable identifier for this solar production profile. |
serviceTypes | Identifies the profile as SOLAR_PV. |
source.sourceId | Uses PVWatts to generate the production profile. |
source.sourceVersion | Uses the selected PVWatts version. |
properties.systemSize | System size used for PVWatts modeling. |
properties.azimuth | Array orientation. |
properties.tilt | Array tilt. |
This is the same API route that you used to load billing usage data, but with different parameters. The serviceTypes value of SOLAR_PV tells the API that this profile is for solar, not electricity. The sourceId of PVWatts tells the API to call PVWatts.
When creating a profile sourced from the PVWatts API, you can specify parameters to model various characteristics of your system. The most important ones are shown above: systemSize, azimuth, and tilt. The request also includes optional PVWatts parameters, such as losses, inverter efficiency, bifaciality, albedo, and soiling, to show how additional modeling assumptions can be passed. These parameters have reasonable defaults that work in many cases, but you can adjust them for your system. Read the Profile API Reference documentation for details.
After you send the request, the response should look like this:
{
"status": "success",
"count": 1,
"type": "UsageProfile",
"results": [
{
"profileId": "b86e450a-f82d-4de1-b90a-d091ecaf2a33",
"providerProfileId": "storage-switch-example-solar",
"profileName": "2.7 kW | PVWatts",
"accountId": "066c9738-5d46-4f62-ac25-f0c3c1e6fb9b",
"serviceTypes": "SOLAR_PV",
"source": {
"sourceId": "PVWatts",
"name": "PVWatts",
"type": "Reading",
"sourceVersion": "8"
},
"dataStatus": 2,
"properties": {
"systemSize": {
"keyName": "systemSize",
"dataValue": "2.65",
"accuracy": 100
},
"inverterEfficiency": {
"keyName": "inverterEfficiency",
"dataValue": "96",
"accuracy": 100
},
"useWeatherFileAlbedo": {
"keyName": "useWeatherFileAlbedo",
"dataValue": "0",
"accuracy": 100
},
"moduleType": {
"keyName": "moduleType",
"dataType": "INTEGER",
"dataValue": "0",
"accuracy": 50
},
"derate": {
"keyName": "derate",
"dataType": "DECIMAL",
"dataValue": "0.816"
},
"azimuth": {
"keyName": "azimuth",
"dataValue": "170",
"accuracy": 100
},
"tilt": {
"keyName": "tilt",
"dataValue": "17",
"accuracy": 100
},
"losses": {
"keyName": "losses",
"dataValue": "15",
"accuracy": 100
},
"climateDataFileName": {
"keyName": "climateDataFileName",
"dataType": "STRING",
"dataValue": "84361.csv"
},
"soiling": {
"keyName": "soiling",
"dataValue": "12.0, 4.0, 45.0, 23.0, 9.0, 99.0, 67.0, 12.54, 54.0, 9.0, 0.0, 7.6",
"accuracy": 100
},
"trackMode": {
"keyName": "trackMode",
"dataType": "INTEGER",
"dataValue": "0",
"accuracy": 50
},
"systemYield": {
"keyName": "systemYield",
"dataType": "DECIMAL",
"dataValue": "1123.74"
},
"bifaciality": {
"keyName": "bifaciality",
"dataValue": "0.5",
"accuracy": 100
},
"albedo": {
"keyName": "albedo",
"dataValue": "0.5",
"accuracy": 100
}
},
"baselineMeasures": [
{
"i": 1,
"v": 2977.898016000000
}
]
}
]
}
A successful response includes status: "success", serviceTypes: "SOLAR_PV", source.sourceId: "PVWatts", and baselineMeasures.
Model multiple arrays
You can add as many solar profiles to your account as you need. For example, if you plan to include both a south-facing and a west-facing array, create two solar profiles, each with its own shading and orientation parameters. Give each profile a different providerProfileId to keep track of them.
Summary
You now have a model of the hourly solar production for your proposed system in our database. Previously, you created an account, confirmed your customer's utility and rate plan, and created a profile for historical electricity usage.
Updated 5 days ago
