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:
- webApp server,
- Eagle message listener and other supporting software classes,
- web presentation layer.
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.
- Keep my power meter data local to my own home computer network
- View, chart, report and export my power usage
- Learn something new and have fun doing it
- Control Devices via my ISY-994 home controller
- 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
- Receive the Eagle Uploader API messages from the Rainforest Eagle
- Store the readings data, locally in a database
- Provide access to the data, in XML, for further analytics via RESTful style URLs
- A responsive Web Application for use through a web browser using AJAX and html5. Specifically target Android Pad size format.
- Release as a Freely available application
- Release as open source
- Interface with UDI ISY-994
- Eat some PNE mini doughnuts
PowerEYE Helper Class
- PowerEYE Listener Java Servlet
Apache Derby Database (Embedded)
- provide all back-end middleware functions
- an abstraction layer for the web interface to gather data from the DB
Embedded Jetty Web Server/Servlet Engine
- Store all the power, pricing and energy data
- serve the PowerEYE listener and
- to server the Web Interface
- 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.
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:
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.
All the source code is included in the download packages. See the
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
- 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
- a Java WebApp Server for, serving the web page reporting and configuration
listener servlet uses and includes the com.oreilly.servlet package (from http://www.servlets.com/cos/
) 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.
used by PowerEYE
is an Apache Derby
- 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
- 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.
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:
- This WebAPP presentation layer files and web content (item 4 in the the above functional components)
- The supporting Java source files (items 1, 2 & 3 in the the above functional components)