I started getting
involved with home automation at the beginning of 1994 when I purchased
several X10 devices as an experiment. I quickly found X10's power
and flexibility but also its limitations. The challenge that I found
most interesting was that of getting different technologies to communicate
with each other. A lot of what I wanted HAL to do already existed
in isolation but I wanted one system that could control all of them.
One of the main
limitations of X10 is that the communication is one way. Units do
not confirm the receipt of an instruction and you cannot request
the current state of a device. There are other automation systems
that give this functionality, but they are a lot more expensive.
The TW523 offers
some solutions to issues caused by the nature of the one way X10
communication. The TW523 can be used to monitor X10 traffic, and
can be interfaced with a computer. The computer can then in turn
keep track of device states. There are several pieces of software
currently available to do this but I chose to write my own and called
wrote "HAL" in VB3 for windows 3.11 but I have since converted
the program to VB5 under Windows 95/98. In my first house "HAL"
lived in the cupboard under the stairs.
In the current
house "HAL" is situated in the loft.
talks to X10
The first stage
of the project was to to give HAL the ability to send and receive
X10 commands. For this I used a TW523
and a RS232 Serial Interface TW523S10
both supplied by Laser Business
Systems (UK). The samples of code supplied with the SER-TW523
(now listed as the TW523S10) was a very good starting point.
are a little easier with the CM11U computer interface and several
activeX or OCX controls available.
I wanted a way
for HAL to display various information and interact with the user.
The TV was an obvious choice especially with the computer being
located in the loft. To achieve this I used a genlock device which
I already possessed which was from Vine Micros.
unit is set in "Overlay Mode" this means that the VGA
output from "HAL" is overlayed on top of the Video signal
being fed to the main TV. In Overlay Mode anything Black being outputted
from "HAL" is transparent thus allowing the TV picture
to be seen.
ID information displayed on TV
a UK Caller ID unit from Solwise
for around the 50 pound mark. The callers telephone number is read
by the CIDPC1 interface and passed through the RS232 port to the
PC. HAL then reads this information and displays the number in a
fairly large font on a black background. This is then superimposed
on to the TV using the Genlock device. HAL then announces the callers
number using HAL's sound card. Subsequently as modems with UK CID
support emerged I added additional support for both the PACE and
Hayes Accura 56K Modem. Again,
things are now easier with the latest version of the CIDPC1 units
from Crucible Technologies
the new units can log both incoming and outgoing calls and an OCX
is also available for a small fee.
A further addition
was the "ALARM" option, a time is entered on the status
window shown below using the I.R. remote control. Telephone calls
before the alarm time are then blocked, there is also the facility
to enter a list of tel. numbers that are allowed through regardless
Screen on TV
the X10 traffic, then if it see a certain X10 code it toggles a
pop up window on the TV screen. I chose "12" for this.
This allows the status screen to be displayed by pressing "12"
on any of the X10 control devices, including the infa-red remote.You
can see the status screen as it appears on the TV in the above picture.
Pressing "12" again then show the 2nd status screen shown
While the 2nd
status screen is being displayed if Hal receives an X10 code from
1-8 it changes the view to the appropriate camera.
closes and opens the curtains
I used a Swish
PowerGlyde unit connected to a (AM12U)
Appliance Module to achieve this. The curtains are then closed
and opened according to sunset and sunrise times calculated by "HAL".
The curtains can obviously also be controlled manually by any of
the X10 control modules.
controls the outside lights
light was very straight forward. The conventional light switch was
replaced with a (WS567) Wall Switch
Dimmer . The outside lights are then controlled by HAL and as
with the curtains the timings are based on sunset and sunrise times.
controls the Central Heating
I replaced the
fused switch output with a standard UK three pin socket and plug.
I then placed a (AM12U) Appliance
Module between the socket and plug. The original central heating
timer is then set to On (manual) leaving X10 to control the heating.
timings for on\off's are stored in an ini file, a further development
will allow these to be changed via the status
knows when the doorbell is pressed
above show:- USB Joystick port(left), Joystick Plug and lead (center)
and Doorbell (left)
HAL is interfaced
to the cordless doorbell by one of the four digital inputs of the
joystick port. The joystick port gives four digital inputs as well
as 4 analogue inputs (info
on PC Games Port) . It is worth noting that if you do not plan
on using the analogue inputs you must put a resistor of between
1K-100K in place of the inputs. If the analogue inputs are open
circuit the PC will not report a joystick being attached. I have
built the four resistors into the plug for neatness (see picture
When the doorbell
is pressed the +5ve from the doorbell is used to switch a transistor
and simulates the pressing of button1 on the joystick. Hal then
logs the event and switches to the Videofeed status screen and automatically
selects the CCTV camera pointing at the front door.
to switch on lights
I wanted to
automate some of the house lights so that they were switched on
when movement was sensed. I use PIRs that already exist for the
alarm system. The PIRs outputs are also interfaced using the Joystick\Games
port. HAL then turns the relevant light on using the TW523
to send X10 commands. I have implemented this on the PIRs in the
Kitchen and Hallways.
closes and opens the garage door
I used a garage
door unit from the DIY store Wickes. For security reasons this unit
is connected directly to HAL and not via an X10 device.
controls the electric underblanket
electric underblanket is connected to a (AM12U)
controls anything InfraRed
Using the RedRat2
from Chris Dodge
I replace my
One-For-All 8 with the Marantz
RC5000 in Sept 99. Most of the One-For-All remotes are compatible
with the Infrared Controller (IR543).
The RC5000 remote control is probably the most used method of controlling
X10 devices (Next to HAL that is!)
is programmed to take care of most things there are times when I
may want to control the house while I am out. For example turning
the heating on early, for this the (TR551)
Telephone responder is ideal. It can be set to answer the phone
and then after entering a pin number you can control up to ten devices.
In July 1999
I replaced the (TR551) Telephone responder
with a Hayes Accura Modem. HAL
using the modem now answers the phone after a predetermined number
of rings. You are then played a greeting (welcome.wav)
and requested to enter a password (password.wav).
Once the correct password has been entered you are given a number
of options which include turning heating on\off and being read the
telephone number of the last caller.
1999 I added option 4 which uploads hal-status
page to the web which includes telephone caller list and video still
from CCTV Cameras.
I had played
with video capture in 1996 using the Creative Labs videoblaster
but it was not until September 1999 I finally added CCTV support
to HAL. The video capture is achieved by using a Belkin USB videobus
video capture device.
In order for
the system to support up to 8 cameras I used a Parallel Centronics
Relay switch box. The switch box was a Maplins project that is no
longer available but enables you to switch relays by sending switch
codes to the printer port. I am currently investigating a USB relay
solution as an alternative.
SMS Text messages
In October 1999
I added SMS support for mobile phones. When I'm out HAL informs
me of various events via an SMS text message. For example if someone
telephones me HAL sends an SMS text message with the details of
telephone calls including Data, Time and telephone number.
In October 2000
I added an incoming SMS element to HAL. I am now able to send SMS
text messages to control devices like the heating, it is done by
sending messages containing keywords. In order to offer a level
of security the messages are only actioned if they come from a know
mobile phone number.
I have looked
at various voice recognition software including Dragon-Dictate and
Creatives Labs 'Voice Assist' to provide the engine for the addition
of voice control. Although I have had systems working in a test
environment the reliability has never been very good. For reliable
operation you had to be in close proximity to the microphone. So
currently for the system to work, I would either need to try and
place microphones all over the house or use some form of radio mic.