Wednesday, August 17, 2011

How to change all svn:user entry in one go

Over the years, our username has changed. Like over the years I have been avenardj, jyavenard, jeanyves_avenard and finally jean-yves.avenard

In the 7 years I've been using our SVN repository, looking at the history, it's now all over the place.

So I wanted to make my username consistent...

Preliminary steps: allow changing property in the svn repository by adding a hooks/pre-revprop-change file.

it woud contain only one thing:
exit 0

Because in our setup we use ViewVC, we also needed a hooks/post-revprop-change with:


REPOS="$1"
REV="$2"
USER="$3"
PROPNAME="$4"
ACTION="$5"

/var/www/viewvc/bin/svndbadmin update "$REPOS" "$REV"


I didn't feel like writing much code do to what seemed to be a trivial task.

Looking at various solutions I found this interesting project: XMLSH. Alas, it's quite poorly documented.

After going through the examples, I came up with:



svn log --xml | xread logs
entries=<[ $logs/log/logentry ]>
for entry in $entries; do
rev=<[$entry/@revision]>
echo "entry: " $rev
author=<[$entry/author/string()]>
echo $author
author2=$(echo $author | sed -e 's/(avenardj|jeanyves_avenard|jyavenard)$/jean-yves.avenard/g')
if [ "$author" != "$author2" ]; then
echo " -> $author2"
svn propset --revprop -r $rev svn:author $author2
fi
done


Obviously, replace the regex with the one suitable for you.

Saturday, February 6, 2010

How do solar panels perform according to solar exposure..

The Australian bureau of Meteorology provides daily solar exposure data on their web site.


This map shows the amount of energy received from the Sun in a given location.

This was very interesting stuff (well, at least for me).

I wrote a little utility to retrieve the data in a form suitable for post-processing in a spreadsheet and for use in my power tracking system .

This utility is available there. It's written in python, run it with --help as an argument to see the various options available.


One direct application, was measuring on how well the CEEG panels I have installed performed according to the amount of energy they receive from the sun.

It gave me this graph:

The black line shows the average of Export/Import. Any points above the line means the system performed better than average, any points below the line, mean they performed worse.

A clear trend shows that my system performs really well when there's a lot of sun, but rather poorly in low light conditions.

It's rather a worry, as it means they will likely perform poorly during winter.

Stay in touch!

Saturday, January 23, 2010

Energy tracking...

I got a solar system installed early December 2009 ; it's a 2kW system made of 12 CEEG 170W panels with a Power-One Aurora Inverter PVI-2000


I had to track the electricity production ; but also wanted to track my power usage.

I couldn't find any proper solutions letting me record everything at once:
  • How much is used in the house
  • How much is produced by the solar panels
  • How much is imported from the electric network grid
  • How much is exported back to the grid
So I designed my own...

I bought a CurrentCost CC128 which can be interfaced to a PC through a serial interface.
The Aurora inverter has a RS485 interface; a cheap RS232 converter on eBay for $6.50 did the trick.

The system runs on almost any machines (tested on FreeBSD, Linux, MacOS).

It is made of 3 parts.
-Daemons polling the various sensors ; they poll every 6s ; compute an average every minute and feed the data in a RRDtool database (round robin database).
-A Daemon computing the import and export value in 30 minutes interval (it wakes up every 30 minutes, calculate the import/export over the past 30 minutes and feed another database
-A web page

The daemons are written in python ; as long as you have python running on your machine with the pyserial module you'll be fine.

For the HTML interface ; it's written in PHP on the server side; and javascript/ajax on the client side (though it will work even with javascript disabled, albeit with limit interactivity).

It's probably easier to get it working with the Apache web server and the mod_php5 module...

The PC needs to be on 24/7 as neither the CC128 nor the Aurora inverter keeps any data in memory...

The system is done in such a way that you can easily use a different power monitor or a different inverter.
Everythin can be configured through a simple configuration file: colours, shapes, labels, database used etc...
You don't even need a solar system ; I set the same system at my office to monitor our power usage.

The response to this tool has been very overwhelming.
I have been approach by various parties to integrate with some professional solutions.

I contacted the Google PowerMeter project in order to feed the data through their system, but at this stage they weren't interested, prefering to work utility providers. Their loss !

Some real-time graph samples are shown below.

http://htpc.avenard.org/power.

If you are interested, drop me an email.




Easy FreeBSD Upgrade ...

Over the past few weeks, I updated all my machines from FreeBSD 6.4 to the latest FreeBSD 8.

Upgrading FreeBSD has always been a bit of a pain (even makes me miss linux here and all its binary distributions) as I do not have physical access to most machine and always do so remotely.

I found this great site:
http://people.freebsd.org/~rse/upgrade/

I followed all the steps gron from FreeBSD 6 to FreeBSD 7 then FreeBSD 8.

Painless upgrades; all remotely !

Update for Kindle DX with Global Wireless (DX International)

Amazon just released a new Kindle DX which can now works outside the US using the GSM network.

It has a new device id and 3rd party packages written for the previous Kindle DX won't work.

It's really just a matter of repackaging them and the OS is virtually the same.

So I updated the packager to support this new device ; and repackaged the usbnetwork and screen saver hack package..

Packager (version 0.8):
http://www.avenard.org/kindle2/packager-0.8.tar.gz

USB network (version 0.11)
http://www.avenard.org/kindle2/usbnetwork23-0.11.tar.gz

Screen saver (version 0.1)
http://www.avenard.org/kindle2/screensaverhack-0.1.tar.gz

Thursday, November 26, 2009

Amazon's Kindle new Firmware 2.3

Amazon released firmware 2.3 a few days ago.

Before you can update to firmware 2.3 ; you *must* first uninstall all hacks previously installed ; in particular the screen saver hack and savory.

Other than the advertised new features such as PDF native reader ; what's more interesting (at least for me) is that the same kind of security that got added with Firmware 2.2 on the Kindle 2 International is now found on all Kindle model.

Each software installed on the Kindle, must be signed using Amazon's RSA key; which obviously we don't have.

Luckily, the same trick I did for the Kindle 2 International works fine with the 2.3 firmware...

You can find the new packager there:
http://www.avenard.org/kindle2/packager-0.7.tar.gz

I have changed the options format, so it's more in line with other unix command. Make sure to read the README.txt file included in the archive for the syntax.
In short, for firmware 2.3 ; you will want to use the --sign option (which will sign the packages using our own key) and the --ex (which will add auto-jailbreaking to the package)

For Kindle 2 US only users ; once you have updated your Kindle to firmware 2.3 ; the various hacks you enjoyed won't work anymore. You need to get new versions of those

The most popular hack is the screen saver one ; you can find an updated version that works with 2.3 (all kindle model) here:
http://www.avenard.org/kindle2/screensaverhack-0.1.tar.gz

USB network hack:
http://www.avenard.org/kindle2/usbnetwork23-0.9.tar.gz

Sunday, November 1, 2009

Kindle 2 International packager; now even easier...

Well, curiosity got the better of me (and gone is my night of sleep).

And here is version 0.5 of the Kindle packager; almost fully rewritten.
http://www.avenard.org/kindle2/packager-0.5.tar.gz

What's new:
*Can now create packages for the Kindle 2 International that will install properly, even without having installed the previous freekindle package.

For that use the -k2iex flag.
-k2i will still generate packages requiring the freekindle package to have been installed first.

I suspect that developers would use the -k2i for testing (with the freekindle package installed), and when they are 100% confident and ready for release, us the -k2iex.

*Do not leave junk behind (like .dat, .sig files etc)... We now only use temporary files that get automatically deleted...

All other packages (usbnetwork, screen saver hack, savory) got repackaged using -k2iex : so installation is now much easier.
And are available as always:
http://www.avenard.org/kindle2/