Skip to content

techgaun/ex_nrel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ExNrel

Build Status Hex version Hex downloads

NREL(https://developer.nrel.gov/) Api client for Elixir

Installation

You can install it from hex as below:

  • Add ex_nrel to your list of dependencies in mix.exs:

    def deps do
      [{:ex_nrel, "~> 0.2.0"}]
    end
  • Ensure ex_nrel is started before your application:

    def application do
    [applications: [:ex_nrel]]
    end

Usage

Configuration

In your configuration, add the following block:

config :ex_nrel,
  api_key: System.get_env("NREL_API_KEY"),
  format: "json"

Output can be either json or xml. You can also specify format as part of your queries in any of the API calls to get the data of specific format. For example, ExNrel.Electricity.UtilityRate.get(lat: 39.323, lon: -94.23, format: "json") explicitly returns json overriding the default configuration.

ExNrel supports following APIs offered by NREL.

Commerial Building Resources (resources, events and vocabularies)

iex> ExNrel.Buildings.CBR.get(portal: "Energy")

iex> ExNrel.Buildings.CBR.events(portal: 5)

iex> ExNrel.Buildings.CBR.vocabularies(name: "audience-types")
iex> ExNrel.Electricity.EnergyIncentives.get(lat: 39.323, lon: -94.23)

iex> ExNrel.Electricity.EnergyIncentives.get(lat: 39.323, lon: -94.23, category: "hvac")

iex> ExNrel.Electricity.EnergyIncentives.get(lat: 39.323, lon: -94.23, category: "hvac", technology: "air_conditioners")

iex> ExNrel.Electricity.EnergyIncentives.get(address: "1712 Main Street, Kansas City")
iex> ExNrel.Electricity.UtilityRate.get(lat: 39.323, lon: -94.23)

iex> ExNrel.Electricity.UtilityRate.get(address: "1712 Main Street, Kansas City")
iex> ExNrel.Electricity.CensusRate.get(id: 101, lat: 39.323, lon: -94.23)

iex> ExNrel.Electricity.CensusRate.get(id: 101, address: "1712 Main Street, Kansas City")
iex> ExNrel.Solar.PVWatts.get(lat: 39.323, lon: -94.23)

iex> ExNrel.Solar.PVWatts.get(address: "1712 Main Street, Kansas City")

iex> ExNrel.Solar.PVWatts.get(lat: 39.323, lon: -94.23, timeframe: "hourly")
iex> ExNrel.Solar.Dataset.get(lat: 39.323, lon: -94.23, radius: 20)

iex> ExNrel.Solar.Dataset.get(address: "1712 Main Street, Kansas City")

iex> ExNrel.Solar.Dataset.get(lat: 39.323, lon: -94.23, all: 1)
iex> ExNrel.Solar.Resources.get(lat: 39.323, lon: -94.23)

iex> ExNrel.Solar.Resources.get(address: "1712 Main Street, Kansas City")

API Response

The response from the API is parsed through a simple parser. For JSON, the poison package does the job and for XML, currently ExNrel returns the body as string.

The response can be one of:

{:ok, body, [total_limit: api_rate_limit, remaining_limit: api_remaining_limit]}

{:error, %{reason: "failure_reason"}}

Contribution

  • You can add support for remaining APIs or fix the bug in existing ones.
  • The XML parsing is not in-place.
  • Rate limiting headers might be useful to handle rate limiting issues. (Part of response in ExNrel >= 0.2.0)

Author

Releases

No releases published

Sponsor this project

 

Packages

No packages published

Languages