PV Free

A public API for PV modeling parameters.

Usage

Browsing to pvfree.herokuapp.com/api/v1/pvinverter/?format=json will display a JSON string with the first 20 records. The endpoint and query string to obtain the next set api/pvinverter/?limit=20&offset=20 is contained in the next key of the string as are the endpoints for each inverter. Note: the query string ?format=json is only necessary when using the API url directly in a browser to display the response.

Tastypie

The API is generated by the Tastypie django extension. Add the following endpoints to the base URL, https://pvfree.herokuapp.com/:

Python Requests

Python has several libraries for interacting with URLs. The Requests package is available from PyPI.

>>> import requests
>>> response = requests.get('https://pvfree.herokuapp.com/api/v1/pvinverter/set/1;3;5/')
>>> response
  <Response [200]>
>>> response.status_code
  200
>>> response.content
  {"objects": [{"C0": -2.48104842861e-05, "C1": -9.0149429405099999e-05, "C2": 0.00066889632690700005, "C3": -0.018880466688599998, "Idcmax": 10.0, "MPPT_hi": 50.0, "MPPT_low": 20.0, "Paco": 250.0, "Pdco": 259.52205054799998, "Pnt": 0.02, "Pso": 1.7716142241299999, "Sandia_ID": 1399, "Tamb_low": -40.0, "Tamb_max": 85.0, "Vaco": 208.0, "Vdcmax": 65.0, "Vdco": 40.242603174599999, "id": 1, "manufacturer": "ABB", "name": "MICRO-0.25-I-OUTD-US-208", "numberMPPTChannels": 1, "resource_uri": "/api/v1/pvinverter/1/", "source": "CEC", "vintage": "2014-01-01", "weight": 1.6499999999999999}, ...]}

cURL

Use curl from the command line or libcurl programmatically

$ curl -H "Accept: application/json" https://pvfree.herokuapp.com/api/v1/pvinverter/
  {"meta": {"limit": 20, "next": "/api/v1/pvinverter/?limit=20&offset=20", "offset": 0, "previous": null, "total_count": 1742}, "objects": [{"C0": -2.48104842861e-05, "C1": -9.0149429405099999e-05, "C2": 0.00066889632690700005, "C3": -0.018880466688599998, "Idcmax": 10.0, "MPPT_hi": 50.0, "MPPT_low": 20.0, "Paco": 250.0, "Pdco": 259.52205054799998, "Pnt": 0.02, "Pso": 1.7716142241299999, "Sandia_ID": 1399, "Tamb_low": -40.0, "Tamb_max": 85.0, "Vaco": 208.0, "Vdcmax": 65.0, "Vdco": 40.242603174599999, "id": 1, "manufacturer": "ABB", "name": "MICRO-0.25-I-OUTD-US-208", "numberMPPTChannels": 1, "resource_uri": "/api/v1/pvinverter/1/", "source": "CEC", "vintage": "2014-01-01", "weight": 1.6499999999999999}, ...]}

Java

Use java.net package to connect and javax.json to use the resource.

import java.net.*;
import java.io.*;
import javax.json.*;
...
URL pvfree = new URL("https://pvfree.herokuapp.com/api/v1/pvinverter/");  
URLConnection pvfreeConn = pvfree.openConnection();
pvfreeConn.addRequestProperty("Accept","application/json");
BufferedReader in = new BufferedReader(
  new InputStreamReader(pvfreeConn.getInputStream()));
JsonReader jsonReader = Json.createReader(in);
JsonObject array = jsonReader.readObject();
jsonReader.close();

Filters

The following fields can be filtered using Django ORM. Add the query strings to the API base URL, api/pvinverter. Note: use encoded URI components for the following reserved query string characters: for "&" use "%26", for "+" use "%2B", for "?" use "%3F" and for "=" use "%3D".

Contributions

Contribute to PV Free on GitHub.