Flukso on Github

This past week we have been testing Git and Github as Flukso's version control system and repository respectively. Being very impressed by both (The import from an existing SVN repository into Github is a killer!), and getting more confident at using these tools all the while, we have decided to switch to Github for hosting the official Flukso code and hardware schematics/layout.

You can find the project here. Currently a master and develop(ment) branch exists. If you'd like to keep up to date with the most recent developments, there's an RSS feed that tracks the commit history. Should you wish to check out the code and poke around, then this is a good introductory Git book available online, written by one of the Github developers. Although I don't have any experience with the Github issue tracking system, I'd like to suggest we use Github for submitting bug reports as well.

Fork me!

Device fingerprinting

I came across a post on Engadget today [1]. It mentions Intel experimenting with the detection of specific household appliances being switched on/off through the use of a single sensor plugged into a power socket. I had read about a taxonomy of load signatures being proposed, based on device-specific transient voltage-current trajectories in [2]. Being able to single out individual appliances and switches from a single sensor sounds like the holy grail of domestic energy monitoring. Flukso data streams could be annotated with specific events (dishwasher turned on, hot water circulation pump running, …) by the use of just a single additional sensor. No need to start installing a plethora of wireless sensor nodes all around the house.

Some further Googling led to the excellent paper in [3]. It discusses similar research conducted at Georgia Tech. The researches detect the transient voltage pulses being generated on the power lines in the 100Hz-100kHz spectrum by a device being switched on/off. FFT transformation allows these pulses to be characterized by the system as vectors containing their spectral information. A Support Vector Machine technique is used for classification of newly detected pulses. The SVM does require initial training in order to successfully classify future pulses. The paper mentions a 90% success rate. Similar research from the Ubicomp Lab at the University of Washington is discussed in [4] and [5]. This time microphones or a single pressure sensor are attached to a home's water piping to detect the household's water usage patterns.

A very interesting read!

[1] Intel's experimental sensor analyzes appliance power consumption from single outlet
[2] A Taxonomy of Load Signatures for Single-Phase Electric Appliances
[3] At the Flick of a Switch: Detecting and Classifying Unique Electrical Events on the Residential Power Line
[4] Sensing from the Basement: A Feasibility Study of Unobtrusive and Low-Cost Home Activity Recognition
[5] HydroSense: Infrastructure-Mediated Single-Point Sensing of Whole-Home Water Activity

Update 18/04: Added a link to the Ubicomp Lab's project page.

6-position screw terminal

All pending and future Fluksometer orders during our beta phase will be made with a 6-position screw terminal block. A single-phase Fluksometer will thus be able to read out two independent current clamps and one digital S0-type pulse output. A pulse output is present on most DIN-rail based kWh energy meters. If such an energy meter has a constant of 1000imp/kWh or 1 pulse per watthour, then it can be directly connected to the Fluksometer. The clamps need to connect to positions 1(+)/2(-) and 3(+)/4(-), the pulse output to positions 5(+)/6(-).

A three-phase Fluksometer with a 6-position connector will have its clamps connected in series. So clamp 1 will be on positions 1(+)/2(-), clamp 2 on 2(+)/3(-) and clamp 3 on 3(+)/4(-). Positions 5(+)/6(-) are again reserved for attaching a pulse output to the Fluksometer.

We currently only activate the 'main' input in the Flukso database. So either a single clamp (1-phase) or three clamps in series (3-phase). If you wish to experiment with additional inputs, let us know and we'll enable them in the database.

Note: This is not an April fools' joke!

JSON/REST API released

Flukso announces the immediate availability of its JSON/REST API at the 2010 CeBit exhibition in Hannover. Fluksonians are now able to retrieve time series data of their electricity sensors through the Flukso API. Let's start with a working example:

curl -k -v -X GET -H "Accept: application/json" -H "X-Version: 1.0"
-H "X-Token: d8a8ab8893ea73f768b66b45234b5c3a"
"https://api.flukso.net/sensor/c1411c6b4f9910bbbab09f145f8533b9?interval=hour&unit=watt"

Where:

  • X-Version: Denotes the desired API version. Should be set to 1.0.
  • X-Token: A token associated with the specific sensor id. Different tokens per sensor will allow for varying access permissions, e.g. only allow data in 'month' resolution. This feature will become available in the near future. We now provision a single token per sensor. The token can be found next to its respective sensor id (see below).
  • Sensor: Your sensor id's are displayed under the 'my account' -> 'sensor' tab. Just substitute the above sensor id and token with your own and you're ready to go.
  • Interval: Should be one of {hour, day, month, year, night}
  • Unit: Should be one of {watt, kwhperyear, eurperyear, audperyear}

Data is returned as an array of [unix timestamp, value] tuples, where value will be reported as a "nan" string when no data is available for the interval.

[[1267802160,69], [1267802220,69], [1267802280,73], ... , [1267805760,"nan"]]

The unix timestamp denotes the end of the interval for which the value is reported. So in the above example [1267802220,69] means that in the one-minute interval [1267802160, 1267802220] 69 watts of electricity has been consumed.

Thanks to Geert and Mathias for their valuable feedback during alpha testing.

Have fun!

Update 15/03/10: Added info on where to retrieve token information.

Old vs new fridge

During my quest to reduce our household's electricity consumption, I noticed that our 20-year-old fridge's compressor seemed to be running quasi continuously. As this was a rather clear indication of an inefficient appliance, we decided to swap it out for a new one. I somehow managed to convince my wife to postpone our purchase by a few weeks so that I could hook up a Fluksometer to the old fridge. I also monitored the new fridge to do some benchmarking. In a previous post I already mentioned that we were able to reduce our average nighttime electricity consumption from 130 watts to around 80 watts by swapping this 20-year-old fridge for an new 'A' labeled one. Here's a more detailed chart displaying the collected data over a 24h period.

You can clearly see the old fridge having only four cooling cycles during this particular day, lasting between two to four hours each and consuming approx. 140 watts peak. The new fridge's data shows a more repetitive pattern with one to two, shorter cooling cycles per hour and power consumption mostly well below 60 watts. Extrapolating these measurements to a full year would result in our old fridge consuming 671kWh/year while our new one will only draw 161kWh/year! Money-wise this translates into running costs of 120EUR/year and 30EUR/year, respectively. This means our new fridge will have a payback period of less than four years.

This benchmarking exercise once again shows that negawatts, electricity that isn't created due to energy efficiency, can contribute significantly towards a greener life. In this specific case it doesn't require any behavioural change in our household whatsoever. With the new fridge in place we expect our five-person household to draw less than 2000kWh in 2010.