I'm looking to automate my home but know nothing about HA. What are some good resources to learn both the beginner stuff and more advanced topics.
Good resources to learn about Home Automation
home-automation
Related Solutions
X10 is a very cheap way to go, but it's not a very good system. The $20 switches you get are pretty low quality. More importantly though, the X10 protocol is pretty bad. It was designed in the 70's, and is very low bandwidth (I can't find a bps rating, but it takes about 3/4 of a second to send one command). If you don't use scene-capable switches (like Smarthome makes) you will notice a delay when activating different scenes.
I have a large Smarthome X10 installation at my parent's cottage/future home. The hardware is nice, but it suffers from reliability problems (eg, Sometimes when you hit a button, not all the lights activate; sometimes noise caused by power spikes/outages causes all lights to turn on, even though I have whole-house surge protection). I wired the place specifically to support X10, and have signal boosting/bridging in place (which helps), but honestly, I wouldn't do X10 ever again.
Programming the X10 devices is a pain: you have to send arcane commands to set up scenes.
At my house, I have a couple Smarthome Insteon switches in my basement for my home theatre. Again, I really like the hardware, and in fact it's even nicer than the Smarthome X10 stuff.
With insteon, they tried to simplify programming. What they ended up doing is making the very basic options (linking a single light to a button) a bit easier -- you just have to hold one for a few seconds till it blinks, then hold the other, and they're linked -- while at the same time making anything mildly more complex incredibly difficult. There are dumb limitations, like it's not possible to have a scene where one light goes to 0% and others turn on/dim to 10% (think "movie time" scene).
I purchased a computer interface for it, which is really the only way to do anything beyond the simple button-press-linking, and the best software I found to program it was Insteon Explorer. I wasn't willing to spend $150 for the Smarthome software to program 3 devices, so I can't say if it's better or not. Every time one device controls another, there are two links - one on each side. This means if you ever replace a device, not only do you have to reprogram the new device, but you also have to reprogram everything it controlled or was controlled by. This would be a HUGE pain with a keypad (8 buttons + integrated dimmer).
One thing that was relatively easy is integrating to PC. I was not able to actually activate "scenes" (this again, was easy with X10, but is now apparently not possible with Insteon), so I have to go device-by-device. Since I only have two main lighting circuits, it's not a huge deal. I use a Smarthome PLM and plmtools, and then small shell scripts that invoke plmtools for my various scenes. I can invoke the shell scripts in several ways:
- Using LIRC, from my Harmony remote. While watching Tv/movies, I have buttons that say "Bright", "Movie", etc.
- Using the XML interface on my Aastra IP phone. I have buttons programmed with scene names
- Using a small web site (running on a local server) I wrote using jQtouch, as well as a bookmark on my iPod touch, I can change scenes using my iPod. (also works on all smartphones/tablets).
I haven't tried the actual hardware yet, but the Simply Automated UBP stuff looks very appealing. They have the concept of a "base" switch, plus a faceplate - and there are face plates with various combinations of rockers/buttons.
The software looks amazing. You can basically set the entire system up completely offline, and then dump the programming to all devices. If I remember properly, switching a device was as easy as changing the address in the setup, then dumping programming again.
The individual options for what you could program was amazing: you could set up different physical buttons to be toggle, push buttons, rockers, single-button dimmers (hold to go up/down), one, two, or three-click buttons (different commands for each). You could then set commands to turn off, on, dim, activate a scene, etc. I think there were even timer buttons ("press the button, then 5 seconds later, turn off scene B").
I am considering a remodel of my kitchen, which would include some new lighting. I'm almost certain right now that I'll be using these switches to control the different lights (main, under cabinet, etc) from different entrances.
For lighting, I would go with one of the existing protocols/companies as mentioned above (there are many others as well, such as Zwave). You get a switch that is the dimmer circuitry, network interface, and human interface. You just won't be able to make something that quality yourself.
Using one of the existing home automation controllers is also not bad - it's like using a domain specific programming language. The common things to do in an automation system are timers, schedules, responding to events (motion sensor activated = turn on lights for x minutes, if it's currently dark outside but not past 12am). The commercial controllers let you set this up pretty easily. If you're doing it all yourself, you are more prone to bugs simply because you have to do more of the mundane stuff yourself, and you have more code.
I think there is a place for things like an Arduino though, for very specific, localized tasks, and have it integrate into the rest of your system if needed.
I'm of the mind I'd like to develop the UI for this myself (the existing systems are very expensive, and/or are not flexible enough so for example, I couldn't do the integration onto my Aastra phone with any off-the-shelf automation system), which means I need a way to control everything from a PC basically using the command-line (or some API). From there, I'd mix and match. Eg:
- SimplyAutomated stuff for all my lighting control,
- a standalone DSC alarm system that has a couple I/O interconnects to tell my computer its status, and let me arm/disarm
- An ardino programmed to run my pool filter and lights based on a motion sensor to detect how much the pool has been used. I can then have a web UI that I can access on a PC, wall-mount touch screen, or iPod/Pad/blackberry that interfaces to all this stuff.
I know my first inclination as a programmer is to have one master controller that runs everything, but from an industrial control perspective, this is actually opposite of what you want. Decentralized, specialized systems are more reliable, and you're less likely that a single failure is going to be catastrophic (eg, my ardino pool controller could blow up, and my lighting and security will continue to be just fine). The centralized bit brings the systems together and provides oversight/interaction.
Without home aut, one controllable lamp requires a switch, which interrupts the 110V/230V wire between the power source and the lamp. When you need another lamp, you have to find the point, where you can join to the 110V/230V, a switch and a lamp.
In a centralized system, you have to lead 2 wire from the button to the center, and another 2 between the lamp and the center. Switching to home aut. requires complete re-wiring. When you need another lamp, you have to another 2+2 wire for lamp and for button, you have to provide a relay for the lamp, a free slot on the controller for the lamp (sometimes built together with the relay), a free input slot. If your controller device has no free slot, you have to buy another one. Sometimes adding new devices is not a simple task, e.g. if the controller is connected to the computer with RS232 or other point-to-point cabling, you have to expand the computer. So, when the hardware is OK, you have to configure it in your software.
So that's why this part of the home automation is less advertised: you have to completelly re-organize the electrical stuff in your house. It can be quite expensive.
There are other kind of home automation systems, where there're no central panel, but each actuator/sensor is intelligent. These manufacturers say that it's more reliable than centralized systems, but you will forget it as soon as you will see the price of that sysems.
There're solutions avoid cabling: the smart guys say X10 is not the best choice, it's unreliable etc., the future is ZigBee and EnOcean. (I just have to write EnOcean driver for our system.)
So, when you choose system, take care of expandability, ask these questions: what if I double my lamps? How can I add +1 dimmer switch?
Best Answer
There is no single way of automation any task. We do live in a technology boom era and we have hundreds of solutions and thousands of ways of doing things. This is usually called prototyping. That term is fairly accurate as you are trying to create solutions based on several products. Luckily we have access to various development kits.
There are many tools out there that help us build things using modular style but also allow us to use custom built modules or completely non standard solutions. It all depends on the experience of the builder and the target audience.
This community answer should help you decide on what platforms and tools you would like to use. There is a range of easy to professional products listed here so it is really up to you to do the research into what is involved for each platform. I would like to think that every next similar question can be marked as duplicate and this community entry can be updated as time goes on
Popular "standardised" home automation solutions for non power users.
MCU Platforms that are code specific but not full CPU's
Easy for fairly experienced users
Advanced and really for power programmers only
CPU (x86/ARM) Based platforms
These solutions usually allow you to select specific operating systems. Most likely Linux or Unix. But you can find Windows, Java VM or other proprietary operating systems.
You can then code in anything you want Perl, PHP, Mono, Ruby, C/C++, etc.
Where to buy fairly cheap modules, gadgets, PCB fabrication and trinkets.
Seems so expensive?
Yes, unfortunately using standardised solutions you might have to fork out a substantial amount of money. But that usually means you will have things done allot quicker.
The cheapest MCU are Atmel's or PIC MCU - Amongst the cheapest and smallest is an Atmel aTiny 861 for a few dollars and the Atmel atMega range allows for more inputs and outputs - but still can be found under 10 dollars (chip only) - Atmega also do wireless solution that are much cheaper than xbee for example. You have to understand C though and there can be a lot of tinkering involved.
Platforms like the Raspberry Pi can be used as a "cheap" central computer that can run a database like mysql, connect to to the internet via Wifi/LAN, act as a web server, communicate with MCU's via UART over RF (433mhz/800mhz/1Ghz/2.4Ghz) and allow for a multitude of prototyping while using a Long Term Supported operating systems like Rasbpian (Debian) and standardised hardware like USB Webcams, Bluetooth and anything else that has a driver for it. The Raspberry is special because it also has a powerful GPU and full HD HDMI output. So you could power it behind your TV and output HD video content if you knew how to.