Overview of the ACme platform

The ACme system consists of three tiers: the ACme node which provides a metering and control interface to a single outlet, a network fabric which allows this interface to be exported to arbitrary IP endpoints, and applications which use this networked interface to provide various power-centric applications. The ACme node consists of a compact wireless Epic module and a dedicated energy metering IC to provide real, reactive, and apparent power measurements, with optional control of attached appliance. The network includes a complete IPv6/6loWPAN stack on every node, as well as a edge router that bridges between the sensor network and other IP networks. The application tier receives and stores readings in a database and uses a web server for visualization.

ACme network

Please refer to this ACme Quick Start Guide for development of ACme.


ACme board design files are released under a modified BSD license and can be downloaded here and here.

The hardware consists four main sections - the power supply, which tags power directly from the AC electric plug; input filters and the energy meter, which measures power across a sensing resistor; the micro-controller and radio, which communicates with the energy chip via SPI and with the rest of the world via a 2.4GHz radio; and the solid state relay, which switches the power.

The power supply is a simple half-wave rectifier with cut-off diodes that directly connects to the AC line. This avoids using transformer and reduces cost and space. Current channel sensing is done using a sensing resistor. The ADE7753 chip provides real, active, and reactive power measurements via both voltage and current channels. Energy measurements are internally stored in registers and are accesses by the EPIC uController. Readings are read out wirelessly via the onboard radio, connected to a printed inverted-F antenna. The solid state relay is controller directly by the EPIC uController, and is capable of switching tens of amps of current.

Multiple ACme's can form a wireless mesh network, and can be connected to the Internet in many different ways.


The driver is implemented in TinyOS. The API is as shown below:

            interface ACMeter {
                    // Set the switch to ON or OFF 
                    // TRUE = ON; FALSE = OFF
                    command bool set(bool state);

                    // Return the current state of the switch
                    command bool getState();

                    // Start reading energy values at a regular interval
                    command error_t start(uint16_t interval);

                    // Stop sampling
                    command error_t stop();

                    // Returns the energy measured during one interval
                    // event is signaled continuous at rate interval
                    event void sampleDone(uint32_t energy);

The module ACMeterC provides SplitControl? and ACMeter used by the top application. ACMeterC configures the chip level component ADE7753M with ACMeterM for correct operation.

Source code can be found here:
code/ACMeter/tos/sensorboards - ADE7753 energy meter chip driver and ACme sensor board driver
code/ACMeter/apps - Example applications

Network Architecture

The basic architecture of our network is shown below. Sensor nodes (ACme devices) route packets between each other, and to and from edge routers (6lowcosts). Connectivity to the internet is provided via a small set of edge routers which function as a gateway to the IPv6 internet. Because of the identiļ¬cation of individual sensors as distinct identities, we chose IP as the network layer. Using IP all the way to the ACme sensor nodes provides transparent connectivity between the internet and our subnet, and allows many common tools like tracert6, ping6, and nc6 to be used to troubleshoot the network. For instance, each ACme sensor contains a shell component which runs on a well-known UDP port and allows interactive control of a single end device.

For more information on the Berkeley IP/6lowPAN project, please click here.