Let’s just get it out of the way now — there’s no true practical purpose or value in doing this. I took this on as an experiment and opportunity to learn something new.
What is it?
Using a Raspberry Pi, some sensors, and a lot of Googling with trial and error, I took my first step into custom home automation (Wikipedia). I can control lights, DirecTv receivers, some appliances, measure indoor temperature and humidity, determine who is home, and view indoor/outdoor webcams through a single UI.
Materials and Cost
- Raspberry Pi 2 – $38
- GE Link A19 Bulbs x7 – $11 ea
- USB Bluetooth Dongle – $9
- DHT11 Sensor – $5
- RPI Camera – $23
- Some jumper cables – $3
Each tailed light uses a GE Link bulb which is connected to a Wink hub. This allows for on/off control, dimming control, on/off scheduling, and dimming scheduling (such as gradual increases in brightness in the mornings). Wink comes with a nice app but I opted to use their API so I could incorporate it into the custom UI/dashboard along with everything else.
I’m using an old D-Link camera to gain outdoor views and the RPI camera for inside the apartment, I setup scripts to take snapshots once every minute and dump them into a MySQL db running on the Pi and also update the snapshot to include in the UI.
Outdoor weather (temperature, “feels like” temperature, humidity, pressure, and windspeed) is pulled from Yahoo! XML weather feeds.
Indoor temperature and humidity is polled every minute using a DHT11 sensor attached to the RPi. Historicals for all of these are stored in a MySQL database with the intention of graphing these some time in the future. I’d like to incorporate a Nest-style thermostat for indoor climate control but, alas, I’m a renter and don’t want to deal with that.
Using a Bluetooth dongle attached to the RPi, I poll for cell phones to determine who is home and who is away. Every minute, I log the status of all detected Bluetooth devices so we can see who’s around. This is also stored in a MySQL db so I can go back in time.
Using the DirecTV SHEF API, I currently poll the current program title, the channel number, the station ID (ie NBC or HBO), the program rating, whether or not the DVR is recording. The API allows you to take full control of the receiver and do all actions you can with the remote but I don’t see much value in that as I can’t watch it while I’m away so why have the functionality…
Using WEMO plugs, I can power on/off appliances. This came in handy at Christmas when the outlet was located directly behind the Christmas tree. At this point, though, there aren’t many appliances I want to control with the Wemo so I have a few of these sitting idle.
Automation and Availability
Amazon Echo Integration
All of these devices have been integrated with the Amazon Echo device either via Echo skills or via IFTT integration. This allows all of the functionality above to be controlled via voice recognition. There’s some trial and error getting these setup correctly but I think that’s mostly with the Echo’s voice recognition quality.
With integration of IFFT, I can do any number of things if desired. One of the more useful IFFT setups I’ve found is simply turning on the bedroom lamp ~8 minutes after my alarm goes off and gradually increasing the bulb’s brightness every minute. Another possible option is to turn some lights on when the Pi’s bluetooth dongle detects that I’m nearby.
In order to make this valuable, I installed Apache on the Pi and used ngrok to tunnel to localhost so that I don’t have to worry about the vulnerabilities of port forwarding on my router. I have this forwarded over to a domain name I wasn’t using and added some .htaccess protection (among other things) to keep it private.
Living in a small apartment limits the value and the opportunities of home automation. Things like adding reed switches to windows and door don’t make sense in my scenario as I doubt anyone will be climbing through my 7th floor window or trying to break into my door. Some more practical things I’ll be doing, though, is adding a gas, CO2, and smoke sensor to the Pi so that I’m alerted via text message and push notification if the Pi detects any of those levels becoming elevated…better than waiting on the neighbors to call the fire department, no? I’d also like to add a PIR motion detector to trigger the Pi Cam to start capturing video instead of still snapshots if motion is detected during hours that I’m normally away from home. I’ve had some troubles getting the motion detector to work but I’ll loop back to that eventually.