I have started a home automation project using Arduino based devices and a Raspberry Pi. It uses mainly DIY open source gadgets and programs, but there are a few commercial products. I have bought motorised Venetian blinds for my living room from Controliss and remote control sockets from LightwaveRF.
I am using 434MHz RF wireless communication, partly because my British Gas wireless thermostat and LightwaveRF use it, and I can hack in to their protocols.
I decided to use the open source OpenRemote project to control everything. This gives me quite a nice user interface on my Asus Transformer Android tablet. There is also a web interface and I can also use an Android mobile phone, so everything can be controlled over the internet when I am away from home.
OpenRemote has a cloud based Designer that lets you set up devices, commands etc., and then design the user interface as a set of panels. This design is synchronized to a local web server, and the Android application talks to that and picks up the updated user interface. There is no Android programming necessary.
The web server is currently running on my laptop and talks to a Java program that controls all my devices. (OpenRemote is written in Java). I plan to move all this to a Raspberry Pi located next to my router and connected by Ethernet. This will allow it to run 24×7, with minimal power usage.
The Java program talks to a custom-built RF transceiver using Arduino and RF transmitters and receivers from Cool Components. It uses a USB serial connection to the transceiver. The transceiver box will sit next to the Raspberry Pi.
I control my TV, AV Receiver and Virgin TiVo set top box, via a custom-built RF to Infra-Red gateway box. This sits in front of the media boxes and the transceiver sends RF commands to it. This allow me full control over my home cinema system. It uses the IR Remote Arduino library to capture and play IR sequences using a cheap IR LED. I have emulated the Virgin TiVo remote control in the OpenRemote Android application.
I use Spotify for music on a separate computer. I currently control this by running a Java responder on the Spotify machine that OpenRemote talks to. This allows me to select playlists from the Android application. Unfortunately I have to switch the computer on manually as it does not run 24×7.
I have hacked into the LightwaveRF protocol and can control three of my sockets via the Android application. They currently switch on a fan (my air conditioning), a photo frame and an IP camera looking out of the living room window (or into the living room). I can pan the IP camera from the Android application and can view the image over the internet from any device. I could control the photo frame using another IR Gateway.
My heating system uses a BGas RF2 wireless remote which is a rebadged Drayton Digistat RF2. This uses an RF protocol that has been hacked, so I will be able to set the desired temperature and implement rules and schedules from the Android application. I have not done this yet. There is also the possibility to install LightWaveRF thermostats on all the radiators and control them individually.
I have built a custom Room Sensor using Arduino. The plan is to have one of these in every room. It currently has a thermometer, light sensor and motion detector. The data is sent over RF to the transceiver and hence to OpenRemote, It is displayed in the Android application. I plan to add a sound meter and a humidity sensor. I use the Arduino Virtual Wire library to send the data.
I have built an energy monitor using information from the Open Energy Monitor project. This allows me to send total current power usage to OpenRemote. I will probably send it on to the OpenEnergyMonitor cloud application for analysis. It uses a non-invasive CT sensor to measure the total house electricity usage. Again it is Arduino based and sends RF data to the transceiver, and hence to OpenRemote.
I bought some solenoids and have implemented a button pusher using designs from the Extreme NXT book. I can control this from a Lego NXT or an Arduino. I am currently using this to press the buttons on the remote control for my blinds, and hence control the blinds from OpenRemote. The blinds uses a 2.4GHz wireless protocol that is hard to hack. I could replace the current wireless receivers with my own version. The button pusher will be useful for other devices.
I will probably add lighting control using LightWaveRF products, and window sensors either using the LightwaveRF product or my own custom devices. This will allow me to set rules on what to do when windows are opened, such as switch off radiators.
I plan to monitor the soil moisture of my house plants using a custom wireless sensor.
I have included local weather information in the Android app, using wunderground. OpenRemote allows you to access HTTP APIs and extract information from XML or JSON replies. I was thinking of putting a wireless weather station in my garden, but there does no seem to be much point as pretty accurate information is alreay available from the Internet.
This has all given me flexible control over most of the devices in the house.
What more is there to do apart from to put this all into production?
I would like to send commands to my robot, Keith, such as “fetch beer”. He needs better navigation and help opening the fridge door. He might not be strong enough to carry beer, but I cannot afford a PR2. As I add capabilities to Keith, I can get him to do more households tasks, but fetching beer is the priority. It would be good if he could go to the shop for the beer.
I will add voice control. This is most easily done by an Android application. I have experimented with one.
I would like to add gesture control of everything in the living room using a Microsoft Kinect or an Asus Xtion Pro Live. I have had my Kinect working with ROS and monitoring body movements. Perhaps I could base it on that.
It will be straightforward to control the Roomba from OpenRemote, but Keith has currently taken over the Roomba.
It should be easy to incorporate my wireless doorbell, so that I can respond to people at the door when I am not at home, or spoof someone at the door to annoy my grandchildren. However, I am not sure what frequency RF signal it uses.
It would be good to hack into the existing home security alarm system, but I am not keen to tinker too much with the mains wiring.
Controlling the outside water feature (stream) and lights will need a couple of mains switch boxes to be replaced.
I would quite like to have a letter detector at the front door to tell me when I have snail mail.
I have a box for an intercom by the front door. I might put an IP camera in that and use it as an intercom.
Control of the coffee machine would be good, but requires too much pre-preparation such as filling the coffee machine with water and coffee. A plumbed in beans to cup machine would solve this but is a bit expensive. Perhaps I can teach Keith to do it.