Category Archives: ICS699-Fall2009

WattDepot first release available

As usual, the last 10% took longer than expected, and I spent all last week finishing WattDepot up. It now has all the functionality required by the first WattDepot assignment in ICS 413/613. Virtual sources are working (except for some exceptional cases), and interpolated resources like power, energy, and carbon all work. There’s also a new wiki page explaining how to use the WattDepot client library. To help those unfamiliar with the physical concepts behind electrical power, I wrote a page explaining those concepts. There is now a public distribution of WattDepot available, but no installation documentation so not really useable outside the class context yet.

While getting WattDepot to this point was pretty exhausting, there’s still a laundry list of refactoring and features needed to make it more generally functional. I’ll be working on that this week.

Plans from last week:

  • Finish implementing Power resource GET for a timestamp
    • done
  • Design and implement Energy resource GET for a range of times
    • done
  • Design and implement Carbon resource GET for a range of times
    • done
  • Refactor some of the bogus WattDepot code that has accumulated
    • started, but much more to be done

Other accomplishments from last week:

  • Discovered that PMD failures were not failing Hudson builds for projects derived from hackystat-developer-example. Fixed for wattdepot, oscar-project, and hackystat-developer-example, but others could be lurking.

Pointers to work products:

Plans for this week:

  • Make list of refactoring changes to implement
  • Start designing real persistence layer
  • Make Saunders demo with virtual source Google visualization?
  • Start planning for next 413/613 assignment
  • Write WattDepot server installatoin and configuration wiki page

Cool links:

  • UHM thesis/dissertation LaTeX style. This has been worked on by many hands, and I recently passed on the link to ICS MS student who passed his defense and now needs to work on formatting. 🙂
Advertisements

Oscar support almost done

As planned, the past week has been all about building out the WattDepot functionality required by Oscar, specifically the first assignment using Oscar data in ICS 413/613. I’ve made massive progress, but still not quite finished with the requirements for the assignment. Planning to finish that up today, and then probably do some refactoring and prioritization of additional WattDepot functionality.

Plans from last week:

  • Finish input client for OSCAR data
    • done
  • Design and implement Source summary resource
    • done
  • Implement GET SensorData for a range of times
    • done
  • Design and implement Power resource GET for a timestamp
    • done for normal sources, almost done for virtual sources
  • Design and implement Energy resource GET for a range of times
    • not done
  • Design and implement Carbon resource GET for a range of times
    • not done
  • Implement virtual sources
    • done, though as new features are added they will need virtual source loving

Other accomplishments from last week:

  • Discovered that PMD failures were not failing Hudson builds for projects derived from hackystat-developer-example. Fixed for wattdepot, oscar-project, and hackystat-developer-example, but others could be lurking.

Pointers to work products:

Plans for this week:

  • Finish implementing Power resource GET for a timestamp
  • Design and implement Energy resource GET for a range of times
  • Design and implement Carbon resource GET for a range of times
  • Refactor some of the bogus WattDepot code that has accumulated

Cool links:

BMO data importing, onward to Oscar

It took longer than I had planned for, but I now have a client that polls Building Manager Online for data every 15 minutes, and inputs that data into WattDepot, where it can be displayed in a Google Visualization API graph. Discovered that Saunders’ Acquisuite box is set to only upload meter data every hour, so the graphed data is not as fresh as it could be.

This week has a singular focus: implement all the WattDepot functionality required to support the first ICS 413/613 assignment on WattDepot. Philip has written up the assignment, and now it is just a matter of implementation.

Philip got Google PowerMeter working with his TED 5000, which is cool. Hopefully we can extract data directly from PowerMeter, thus avoiding the need to reconfigure firewalls to allow direct access to the TED.

Plans from last week:

  • Finish WattDepot client for Building Manager Online
    • done, finally
  • Implement input client for OSCAR data
    • in progress, should be done by end of day on Monday
  • Write API for Power resource
    • not done
  • Write API for Carbon resource
    • not done
  • Start implementing Power resource
    • not done

Other accomplishments from last week:

Pointers to work products:

Plans for this week:

  • Finish input client for OSCAR data
  • Design and implement Source summary resource
  • Implement GET SensorData for a range of times
  • Design and implement Power resource GET for a timestamp
  • Design and implement Energy resource GET for a range of times
  • Design and implement Carbon resource GET for a range of times
  • Implement virtual sources

Cool links:

  • None to report.

BMO data import in progress

I got sick early last week, which took the wind out of my sails. I ended up being not nearly as productive as I had hoped. Writing and practicing my presentation to the REIS group also took up some time.

The demo client is well underway, and should be ready to fetch data in the next day or so. After that, I need to write a client to input data from OSCAR, now that Philip has it producing simulated Oahu power grid output. Then I need to design and implement the Power and Carbon resources so the ICS 613 students can work on their projects.

Big news in the DIY smart grid today, as Google announced that the TED 5000 is the first non-utility device supported by Google PowerMeter. Woot!

Plans from last week:

  • Clean up loose ends with visualization API
    • done, found out I was using a reserved word for one of my column index names. Doh!
  • Write WattDepot client for Building Manager Online
    • in progress, lots of refactoring from tabular data input client
  • Embed timeline gadget in web page
    • done, now just need to have some dynamic data in there

Other accomplishments from last week:

  • Presented our Smart Consumer work to the REIS group
  • Prepared some Saunders meter data for Dave Nixon

Pointers to work products:

Plans for this week:

  • Finish WattDepot client for Building Manager Online
  • Implement input client for OSCAR data
  • Write API for Power resource
  • Write API for Carbon resource
  • Start implementing Power resource

Cool links:

Google Visualization data source API in the house

WattDepot now has a minimal implementation of the Google Visualization data source API, via the Google data source library. It’s working with the table visualization (boring) and the annontated timeline visualization (nifty). There are still lots of wrinkles to be worked out, but I can input data into WattDepot via HTTP, and get it back out as custom XML or JSON via HTTP. Woot!

For the rest of the week, I will be working towards setting up a client on dasha that pulls Saunders Hall power data from BMO online periodically, and then sends that data to a WattDepot server. I will also get the timeline visualization working to the point that it can display the Saunders data.

Plans from last week:

  • Implement Google Visualization data source API
    • minimal version checked into repository
  • Upload demo distribution to Google Code site
    • not done, not quite ready for distribution
  • Add Energy resource to REST API document
    • not done, but clarified requirements with Philip
  • Add Carbon resource to REST API document
    • not done, but clarified requirements with Philip
  • Start implementing Energy resource
    • not done, actually will be implementing a Power resource

Other accomplishments from last week:

Pointers to work products:

Plans for this week:

  • Clean up loose ends with visualization API
  • Write WattDepot client for Building Manager Online
  • Embed timeline gadget in web page

Cool links:

WattDepot unit testing

Last week I continued work on the WattDepot implementation. The unit tests of DbManager took much longer to write and debug than I expected. I ended up doing a lot of refactoring, and probably should do even more refactoring to make the test methods smaller (right now have too many test cases in each test method).

Now that I have a temporary database layer, I’m focusing on the User, Source, and SensorData resources. I started on the User resource last week, need to push through the other resources now. I also need to start working with CouchDB so I can have a real persistance layer, and define the API for the Energy and Carbon resources.

The deadline for the First International Workshop on Software Research and Climate Change is coming up, so I need to figure out if I am going to attend, start writing position papers, make travel plans, and apply for GSO travel grant.

Plans from last week:

  • Finish writing DbManager tests
    • done
  • Implement User resource
    • started, not complete
  • Implement Source resource
    • not done
  • Start reading CouchDB manual
    • not done
  • Install CouchDB
    • not done
  • Add Energy resource to REST API
    • not done
  • Videotape REIS seminar
    • done, but the footage is suboptimal
  • Write followup email to Blue Planet
    • not done, but followup meeting has been scheduled

Other accomplishments from last week:

  • Figured out why JAXB wasn’t working with IvyRoundup (requires manual download), and suggested change to their XML stylesheet to emphasize this fact
  • Started reading the GSO travel grant application process
  • Became primary ICS representative to the GSO
  • Downloaded video from REIS seminar

Pointers to work products:

Plans for this week:

  • Finish implementing User resource
  • Implement Source resource
  • Implement SensorData resource
  • Start reading CouchDB manual
  • Install CouchDB
  • Add Energy resource to REST API

Cool links:

WattDepot storage layer coming along

This is the first blog post of the fall semester, and finds me still grinding away on the WattDepot implementation. Things are going well, but not at the pace I would like. I’m supposed to have everything working by mid-September, which is going to require a major push.

Last week I finished the database abstraction layer, and wrote a memory-only database implementation. This will allow me to continue to push forward on all fronts while I figure out CouchDB. I’m still working on the tests of the DB layer, which should test the CouchDB storage as well as the memory implementation.

Philip pointed out last week that WattDepot needs some higher level resources to support the functionality needed for ICS 413/613. Specifically, it needs an Energy resource that can report on the energy produced or consumed by a Source over a period of time, and a Carbon resource that can compute the carbon emissions of a Source, given its carbon intensity (GHG emitted in g of CO2E per kWh). Both these new computed resources need to be added to the REST API, and then implemented.

Plans from last week:

  • Write DB abstraction layer
    • done
  • Implement simple memory storage of data
    • done, but still writing tests
  • Work on User resource
    • not done
  • Attend first REIS seminar this Thursday 4:30-5:30 PM
    • done

Other accomplishments from last week:

  • Met Blue Planet Foundation folks about their upcoming conservation contest
  • Realized that workshop in Florida I was thinking about attending is in October!
  • Became primary ICS representative to the GSO

Pointers to work products:

Plans for this week:

  • Finish writing DbManager tests
  • Implement User resource
  • Implement Source resource
  • Start reading CouchDB manual
  • Install CouchDB
  • Add Energy resource to REST API
  • Videotape REIS seminar
  • Write followup email to Blue Planet

Cool links:

  • None