Log of Changes
My UK HAL Project
My US HAL Project
Current Devices
Useful Links

HAL Project (1994-2000)

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 it "HAL".

I originally 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.

HAL 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.

Now things 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.

The Genlock 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.

Caller ID information displayed on TV

I purchased 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 of time.

Status Screen on TV

HAL monitors 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 below.


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.

HAL 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.

HAL controls the outside lights

The outside 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.

HAL 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.

Currently the timings for on\off's are stored in an ini file, a further development will allow these to be changed via the status screen

HAL knows when the doorbell is pressed


Photographs 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 above).

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.

PIRs 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.

HAL 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.

HAL controls the electric underblanket

The Winterwarm electric underblanket is connected to a (AM12U) Appliance Module

HAL controls anything InfraRed

Using the RedRat2 from Chris Dodge (

Remote Control

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!)

Telephone Control

No Longer Used
Tapi Replacement

Although HAL 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.

In September 1999 I added option 4 which uploads hal-status page to the web which includes telephone caller list and video still from CCTV Cameras.

Hal and CCTV

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.

GSM 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.

Voice Recognition

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.