API Validation Service
From API's version v1 (build 0.2.254 released in April 2023), there is a validation service in SolarFarmer's API that returns several validation error messages if your API files have any invalid inputs.
The validation service applies to both endpoints, ModelChain Endpoint and ModelChainAsync Endpoint (2D and 3D calculations), and intends to help users avoid using incorrect properties or values before the calculation is run.
A list of the validation messages and the solution are presented below:
Validation error message | Solution |
---|---|
No inverter specifications supplied. | Provide an inverter specification file (*.OND). |
No meteorological data supplied. | Provide a meteorological data file (*.TSV, *.DAT or *.gz). |
JSON validation issue: ArrayItemNotValid [...] PVPlant.Transformers[x ].TransformerCount |
There are no transformers in the PVPlant. Add at least 1 transformer to the layout. |
Transformer {name of transformer} has no inverters. Transformers should contain at least 1 inverter. | Add at least 1 inverter under the specified transformer or remove it from the layout. |
Inverter {name of inverter} has a zero or negative inverter count. | Adjust the number of inverters or remove it from the layout if empty. |
JSON validation issue: ArrayItemNotValid [...] PVPlant.Transformers[x ].Inverters[x ].InverterSpecID |
The property InverterSpecID is a required property and needs to be defined for the inverters. Revise the specified inverter(s). |
Inverter specification file with file name {inverter OND file name} not found. | The OND file for the specified inverter was not found. Add the file or change the InverterSpecID property to match one of the defined inverters. |
Horizon file with file name {name of horizon file} does not have data. | Verify there is a horizon file in the specified path or disable the use of the horizon profile with the property IncludeHorizon in the EnergyCalculationOptions object. |
Solar position file with file name {name solar position file} not found. | Verify the defined file exists. Used only when solar position data (solar elevation and solar azimuth) are to be passed to the SolarFarmer calculation. |
Meteo file with file name {name metdata file} not found. | Verify the name or path of the specified meteorological data file. |
Missing irradiance data were detected. {Number missing values} instance(s) presented issues (first NaN record: {first timestamp with missing data}). Assign value or missing data rule. | Fix the missing timestamps for required irradiance variables (GHI or POA) or use the property MissingMetDataHandling in the EnergyCalculationOptions object. |
Missing air temperature data were detected. {Number missing values} instance(s) presented issues (first NaN record: {first timestamp with missing data}). Assign value or missing data rule. | Fix the missing timestamps of air temperature (required for the calculation) or use the property MissingMetDataHandling in the EnergyCalculationOptions object. |
The distance between the location specified for the project and the location in the meteo file exceeds the supported limit of 150 km (approx. distance between locations {distance between sites} km). | Provide a weather file (*.DAT) within 150 km distance of the PV plant location. Only applicable to meteorological data files with coordinates. |
Module specification file with file name {name of PAN file} not found. | Provide the specified file name or edit it in the JSON file. |
The tracker systems are not defined in the horizontal single-axis tracking site. | Define the tracker systems in the JSON file. See TrackerSystem. |
The rack height specified in Mounting Type Specifications {name of mounting type specifications} is smaller than the module specifications. | Revise the value of rack height provided in RackHeight. |
Inverter specification file with file name {name of OND file} not found. | Provide the specified file name or edit it in the JSON file. |
Transformer {name of transformer, Inverter {name of inverter, Layout {name of layout}: There are strings specified in both right/left and front/back. | Revise the number of strings specified. Tracker layout expect values in right/left and fixed-tilt layouts in front/back. See NumberOfStringsInFrontRow, NumberOfStringsInBackRow, NumberOfStringsInLeftRow, and NumberOfStringsInRightRow. |
Transformer {name of transformer, Inverter {name of inverter, Layout {name of layout}: TotalNumberOfStrings is less than the sum of the number of strings in the front/back/right/left/isolated rows. It should be the same or greater. | Revise the number of strings specified in TotalNumberOfStrings. |
Mixture of monofacial and bifacial modules in the same PV plant is not currently supported. | The project you are trying to run is not currently supported. |
There are {number of soiling values} monthly soiling loss values for mounting type specification {name of mounting type specifications}. There should be 12. | Revise the number of soiling values in MonthlySoilingLoss and provide 12 (monthly) values. |
One or more of the monthly soiling loss values for mounting type specification {name of mounting type specifications} is less than 0. All values must be between 0.0 and 1.0. | Revise the values for soiling in MonthlySoilingLoss. |
There are {number of albedo values} monthly albedo values. There should be 12. | Revise the number of albedo values in MonthlyAlbedo and provide 12 (monthly) values. |
One or more of the monthly albedo values are out of range. All values must be between 0.0 and 1.0. | Revise the range of the values for monthly albedo provided in MonthlyAlbedo. |
3D calculations in the cloud or API are currently limited to 50 MW (your project has {project capacity} MW). Please run your calculation locally using the Desktop application or use the 2D cloud (API) calculation. GW project capacity for the 3D API is coming! | The 3D API calculation is currently limited to 50 MW. Please run larger sites locally using the Desktop application or use the 2D cloud (API) calculation. If necessary, email solarfarmer@dnv.com for further assistance. |