Key Information

Register
Submit
The challenge is finished.

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.

ELIGIBLE EVENTS:

2015 topcoder Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30049700