1st official release of my home automation software: cloverleaf


I had some time to kill this evening while waiting on a flight and decided that I may as well show the world my terrible code. Introducing cloverleaf version 0.3 aka “gort”. Rather than go down the long list of things that are not yet functional I will stay positive and list the things that are.

  • toggling insteon or z-wave devices via an ISY home automation controller
  • support for some low cost color LEDs
  • control of any IR device via LIRC
  • various API: for text to speech, playing of files, notifications…
  • each of the above via the provided sample web interface or api calls
  • scheduling of repeated tasks via a cron like interface
  • and a dent has been made on documentation

Please test, submit issues, and above all; have fun.


Open source home automation, now with *ruby*

I started some work on a new project over the weekend. I had been fiddling with misterhouse for a bit, gotten a few things to work, joined the mailing list, asked a few questions, tried to answer a few, and generally had fun. I decided to try my hand at writing a RESTful open source home automation API to act as an abstraction layer between any of the many home automation protocols, insteon, z-wave, zigbee, IP, … and developers. Introducing cloverleaf. So far it can schedule repeating tasks ‘a-la-cron’, do text to speech conversion from an http request, and toggle a light on or off via insteon. I guess the beauty here is that anything can be done via an http request. The next steps are a working configuration file and parser. Any tips on getting ruby to parse a yaml config and spit out the result within the sinatra framework?

$49 Cubieboard is a raspberry pi competitor.

The $49 Cubieboard is a slightly more expensive, but better suited for duty as an HTPC option to the raspberry pi. It even has an IR receiver built in. Specifications below.

  • 1G ARM cortex-A8 processor, NEON, VFPv3, 512KB L2 cache
  • Mali400, OpenGL ES GPU
  • 1GB DDR3 @480MHz
  • HDMI 1080p Output
  • 100M Ethernet
  • 4GB Nand Flash
  • 2 USB Host, 1 MMC slot, 1 SATA, 1 ir
  • 96 extend pin including i2c, spi, lcd, sensors, ..
  • Running Android, Ubuntu and other Linux distributions
  • NO WIFI included

via liliputing

twitter <--> wordpress

I remembered that I had a twitter account when I got some more follow requests the other day. I set up tweetie on my devices, and sent off some tweets to make sure all was well. You can follow me here folks. Next steps include setting up some kind of integration between wordpress and twitter that will allow tweets to show up here, or even have a tweet sent out automatically when a post is made. I am sure google can get me there.

dacrib.net migration

I migrated dacrib.net from a shared hosting instance provided by a friend at hostrocket, to a xen instance on linode.com today. So far so good.

Things left to do:
1. set up a cron for offsite backups to somewhere else w/ rotation
2. make sure the gallery installation is still working, including admin section
3. update gallery install
4. test video portions of gallery install
5. fix mod_rewrite so pretty permalinks work
6. set up an open source PBX
7. set up fail2ban

HeatSync Mini-Client 2500

HeatSync Mini-Client 2500.

This is it folks. This is the case that  we have been waiting for to build the HTPC of the next five years. There are no negatives here. It is completely fanless (read silent), yet can handle a modern Intel DG45FC mainboard with a 3GHz dual core processor and decent video card. I am convinced that a machine built on this can can fulfill all of your xbmc, mythfrontend, windows mce, blue ray playing, and gaming needs. There is nothing that the right setup in this case would not be able to handle in your living room, silently.

ZFS in practice – verifying transparent compression –

I had read about the transparent compression that zfs offers. I wanted to verify it so I did, and sent my results off.

As we all know no experiment is valid unless verifiable. I wanted be sure that the transparent compression was actually working so I set up a sample zfs volume and purposefully made some files that i knew would compress really well. I grabbed their sizes, transferred them to another machine without zfs, and compared the size. It works.
filesystems usually suck

1. Create the zfs filesystem
root@machine1:~# zfs create rpool/ztest
root@machine1:~# zfs set mountpoint=/ztest rpool/ztest

as soon as you do this /ztest shows up in the filesystem
root@machine1:~# ls /ztest/

2. enable compression and set it use gzip at level 6 (default)
root@machine1:/ztest# zfs set compression=gzip rpool/ztest

3. create some files you know will compress well
time for i in $(seq 1 3); do echo -n “file${i} “; echo $(seq 1 10000000) >> file${i} 2>&1; done

4. check the compression ratio
root@machine1:/ztest# zfs get compressratio rpool/ztest
NAME         PROPERTY       VALUE        SOURCE
rpool/ztest  compressratio  3.69x        –

5. verify the compression is working by transferring the file to a machine without such an awesome FS, and checking the filesize there
root@machine1:/ztest# du -sh file1
23M     file1
scp -rvp /ztest/file1 root@machine2:/root/file1

root@machine2]# du -sh file1
83M    file1

Conclusion: transparent compression is working, and working rather well on a file I made to be easily compressed.

Stateless Linux How To:

Stateless Linux sounds like a great idea for those of us that have many systems with similar configurations to manage. If you have never heard of the idea RTFM. I have stateless linux almost working here at my house. Here are the steps that I followed thus far.

on server system:
yum -y install cobbler
configure cobbler to manage dhcpd and start it
download Fedora 9 DVD ISO
sha1sum the iso to make sure the checksums match
mount the iso somewhere with the -o loop option eg. mount -o loop Fedora9.iso /media
import the distro into cobbler eg. cobbler import –mirror=/media/ –name=Fedora9
cp /sbin/lspci to /usr/sbin/lspci (if you skip this anaconda fails later under fedora 9)
mkdir -p /export/NFSroots/F9/
install os image into that directory eg. anaconda –headless -r /export/NFSroots/F9/ -m http://black/cobbler/ks_mirror/Fedora9/ –kickstart /var/lib/cobbler/kickstarts/f9base.ks
chroot into newly created environment
update environment (yum -y update)
create initrd
edit /etc/sysconfig/readonly-root
exit chroot
create cobbler distro
create cobbler profile
create cobbler system

on client system:
boot from lan.