CurrentCost hacking – starting to identify appliance power usage

June 3rd, 2008

I needed a break from work tonight, so went back to playing with the CurrentCost meter – a chance to try a few new things.

The objective
I want to make a start on identifying how much electricity different things in my house use. To begin, I’m going to start with a very manual user-driven approach:

Subscribe to updates from the CurrentCost meter, and when a significant change in usage occurs, ask me what I’ve just switched on or off, and collect that information to build up a record of how much electricity different devices use.

How?
It’s already quite late, so I just wanted to hack a quick first version together. I decided to write it as a small Java app.

As I’ve mentioned before, I’m publishing the CurrentCost readings to a small broker running on my home server. The plan was to write a Java application that uses MQTT to subscribe to updates from the broker.

Why? Because I’ve not used Java on the Slug before, or with MQTT. (Is that not a good enough reason? 🙂 )

I’ve written it as a command-line app, because it’s a quick way to run it from different devices around the house. (That is, by cheating 🙂 I’m actually running the app on the home server, using PuTTY / PocketPuTTY / SSH etc. to run it from my ThinkPad, PDAs, mobile, EEE PC, etc.).

Read the rest of this entry »

Back at work… gradually

June 1st, 2008

Hurrah – after a two and a half weeks being stuck at home, the doc tells me that my back is well enough for me to go back to work tomorrow.

I’m not fully recovered – the estimate for that is still 6 – 8 weeks, so I’m been warned to take it easy for a few weeks. In particular, he made it very clear that I must get up and stretch my legs regularly, as prolonged periods sitting could set my recovery back.

screenshotUnfortunately, I know I have a habit of being a bit single-minded (some might say “obsessive” 😉 ) while I’m working, and often lose track of time. So I’ve thrown together a 35-line program to help make sure I don’t overdo it.

It will automatically lock my ThinkPad after 40 minutes, resetting the timer each time I unlock the ThinkPad again.

Read the rest of this entry »

Capturing Bluetooth events in Windows Mobile

May 30th, 2008

I wrote on Sunday about writing Bluetooth code for Windows Mobile for a location-based reminder app I hacked together.

At the time, I wrote about two main approaches for finding nearby Bluetooth devices:

  • searching for discoverable devices
  • registering for notifications for when paired devices connect and
    disconnect

For the location-based reminder app, I went with the first approach, and played with how to search for discoverable devices.

This afternoon, I tried out the other way – writing an app that registers with the OS for connect and disconnect notifications from paired devices.

Read the rest of this entry »

A daily CurrentCost “bill”

May 28th, 2008

As I’ve finally got my home server capturing the electric meter readings from the CurrentCost, I thought it’d be good to try doing something with it.

I want to start with something a bit different to graphs, because there’s already been a lot of cool work done in different graphing approaches.

As I wrote yesterday, I’ve got a MySQL database that is storing the watt reading from the electric meter captured once every six seconds.

I wondered whether it makes sense to try and turn these figures into a financial cost. It might be interesting (and useful as a behaviour-altering thing) if we could get a “bill” from the CurrentCost meter each day that told us how much we spent on electricity the last day.

+=============================================+
  Your CurrentCost bill for 2008-5-27

     Electricity usage   4.9802 units
      Cost ==           £0.4874

     Standing charge    £0.1582
   ---------------------------------------
     TOTAL COST FOR 2008-5-27 : £  0.65
+=============================================+

I’m not entirely sure of my maths here, but I thought it could be interesting to give it a try.

Read the rest of this entry »

Accessing MySQL from Perl on SlugOS

May 27th, 2008

I’ve written about my CurrentCost meter that I’m using to monitor my home electricity usage, and the small home server that I’ve set up to collect the data.

Yesterday, I decided to make a start on collecting the data. My plan was to copy what Nick had done and create a MySQL database to store the info, with a table to store a timestamp and the watt reading from the CurrentCost meter.

CREATE TABLE currentcostdl (  
    time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,  
    power FLOAT NOT NULL,  
    primary key(time));

I started with Nick’s Python scripts, but didn’t get very far.

The server, a NSLU-2 (or “slug”) is running SlugOS.

The problem was that there is no python-mysqldb package in the SlugOS repositories. I did try downloading the source for it from sourceforge to build it myself, but struggled to get the dependencies I needed to make it – urllib in particular was a big pain.

I also tried the debian package but again dependencies on SlugOS got in the way.

So I gave up on that and decided to do it myself using Perl – Perl and MySQL had to be easier, right?

Erm… not so much 🙂

Read the rest of this entry »

Writing C++ code to run from C# for .NET Compact Framework

May 25th, 2008

I mentioned earlier that I decided to write a DLL in C++ to invoke from my C# app for Windows Mobile. I’d not done this before, so thought I’d jot down a few quick notes about it.

I found a few detailed articles about this on MSDN that made for a good introduction to the topic:

There is a ton of information in these articles, so there isn’t much to add. Instead, I’ll give a quick, high-level overview.

Read the rest of this entry »

Programmatically searching for nearby Bluetooth devices in Windows Mobile from C#

May 25th, 2008

As part of my plan to write a location-based reminder app using Bluetooth devices, I need a way to know what bluetooth devices are near me.

I’ve not done any Bluetooth development before, so I’ve had to learn a few new bits and pieces tonight.

Read the rest of this entry »

Custom properties in Outlook Mobile

May 25th, 2008

As part of my plan to write a location-based reminder app using Bluetooth devices, I need a way to assign tasks to people, and people to specific Bluetooth device IDs.

I’ve decided to do this using custom properties in Outlook Mobile – the default PIM that comes on all Windows Mobile smartphones and PDAs.

I’ve not used this API before, but after a little playing, I’m impressed with how straightforward it all is.

The idea is that items in the Outlook Mobile PIM have pre-defined properties – so Contacts have fields such as ‘First Name’, or ‘Postcode’. But you can programmatically add new fields, and then store whatever you want in them.

For my purposes, I can add a “Bluetooth Device IDs” property to Contact items in my address book. I can also add pointers to Contact items to Task items in my to do list.

As this is just meant as a quick hack / proof-of-concept, I’m doing this in C#. The code looks something like this:

Read the rest of this entry »