NOTICE
My involvement with xPL has come to an end. Automation has moved on considerably over the past few years, and it is now possible to buy a stand-alone controller off the shelf for a reasonable price, without having to spend hours writing your own code.
This website is being maintained as a record of my xPL development work up until 2011.
I have released the full source code of all my xPL projects into the public domain. You can download the archive from here.
Mal
xPLHal
Although it is possible for one device to directly control another, this is not usually desirable. For example, an RF receiver picking up data from a wireless temperature sensor should not need to know anything about air conditioners - it just wants to broadcast the temperature and be done with it. Similarly, the air-conditioner shouldn't need to be programmed with all the rules necessary to cope with any of the different types of thermostat available. Translating events into actions requires brains, and the brain of an xPL network (on Windows at least) is a program called xPLHal.
xPLHal receives messages sent from all over an xPL network and applies a set of rules called "Determinators" to them. The determinators decide what commands (if any) to send out in response to the received message. Actions can then be made conditional on the time of day, or a value reported by another message and complex behaviours can be built up which would not be possible if devices were talking directly to each other.
Next: Network Diagram.