AMDR
Attested Metering Demand Response Testbench
Overview
AMDR is a flexible testbench and suite of tools to construct and evaluate Demand Response (DR) systems. It has been used to evaluate the Meter Gateway Architecture and is still in use in ongoing research projects. It is designed to be extensible and support many types of sensors and actuators.
The most prominent part of the testbench is its graphical component, as shown above. This screen is split into three parts. The top part is a toolbar used to control the DR system. The play and pause buttons control a thread that periodically updates components that require such functionality. The spinner control next to them adjusts that update interval. The open and save buttons are currently non-functional, but will eventually save and reload the configuration of the testbench.
The tree on the left-hand side of the screen is used to configure and navigate the system. Contextual menus are used to add and remove components from the tree, representing sensors, actuators, data monitors, or device controllers. Sensors are used to obtain input from the physical environment or perhaps a digital data source. Actuators are used to influence the physical environment or a digital data store. Data monitors aggregate and store state information from sensors or actuators and persist it, display it, or use it as input to a control process in the system. Device controllers use that data or data from another source to generate new setpoints to be implemented by actuators.
Four types of sensors and actuators are currently supported:
- Trendpoint EnerSure electrical submeter: RS-232 Modbus device that can simultaneously monitor the real and reactive current consumption, voltage, and other parameters of up to 84 devices, using current transformers.
- AVR Programmable Thermostat: Monitors the current temperature of an environment using a Dallas 1-wire device and transmits that information over a serial port using a custom binary protocol. Also serves as an actuator, supporting configurable setpoints that control the operation of an onboard relay.
- X10 CM19A home automation controller: This is a USB device that serves as both a sensor and actuator since it can both receive and transmit codes used to control home automation devices (light switches, etc.)
- Linux battery monitor: Linux exports a lot of information about battery charge status, and this information can be access from within our framework.
Several types of data monitors are supported. One of them provides a graphical summary of the data over time, as shown above. It can also output a CSV-formatted record of those values. Another monitor can be attached to ammeters (electrical current meters) to convert current readings into an energy bill, based on fluctuating electricity prices known as real-time prices. The prices can be loaded from a CSV-formatted file.
To flexibly implement controls over actuators, we have embedded a Scheme interpreter into our testbench. To use it, the administrator must attach a special data monitor to all parts of the system that will provide data to be used to generate new setpoints. Up-to-date values from those monitors are then made available to Scheme script engines that are attached to individual actuators in the system. The script within the engine is periodically evaluated, and its output is used as the new setpoint for the actuator. In this way, arbitrarily-complex setpoint generation algorithms can be encoded in the system.
Getting the Prototype
We have released the AMDR prototype code as a part of the jXBee project. Thus, the first step required to construct a DR system is to check out the code from the jXBee repository:
svn co https://jxbee.svn.sourceforge.net/svnroot/jxbee/amdr/trunk amdr
Next, setup any of the supported DR devices, as described above. Only a few conditions on each node must be observed to support AMDR:
- Only 32-bit Windows XP and 32- and 64-bit Fedora Linux have been tested.
It is simplest to build and run AMDR from within the Eclipse IDE. Use the following instructions:
- Start Eclipse.
- Create a new Java project, using the existing source from the "amdr" directory that you checked out earlier.
- Run the
edu.uiuc.cs.seclab.meter.testbench.Testbenchclass as a Java application. - Right-click in the white space on the left-hand side of the screen repeatedly to add components.
- Left-click on components in the tree to configure them using the tools that then appear on the right-hand side of the screen.
- Use the play and pause buttons to control the progress of the system.
Please provide feedback to mdlemay2 _ cs _ uiuc _ edu, where the underscores are replaced with an at symbol and periods where appropriate. Thanks!