For a total overkill, have a look at misterhouse. All-singing, all-dancing, and in Perl.

I am currently using heyu, but my own stuff is almost ready to go live. And the CM11A is definitely the way to go, the firecracker stinks.

When looking at the X10 gadgets, remember that the original one-way protocol is totally braindamaged (only *relative* dims etc.).

Some of the newer modules are two-way and support "extended" commands (absolute levels, status queries etc.)