Tải bản đầy đủ (.pdf) (5 trang)

Apress - Smart Home Automation with Linux (2010)- P34 ppt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (293.34 KB, 5 trang )

CHAPTER 4 ■ HOME IS HOME

148

Power is always an issue in HA installations, because there’s never enough where you need it.
Unless you are able to self-build, you won’t have a choice as to where the sockets are or how many you
have. You can always cheat the issue by converting any existing sockets into multigang units or by
adding a spur from an upstairs light to provide a couple of sockets in the loft. This not only gives you the
opportunity of adding a small secure filesystem in the loft, but it means you can use the space to store
X10 DIN Rail devices where they are out of the way and don’t add the heat in Node0 itself.
■ Note Don’t pack DIN rails too closely to each other because the heat can induce problems in operation. The
recommended minimum separation is 20mm.
Additional power conduits are also useful for lighting driveways and powering electric garage doors.
In the former case, you need only a low-power (around 12v) supply, which can also be used for water
fountains, flood lights, outdoor Christmas trees, cameras, and PIRs. They can also help power sensors,
such as the VAL-1 vehicle alerts that indicate when a car is approaching the garage or driveway. You can
even install two to correctly determine the direction of travel, as we suggested for the Arduino door mat
in Chapter 2.
■ Note If your electric garage doors take ten seconds to open, for example, but your sensor is only in range when
you’re five seconds away from the door, you will need to employ a custom RF gateway circuit to trigger the door
earlier.
There are also the high-powered devices, such as the garage doors, and mains sockets in a shed or
garage for power tools. These are generally coated in rubber for isolation against the elements. In all
cases, consult an electrician and the laws of your country before installing electrical equipment outside!
■ Note You could also use the driveway sensors to switch on the porch light, ready for your arrival.
Conclusion
There is clearly more to a home network installation than a few cables and a network card. By carefully
considering all the possible functions of the home ahead of time, you can ensure you run enough cables,
of the right type, to each room in the house. Even then, you might still run out. Also, by aggregating as
much of the technology in one place as possible, you create a central hub called Node0. This physical
proximity allows you to place IR transmitters and control cables between devices and ensure that


everything can be controlled from a single area. Again, plan the purpose and features of this area so
that everything fits in and (importantly) has a method to access the machine’s panels, plugs, sockets,
and power.
C H A P T E R 5

■ ■ ■

149

Communication
Humans Talk. Computers Talk.
It is often said that language is the invention that makes all others possible. Within the world of
technology, language is the protocol that makes all others live. Writing software for a stand-alone
machine is all very nice, but when it manages to interface with the outside world, interface with another
program across a network, or control an external piece of hardware, it seems so much more satisfying.
Controlling even the simplest of robots with a computer is infinitely more impressive to the layperson
(and many geeks!) than the demonstration of an optimized implementation of marching cubes.
1

Having already covered a number of devices in Chapter 1 that are able to talk with external
hardware, I’ll now cover human-computer communication and demonstrate how we can interact with
one machine or piece of software and have it control another somewhere else. This includes the use of e-
mail, SMS, and web pages. However, the onset of new technology is relentless, and with devices such as
the iPhone offering a broadband
2
experience, its use as a device for voice calls, SMS, or e-mail is very
much reduced.
Why Comms?
There are four methods of communication within the technology arena:
• Computer-to-computer

• Human-to-human



1
The marching cubes algorithm represents a method of extracting a polygonal mesh from voxel space and was a
feature of the 1987 SIGGRAPH conference.
2
Broadband in its truest sense of “always on” and with no connection to its actual transfer speed. However, iPhone
users can enable tethering and use the mobile broadband share dock when at home to make use of their local WiFi
router.
CHAPTER 5 ■ COMMUNICATION

150

• Computer-to-human
• Human-to-computer
These are all important to us for different reasons. The first was covered in Chapter 1 and allows
devices to be controlled automatically according to some time- or logic-based programming.
Human-to-human communications are those that take place every day but can now be facilitated
by technology. Before the advent of the telephone, our only form of real-time communication was face-
to-face. Now we have e-mail, Internet relay chat (IRC), instant messaging (IM), and SMS to perform the
same task. All remove the “face” element.
We have also streamlined our existing communication mediums. Telephones, which were once low
quality and hardwired to a physical location, are now mobile. Through Voice over IP (VoIP) technology,
you can make use of the (near) free cost of the Internet to provide financial savings and, when combined
with mobile technology, facilitates the amusing situation where using a mobile phone is used to order
pizza online through a web page, when it would have been normally used to call them!
When we talk of computer-to-human communication, we are looking at reports and information
about the house that the computer sends to us, as appropriate. In the simplest of cases, this might be the

daily wake-up call or an e-mail containing the day’s TV schedule. In more complex scenarios, it could be
a full report of the computers in the house and how they are performing.
3

And finally, human-to-computer communication takes place most often and involves us telling the
machine what we want to do via e-mail, SMS, or a web page. To be a truly smart and automated house,
this list would include haptic interfaces. That is, we don’t need to issue an explicit command to tell the
computer what to do, but it knows by studying the environment. For example, it would know to switch
on the lights when the front door has been opened and shortly afterward the inside doormat sensor
closes, because it had realized that someone is entering the house. You’ve already built similar haptic
functionality in Chapter 2, so I’ll cover explicit communications in this chapter.
IP Telephony
IP telephony or VoIP communications are commonplace and an expected feature of any smart home.
For most, however, a VoIP installation will be a private one, existing only on personal laptops or desktop
machines owing to the personal nature of phone communication. But it can be used in combination
with voice recognition to provide an intriguing (if error prone) means of data input and a way to add an
internal home intercom system.
Skype
In the same way that Hoover has become synonymous with vacuum cleaner and Google now is a verb
meaning to search, Skype is the byword for VoIP. Begun in 2003 and released as freeware, Skype has
provided clients for Linux, Mac, and Windows, each with varying degrees of functionality and with all
versions allowing you to make free calls to other Skype users and subsidized voice calls to mobile
numbers and landlines, like any standard phone. Most allow you to log in with the same account from


3
If you have several machines, software such as Nagios can automatically monitor services and applications, sending
messages and updating web pages upon failure.
CHAPTER 5 ■ COMMUNICATION


151

several different locations, meaning you can install Skype onto each terminal in the house with the same
house-oriented phone number so that you can send and receive calls from any room in the house. With
additional hardware, you can adopt a hands-free approach thereby moving between rooms during the
conversation, such as to check on the dinner, for example, returning you to the roaming possibilities that
have existed since the introduction of cordless phones in the 1980s!
Asterisk
Asterisk is another software-based phone solution that also includes support for VoIP, mobile, and
landline calls. Its benefit to us is that it’s free software in the truest sense of the word and can support
many protocols, since it is a full private branch exchange (PBX) and can support highly configurable call
forwarding, voice mail, conferencing, and phone menus (so you can implement your own “Press 1 to
turn your lights on” system!). As with Skype, you will need a service-providing gateway to connect the IP-
based protocols to the phone network in general. This is a paid-for service and can be bought from many
places, including Skype itself with its own Skype-to-Asterisk module.
The simplest way to install the mass of code that is Asterisk is currently through FreePBX, but even
that is only worth the time if you have a large enough house to make shouting an impossibility or you’re
keen users of the phone, since you can get more solid communication through e-mail or the web (now
both available on most phones) or SMS.
E-mail
E-mail is now the lifeblood of personal and professional life the world over. It is very easy to send and
receive messages from anyone at any time—too easy, in fact, as the state of most spam folders will
testify! But it is here to stay, so we can add e-mail to the list of protocols our house will support, allowing
us to send messages to our video, light switches, or TV and for our house to send messages back.
Preparing E-mail in Linux
The travel path of an e-mail is the same everywhere and consists of three parts:
• Mail transfer agent (MTA): The MTA is also known as the e-mail server and is the
software that communicates with other MTAs over the Simple Mail Transfer
Protocol (SMTP) to route the e-mail messages it receives to the correct recipient,
noting the destination address and passing it to the server on that machine.

• Mail retrieval: This is the method by which e-mail is transferred from the mail
server and onto the client. The transfer of this data occurs through either Post
Office Protocol (POP) or Internet Message Access Protocol (IMAP). In our case,
these will be on the same machine since we’ll run our own MTA, but they needn’t
be since we could also download our Google Mail to our local machine for
processing, as I’ll cover in Chapter 6.
• Mail user agent (MUA): This is the client software used to actually read the e-mail
as well as send it. This includes large GUI applications such as Thunderbird, web
mail solutions such as AtMail, and smaller console-based ones such as Mutt.
CHAPTER 5 ■ COMMUNICATION

152

Although corporate drones will bleat incessantly about the benefits of Exchange as an MTA
( you have four primary e-mail servers to
choose from and many more MUAs than simply Outlook. Furthermore, because of the design of Linux
(and Unix-like systems in general), you can automatically process incoming mail with great flexibility
and issue noninteractive commands to send replies.
Each MTA has benefits and features the others don’t. The big four—Exim, qmail, Postfix, and
Sendmail—each has its own advocates and detractors. I personally use Exim because it has a guided
install and “just worked” afterward. For alternate opinions there is a wiki page covering the latest
versions of these packages, along with some commercial offerings. I'll wait here while you install one of
them.
Sending E-mail
After installing the server and testing it by sending yourself (and a second user) an e-mail or two, you can
begin the short task of writing an automatic send script. This is the easiest thing to do with Linux and
involves the mail command, which sends e-mail with any number of additional headers and settings.
Here, you need only an abstraction script such as the following:

#!/bin/bash


SUBJECT=$1; shift
TOADDR=$1; shift
MSG=$*

echo "$MSG" | mail -s "$SUBJECT" "$TOADDR"

which can be called with this:

xmitemail "Hello" "" "I bet you didn't think this would work!"

This command will send the simplistic e-mail shown and can be either invoked by typing it on the
command line triggering it from a daily crontab or run as a consequence of some other household event.
For example, someone coming through the front door (using the Arduino door mat from Chapter 2)
could issue such as e-mail, or it could be sent as a warning when one of the hard disks get too full.
I have subverted the original interface to mail here, because it will be more usual for users to invoke
the command in the manner shown earlier. However, there will be times when you want to revert to the
original usage of mail by allowing the script to accept any input from STDIN. This requires the three-line
replacement shown here to usurp MSG:

if [ $# -eq 0 ]; then
while read LINE ; do
MSG="$MSG""^M""$LINE"
doneelse
MSG=$*
fi

Note the ^M character, which is entered into editors like vi with Ctrl+V followed by Ctrl+M. Now the
message can now be fed in from a file, like this:


cat filename | xmitemail "Here's the file" ""

×