class Enphase::Client
Attributes
api_key[R]
datetime_format[R]
user_id[R]
Public Class Methods
new(api_key:, user_id:, datetime_format: 'iso8601')
click to toggle source
datetime format can be ‘iso8601’ or ‘epoch’, defaults to ‘iso8601’
# File lib/enphase/client.rb, line 15 def initialize(api_key:, user_id:, datetime_format: 'iso8601') @api_key = api_key @user_id = user_id @datetime_format = datetime_format end
Public Instance Methods
inverters(site_id:)
click to toggle source
Inverters Summary Endpoint
# File lib/enphase/client.rb, line 32 def inverters(site_id:) get_json(url: 'systems/inverters_summary_by_envoy_or_site', params: {site_id: site_id}) end
stats(system_id:, **params)
click to toggle source
Stats Endpoint
# File lib/enphase/client.rb, line 22 def stats(system_id:, **params) get_json(url: "systems/#{system_id}/stats", params: params) end
summary(system_id:, **params)
click to toggle source
Summary Endpoint
# File lib/enphase/client.rb, line 27 def summary(system_id:, **params) get_json(url: "systems/#{system_id}/summary", params: params) end
systems(**params)
click to toggle source
Index Endpoint
# File lib/enphase/client.rb, line 37 def systems(**params) get_json(url: 'systems', params: params) end
Private Instance Methods
base_url()
click to toggle source
# File lib/enphase/client.rb, line 59 def base_url 'https://api.enphaseenergy.com/api/v2' end
get_json(url:, params: {})
click to toggle source
# File lib/enphase/client.rb, line 42 def get_json(url:, params: {}) conn = Faraday.new( url: "#{base_url}/#{url}", params: params.merge({key: api_key, user_id: user_id, datetime_format: datetime_format}) ) do |f| f.request :json # encode req bodies as JSON and automatically set the Content-Type header f.response :json # decode response bodies as JSON f.adapter :net_http # adds the adapter to the connection end response = conn.get if response.success? response.body else raise Enphase::ClientError.new("API returned status #{response.status}: #{response.reason_phrase}") end end