Project Details

PowerEYE is an application to receive and store power readings (watts) from the Rainforest Eagle HAN device by implementing a listener for the Eagle Uploader API. It even pushes the data into your Universal Devices ISY-994 home controller (if you have one).

This WebAPP is meant to be a personal-use application to enable both a persistence database for Eagle UploaderAPI messages and a frontend to expose and report, using charts & tables. It is a single instance, self contained application that includes 4 distinct components:
  1. webApp server,
  2. database,
  3. Eagle message listener and other supporting software classes,
  4. web presentation layer.
It stores all power reading information on your local networked computer in an embedded database with a configurable location and is only exposed through this WebApp.

Software Details

Functional Diagram


  1. Keep my power meter data local to my own home computer network
  2. View, chart, report and export my power usage
  3. Learn something new and have fun doing it
  4. Control Devices via my ISY-994 home controller
  5. Transfer power data to my ISY-994 home controller so me and my ISY can use the information to control devices in my smart-house 

Measurable Objectives

  1. Receive the Eagle Uploader API messages from the Rainforest Eagle
  2. Store the readings data, locally in a database
  3. Provide access to the data, in XML, for further analytics via RESTful style URLs
  4. A responsive Web Application for use through a web browser using AJAX and html5. Specifically target Android Pad size format.

Secondary Objectives

  1. Release as a Freely available application
  2. Release as open source
  3. Interface with UDI ISY-994
  4. Eat some PNE mini doughnuts

Functional Components

  1. PowerEYE Listener Java Servlet
  2. PowerEYE Helper Class
    • provide all back-end middleware functions 
    • an abstraction layer for the web interface to gather data from the DB
  3. Apache Derby Database (Embedded)
    • Store all the power, pricing and energy data
  4. Embedded Jetty Web Server/Servlet Engine
    • serve the PowerEYE listener and
    • to server the Web Interface
  5. PowerEYE WebAPP
    • HTML5, responsive, AJAX based user interface
    • Power panel
    • Power & Energy Usage Charts
    • Power & Energy tables 
      • EXPORT to XML, JSON, CSV, XLS, other formats
    • Embed Control for ISY-994 devices into WebAPP

REST style URLs

The PowerEYE servlet also provides your archived power, energy and pricing information to external applications on demand via HTTP requests that mimic REST style URLs. 

It is NOT a full REST implementation - it only listens to http GET methods, and really only mimics REST URLs, but it works.

It provides the data as XML format responses.
the following http request URLs have been implemented:

'recent'  requests dump the number of readings in the PowerEYE cache - as of PowerEYE version 1.0,  this cache size is a configurable parameter set in the options page.

As of v 1.0, full database table contents can be dumped out in XML via REST service calls:
                  <tablename> can be reading,   energy,   load_device,   load_type

      or with the optional <number of rows>
             positive number means sorted descending (newest 1st)
             negative number means sorted ascending (oldest 1st)

      These database calls are LOOOOooong so you might want to use a commandline URL query tool like
      wget, or perl or java or whatever.

Try them out on your own PowerEYE install, to see what they give you.

ISY-994 Variables

If you have a Universal Devices ISY-994 configured, this PowerEYE servlet will push the current power, energy (meter reading) and current price to 3 state variables in the ISY.

The ISY-994 state variables are:

  1. eagle.power.current.watts
  3. eagle.price.current.centsperkwhr
NOTE:the power reading gets updated (pushed) every ~10 seconds.

ISY-994 Device Control
You can control your Universal Devices ISY-994 Insteon devices from within PowerEYE!
Turn ON/OFF your lights or other controlled electric devices and then see the changes in power use, all in one WebApplication, from your phone, pad or computer.

Your devices show up on the PowerEYE Devices page when you have your ISY-994 configured.

Source Code

All the source code is included in the download packages. See the powereye/WEB-INF/src directory.

3rd Party Libraries


The WebApp engine is an embedded server based on Jetty version 9 - a Web and Java servlet/JSP engine and serves 2 functions
  1. Provides a Java Servlet Engine to serve as the listener for the Eagle Uploader API messages. It also manages the
    • http POST messages from the Eagle,
    • http GET messages from the user as a portal for AJAX calls,
    • as a way to send Eagle Uploader API commands back to the Eagle to change the operation of the EAGLE
    • REST GET messages in the URLs listed above

  2. a Java WebApp Server for, serving the web page reporting and configuration


The PowerEYE listener servlet uses and includes the com.oreilly.servlet package (from to help out.
  • The source code, object code, and documentation in the com.oreilly.servlet package is copyright and owned by Jason Hunter.
  • Further licensing details are in the included PowerEYEWebAPP-LICENSE.txt and online.

Apache Derby

The database used by PowerEYE is an Apache Derby embedded instance.
  • It stores ALL the messages that the Eagle sends out so you can go back to them and analyze them any which way you want.
  • The DB files are in a sub-directory called EagleDB.


The web presentation pages are exposed through a (optionaly secure SSL) Java WebAPP.
  • It uses an Advanced jQuery and HTML5 UI framework called jQWidgets for all its functional widgets.
  • This WebAPP must only be used for non-commercial personal use.
  • Utility customers are allowed (and encouraged) to use PowerEYE for their personal use.

WebARTS Library

Both the WebAPP presentation layer and the supporting Java source files depend on
the WebARTS library of widgets and tools.


You are allowed to use and run all components of this application for your personal use for free.
Utility customers are allowed (and encouraged) to use PowerEYE for their personal use.

You are also allowed to see and make changes to the various parts or re-distribute it, but you need to do so under the following licenses: