MisterHouse is an open source home automation program.
It's fun, it's free, and it's entirely geeky. Written in Perl, it fires events based on time, web, socket, voice, and serial data.
It currently runs on Windows 95/98/NT/2k/XP and on most Unix based platforms, including Linux and Mac OSX.
Perl subroutines and objects are used to give a powerful programming interface. Here is some example code:
$fountain = new X10_Item 'B1';
set $fountain ON if time_now '6:00 PM';
$movement_sensor = new Serial_Item 'XA2', 'stair';
play(file => 'stairs_creek*.wav') if state_now $movement_sensor eq 'stair';
$v_bedroom_curtain = new Voice_Cmd '[open,close] the bedroom curtains';
curtain('bedroom', $state) if $state = said $v_bedroom_curtain;
Here is some example speech output:
Turning heating off after 20 minutes at 20.1 degrees
Notice, the sun is bright at 32 percent, and it is cold outside at 24 degrees, so I am opening the curtains at 8:07 AM
The van is traveling north at 58 mph 0.8 miles west of Walmart.
Notice, Nick has been on the computer for 2.1 hours today.
The front door has been left open.
Notice, there is 1 favorite show starting now: Dilbert on channel 8.
8:58 PM. VCR recording will be started in 2 minutes for Southpark on channel 47.
Notice, there were 668 web hits from 74 clients in the last day.
Misterhouse Sourceforge pages
Some MisterHouse features
- Executes actions based on voice input, time of day, file data, serial port data, and socket data. Serial and speech data can also be read or written to proxies on remote boxes.
- It has a web interface to allow control and feedback from any browser, either on a local intranet or on the internet.
- On Windows systems, it uses OLE calls to the free MS VR and TTS engines for voice recognition and text->speech. The high quality AT&T NaturalVoices TTS engine may also be used. If using IE, you can enable remote VR and TTS using an MS Agent.
- On Unix systems, it uses the free Festival, flite, IBM ViaVoice and non-free AT&T NaturalVoices TTS speech engines for text->speech and on Linux IBM's ViaVoice engine for voice recognition. These engines can also be called from Windows version of mh.
- Reads/writes any data from any serial attached device.
- Speaks the speed, course, and position of vehicles, by interfacing to a ham radio modem (TNC). Brian Klier wrote has a nice article about it.
- Sends/receives X10 data from the X10 CM11 (ActiveHome) interface
- Sends/receives UPB data.
- Sends wireless X10 data using the X10 CM17 (Firecracker) interface
- Send/receive data to the Ibutton family of devices, including the weather station.
- Reads/writes data from the JDS interfaces (Stargate, Time Commandar, HomeBase) interface
- Reads/writes data from the HomeVision interfaces
- Reads/writes serial port data from the Weeder Technologies PIC kits that can process X10, digital, analog, callerID, and outgoing phone data.
- Reads/writes to Applied Digital's CPU-XA and Ocelot interfaces via the cpuxad socket deamon.
- Reads data from IRman infrared receiver serial interface and writes to X10 IR Commander wireless interface.
- Code has been written for DSC Alarm pannels, Stargate LCD displays, Alpha BetaBrite LED displays, Slinke IR send/receive, Marrick X10, RCI X10 sprinklers, Xantech preamps, ISDN modems, voice modems, ComPool and Aqualink pool equipment.
- Reads and writes from the lcdproc server which interfaces to inexpensive LCD modules and keypads.
- Shares a modem for caller ID and paging.
- Reads/writes internet mail, http, and ftp files unattended.
- Sends/receive instant messages using AIM, MSN, or Jabber
- Reads MS Outlook, Unix ical, or the built in Organizer calendar for event reminders and VCR programing.
- Uses free internet TV web pages to allow for VCR programing and show reminders.
- Has an entertaining 'chatbox' web page that will listen to all your problems.
- Can monitor NetGear RT311 / RT314 or LinkSys syslog router traffic, so you can track stuff like incoming web hits and online game time.
- Uses Voice XML to interface to tellme.com. To try it, dial 1-800-555-Tell, then after you ear 'tellme more', enter 1-46630 (1-HOME0). With a XML browser (e.g. IE), you can see a test vxml menu here
- Use simple menu templates to generate menus for LCD, VXML, or WAP phones. If you have a WAP phone or WAP browser, you can see this test menu with this url: http://mh.misterhouse.net/sub?menu_wml. You can also walk the menus with an html browser with a frames version or a a simpler version . These menus can also be controled with a single switch (e.g. air sip switch for the disabled), using audible feedback to select items/states. You can also drive menus with an SSH client, like this phone example
- Logs weather data to the wunderground personal weather project. Here's weather logs from my house
- Here is a list of some users written code files along with standard code files that demonstrate some other MisterHouse features.
- You can use RSS readers to track various data, like phone or speak logs.
- Control of RoboSapien, ESRA, and ER1 robots. Some pictures and videos are in misterhouse.net/public/robot/.
- Uses the rrd program to generate weather graphs.
- Support for xAP and xPL home automation protocols.
Misterhouse & xAP
The Misterhouse system can be setup to transmit xAP messages, which can then be received by any other xAP-enabled system on your network.
Example: Get the speech output from misterhouse on another computer in another room in your house.
This is pretty straight forward. I followed the instructions from http://misterhouse.wikispaces.com/xAP
"first thing to do is activate the xAP_send.pl script in the Misterhouse common code web interface."
"Next, install the xAP Speech application from here:" http://www.mi4.biz/modules.php?name=Downloads&d_op=viewdownload&cid=18
In my case, I have misterhouse running on a linux box, and wanted the speech to be output on a Windows XP PC.
I enabled the xAP_send.pl code in misterhouse (In my web browser to misterhouse,
I clicked on MisterHouse Home, then Setup Misterhoue, then Common Code Activation.
Then scrolled down the list to find xAP_send.pl, and enabled it, by selecting the checkbox, and clicking the button Process Selected Files
I did not have an xAP hub on my Windows PC, so I downloaded one (which runs as a windows service) from mi4.biz,
Because I like to see how these things work, I also downloaded & installed the xAP Viewer, here :
I then installed the xAP Speech application from http://www.mi4.biz/modules.php?name=Downloads&d_op=viewdownload&cid=18
Note: I used version 1.3, as version 1.4 would not install for me. I downloaded it twice but got the same error each time I tired to install. ymmv.
I ran the xAP Speech which puts a small control icon in windows XP down beside the clock (bottom right corner). By double-clicking on this icon you can
change the settings of the speech. (Change the voice to use, chnage the audio device to output it on, etc).
To test it, I started the xAP_Viewer (This comes as a ZIP file, so I extracted it to a suitable directory and ran the viewer.exe application) and then
in my misterhouse, I went into MisterHouse Home, then Setup Misterhoue, then Edit Triggers. Click on "Create" to create simple one-shot
trigger so speak the message "Hi". This then appears in the list of triggers below, and you can run it by clicking the "Run" link beside it.
Lo and behold, when I click on "Run" to run the command "speak Hi" the xAP Viewer shows the xAP message being sent by misterhouse, and my Windows PC
now speaks the message !