Current-CostThe current cost meter is an electricity monitoring device which attaches to your house’s electricity meter. It gives you a read out of how much electricity you are using at any given time, and how much that electricity is costing you.

One of the cool things about the Current Cost meter, verses other meters which are out there, is that it includes a data cable. This cable attaches the meter to your computer, and you are able then to extract usage data, very simply, over a serial connection.

So, riffing off the weather display tool I wrote a few weeks ago, here is a quick tool for extracting electricity usage data from your Current Cost meter, and outputting it in a customisable format. The tool is tested on Linux against a Current Cost EnviR, but it may well work with other meters in the range.

Since the first step towards any form of optimisation is to collect data, my plan is to use this tool to graph my electricity usage over time, and hopefully reduce my running costs a bit. Anyway, code up on GitHub as usual!

» Visit the project on Github…

At home, which is also my office, I have a network that has a number of devices connected to it. Some of these devices – wifi base stations, NAS storage, a couple of raspberry pis, media centers – are headless (no monitor or keyboard attached), or in the case of the media center, spend their time running a graphical front end that makes it hard to see any system log messages that may appear.

It would be handy if you could send all the relevant log entries to a server and monitor all these devices from a central server. Thankfully, on *nix at least, this is a pretty straightforward thing to do.

The Server

First, you must configure the system log on the server to accept log messages from your network. Syslog functionality can be provided by one of a number of syslog servers, on Debian 6 this server is called rsyslog.

To enable syslog messages to be received, you must modify /etc/rsyslog.conf and add/uncomment the following:

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514


# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

Then, restart syslog:

/etc/init.d/rsyslog restart

Although this is likely to be less of an issue for a local server, you should ensure that your firewall permits connections from your local network to the syslog server (TCP and UDP ports 514).

The Clients

Your client devices must be configured to then send their logs to this central server. The concept is straightforward enough, but the exact procedure varies slightly from server to server, and device to device. If your client uses a different syslog server, I suggest you do a little googling.

The principle is pretty much the same regardless, you must specify the location of the log file server and the level of logs to send (info is sufficient for most purposes). In the syslog configuration file add the following to the bottom:

*.info @192.168.0.1

On Debian/Ubuntu/Raspian clients, this setting is in the /etc/rsyslog.d/50-default.conf file.

Some embedded devices, like my Buffalo AirStation, have an admin setting to configure this for you. Other devices, like my Netgear ReadyNAS 2, has a bit more of an involved process (in this specific case, you must install the community SSH plugin, and then edit the syslog configuration manually).

Monitoring with logwatch

Logwatch is a handy tool that will analyse logs on your server and generate administrator reports listing the various things that have happened.

Out of the box, on Debian at least, logwatch is configured to assume that only log entries for the local machine will appear in log files, which can cause the reports to get confused. Logwatch does support multiple host logging, but it needs to be enabled.

The documented approach I found, which was to create a log file in /etc/logwatch/conf didn’t work for me. On Debian, this directory didn’t exist, and the nightly cron job seemed to ignore settings in both logwatch.conf and override.conf.

I eventually configured logwatch to handle multiple hosts, and to send out one email per host, but modifying the nightly system cronjob. In /etc/cron.daily/00logwatch, modify the execute line and add a --hostformat line:

#execute
/usr/sbin/logwatch --output mail --hostformat splitmail

After which you should receive one email per host logged by the central syslog server.

It has been a few weeks since I finally received my Raspberry Pi, but up until today I have been too busy to play with it.

This changed today when I finally installed a boot image on a 4GB SD card, wired up the tiny little circuit board to the TV and connected the power. I was very gratified when my TV sprung into life and I was greeted with a booting linux system!

I had a little play before I had to be getting back to work, and first impressions were very positive. I opted for the recommended debian based image, a distribution I am very familiar with. Network and USB functioned straight out of the box, and I was even able to install a few packages.

I’m looking forward to tinkering with it some more!