Home automation (HA) is anything that your home does for you automatically to make living there more enjoyable or productive. A smart home is one that appears to apply intelligence to make that happen. To my friends, family, and visitors, my home is both smart and automated; I can e-mail my light switches, I can receive tweets from my CD player, and I have a personalized TV guide e-mailed to me every day. To me, my home is a collection of existing open source software, some consumer-level hardware, and small pieces of glue code that make them all interact. The magic happens in the way they are combined, and it’s those secrets I’ll be exposing in this book. The most cogent phrase in this field is probably “The devil is in the details.” HA requires small confirmed tools that do a single, specific job in much the same way that Unix utility software does one job and does it well. Consequently, my decision to adopt Linux as the underlying operating system is no accident. Unlike the monolithic approach of Microsoft Windows®, there are large repositories of open source software that perform these individual jobs. SMS handling, media playback, X10 control, e-mail, web servers, speech synthesis, and everything in between is freely available—and, more importantly, interoperable. Throughout the book I will reference many different technologies and languages that I consider to be the most suitable to the task at hand. In some cases, this will refer to old technology that is no longer the cutting edge, since those are the devices that have been made to work effectively with Linux through (primarily) developer support. The glue code uses Perl, PHP, C++, and Bash. Each was chosen according to the merits of the language and which modules made the task easier, not with any presupposed advocacy. The book begins by covering appliance control and the whys, wherefores, and how-tos of controlling devices such as your teakettle, CCTV, light switches, and TV from a computer. It then covers the other devices you can build, adapt, or hack yourself from existing technology. The Arduino, for example, can be employed as part of an automated doormat that reminds you to take your umbrella when the weather forecast spells rain or that today is when the garbage is collected. The book then covers media systems, discovering how to automate and replace the aging combination of the VCR and TV guide by using computer-oriented solutions. The technology can automatically suggest shows, sending their recommendations to your e-mail inbox or mobile phone, and can provide a means of recording them. Then, the book covers the technical considerations necessary when running a computer 24/7, the methods of wiring a home network, and the methods of preparing your home for the patter of tiny silicon feet! This is followed by how to use and install communication protocols, which allow anything in your home to talk to anything else and which is the first step toward true technology homogeneity. Finally, the book covers the data sources that provide the information to make your home appear intelligent and the software and processes necessary to combine everything learned into a unified whole. The specifics. The glue code. The details that make the magic work!