So far, you’ve created an account for your prospective customer, confirmed their utility, and confirmed the correct electricity tariff. In this step you’ll collect more information on their current and historical electricity usage and costs. This information is stored in an account’s Usage Profiles (henceforth just called a “Profile”).

What is a Profile?

An Account object can have several profiles. Like accounts, each Profile object has a unique Genability generated ID, in this case called the profileId, as well as an optional (but recommended) providerProfileId that you can pass in that is unique to you (across all your accounts).

Each profile also has:

  • A service type that denotes what service it’s for – ELECTRICITY or SOLAR_PV for example
  • A source, which denotes where the data came from and more about the type of data it contains (e.g. meter data, bills, usage data, modeled solar data, and so on).
  • Zero or more properties that denote other things about the profile
  • A series of usage related data values that denote quantities of electricity usage (or solar production etc) in the form of Readings or a Baseline (more on which later).

For a full list of properties that you can set on a profile, see the Profile definition.

Creating an Electricity profile

Use an electricity profile to store a customer’s historical usage data. Most of the time, this will come in the form of one or more utility bills. In this example, let’s assume that you have three bills from your prospective customer. Specifically, you have:

  • January 1 - February 1: 597 kWh
  • February 1 - March 1: 521 kWh
  • March 1 - April 1: 572 kWh

To create an electricity profile for these bills, you’ll use the Profiles endpoint:

PUT /rest/v1/profiles
{
  "providerAccountId" : "example_account",
  "providerProfileId" : "example_account_electricity_profile",
  "profileName" : "Example Account Electricity Profile",
  "description" : "Pre-solar electricity usage data for prospective Sonoma County customer",
  "isDefault" : true,
  "serviceTypes" : "ELECTRICITY",
  "sourceId" : "ReadingEntry",
  "readingData" : [
    { "fromDateTime" : "2015-01-01",
      "quantityUnit" : "kWh",
      "quantityValue" : "597",
      "toDateTime" : "2015-02-01"
    },

    { "fromDateTime" : "2015-02-01",
      "quantityUnit" : "kWh",
      "quantityValue" : "521",
      "toDateTime" : "2015-03-01"
    },

    { "fromDateTime" : "2015-03-01",
      "quantityUnit" : "kWh",
      "quantityValue" : "572",
      "toDateTime" : "2015-04-01"
    }
  ]
}

The response will look like this:

{
  "status": "success",
  "count": 1,
  "type": "UsageProfile",
  "results": [
    {
      "profileId": "48652d0f-6440-42ea-9411-f027b8ccbe55",
      "providerProfileId": "example_account_electricity_profile",
      "profileName": "Example Account Electricity Profile",
      "accountId": "eb351142-e8bb-47a2-8f8e-9c89c0fa75ea",
      "description": "Pre-solar electricity usage data for prospective Sonoma County customer",
      "serviceTypes": "ELECTRICITY",
      "source": {
        "sourceId": "ReadingEntry",
        "name": "Readings",
        "type": "Reading",
        "sourceVersion": null
      },
      "isDefault": true,
      "dataStatus": 2,
      "properties": null,
      "readingDataSummaries": [
        {
          "quantityUnit": "kWh",
          "fromDateTime": "2015-01-01T00:00:00+00:00",
          "toDateTime": "2015-03-31T23:00:00+00:00",
          "numberOfReadings": 3
        }
      ],
      "baselineMeasures": null
    }
  ]
}

Creating a Solar profile

Now that you’ve uploaded some electricity usage data for your prospective customer, it’s time to model a solar system. A profile can also store energy production data from a solar system. The Genability API offers several methods to provide this data:

  1. You can use the integrated NREL PVWatts tool by passing in system size and other properties. This is the most commonly-used option for residential customers.
  2. If you have your own solar model, you can use our API to pass in your own estimated production for a year (ideally, hourly data).
  3. Alternatively, you can use our File Uploader to pass in a CSV, a PVSyst file, or a PVSIM file and we’ll automatically parse and load it.

For this tutorial, we will use PVWatts to model a 3 kW PV system facing south with a 20 degree tilt.

PUT /rest/v1/profiles
{
  "providerAccountId" : "example_account",
  "providerProfileId" : "example_solar_profile",
  "serviceTypes" : "SOLAR_PV",
  "source": {
    "sourceId":"PVWatts",
    "sourceVersion":"5"
  },
  "properties" : {
    "systemSize" : {
      "keyName" : "systemSize",
      "dataValue" : "3"
    },
    "azimuth" : {
      "keyName" : "azimuth",
      "dataValue" : "180"
    },
    "tilt" : {
      "keyName" : "tilt",
      "dataValue" : "20"
    }
  }
}

When creating a profile through the PVWatts API, there are a number of different parameters that you can use. The most important ones are the ones shown above: systemSize, azimuth, and tilt. The various loss parameters have reasonable defaults that should work in many cases, but you can adjust them any way you like.

Once you’ve made your request, the response should look like this:

{
  "status": "success",
  "count": 1,
  "type": "UsageProfile",
  "results": [
    {
      "profileId": "5632c5c1065e185554594f65",
      "providerProfileId": "example_solar_profile",
      "profileName": "Solar Production from PVWatts",
      "accountId": "ef671a01-cf1e-4b32-a151-5fd7c665130f",
      "description": "System size: 3.00 Generated by PVWatts V5",
      "serviceTypes": "SOLAR_PV",
      "source": {
        "sourceId": "PVWatts",
        "name": "PVWatts (integrated)",
        "type": "Reading",
        "sourceVersion": "5"
      }

    /* hourly production data */

    }]
}

Conclusion

You’ve now created an account, confirmed your customer’s utility and rate plan, and created profiles for electricity usage and solar production.

Next let’s analyze your customer’s savings.


Previous: Step 2 - Choose LSE & Tariff

Next: Step 4 - Savings Analysis