Challenge Overview
Challenge Overview
The Enlighten Systems API is a JSON-based API that provides access to performance data for a PV (Photovoltaic) system.
The goal of this challenge is to build a Ruby library that communicate with EnPhase API to collect a time series of energy produced on the system over its lifetime.
Challenge Requirements
Technology Stack
-
Ruby on Rails (Latest)
-
Ruby (Latest)
Demo Page
Create simple Ruby on Rails page that has the following :
-
An authorization button which redirects the user to your Enphase Authorization URL to get you back the user_id needed to make requests on behalf of the user, and to get the user's systems..
-
Add a panel for the enphase_energy method implemented in enphase.rb (see below) with fields needed
-
It will have button to submit a request.
-
It will have a text area to render response.
-
Here is sample of page, with Get Enphase Feed panel, you will create same panel for rest of the methods.
Function Requirement
The gem will contains a single Ruby module named Enphase, it contains single function ‘enphase_energy’ :
-
The rough code of the function is provided in challenge forums ‘enphase.rb’
-
Ruby gem name should be ‘ce-enphase’
-
Change method signature to include enphase system id as a parameter.
-
Change code to read Enphase API key from configuration.
-
Change code to read Enphase URL from configuration.
-
Add parameter validations.
-
Add error/exception handling.
-
This should include configurable timeout Enphase API interactions, both in OPEN and READ calls.
-
-
Write code to handle empty Enphase API response.
-
The function should return a Ruby object
-
The API response should be parsed, wrapped into Ruby Object.
-
We added additional requirements, check this thread post for more details http://apps.topcoder.com/forums/?module=Thread&threadID=852585&start=0&mc=1#2005308
Abstracting
Please make sure to create mixin to include the common code/functionality.
Writing Tests
All of your code should be test covered (RSpec preferred).
You will include sample test data required for tests, including test users in enphase.
Documentation
Because other programmers will be working with your code, and incorporating it into their projects, all functions must be documented in detail in the code (TomDoc preferred - In order to generate HTML properly you will need to use Yard TomDoc).
Coding Standard
Follows coding standards listed here:
https://github.com/copycopter/style-guide
Readme
Provide a detailed readme file using Markdown language with following information :
-
Overview
-
Setup Prerequisites
-
How to install
-
Usage Example
-
How to run Demo and Verify results.
-
Reference to Enphase API Documentation
-
Reference this Ruby Gem Documentation
-
Any details about any limitations of your solution.
Please note, we're judging this competition not just on the code, but also on the quality of the documentation, test coverage, and ease of use.
References
Documents
The existing source code is provided in challenge forums.
Final Submission Guidelines
Deliverable
-
All source code files and scripts that address the challenge requirement.
- Detailed readme file as clarified above.