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.
What is xPL?
xPL is a communications protocol for household devices, allowing events received by one device to trigger activity in another. The system has been designed to be as lightweight as possible, so that it can be used both by desktop PCs and by simple embedded devices.
Any device or system that has a PC interface can potentially work with xPL (While in theory it is possible to use xPL without PCs or IP networks, in practice most interfaces for Home Automation are for PCs, and so for the sake of simplicity this primer assumes a PC-based xPL network). All that is required is an xPL gateway program (also known as a connector) that translates the native language of the device into xPL messages that are broadcast over a computer network. The gateway may also respond to incoming xPL messages to control the device.
The xPL gateway programs form a network, with messages sent by any one application received by all the others. This network may be contained within a single PC, or it may be formed of xPL applications running on several PCs connected together. In practice it is usual for most xPL gateways and the associated PC interfaces to be installed on a single PC that can be left running 24/7. Since xPL does not place much of a demand on the host PC, that machine does not need to be dedicated to xPL - many people also host an intranet, run a mail sever and stream movies and music from this PC.
Communications between xPL applications within a single PC and between PCs on a Local Area Network (LAN) use UDP. The important points to note about UDP are that messages are not guaranteed to arrive at their destination, and they may arrive in a different order to that in which they were sent. In practice problems with missing messages are rare but the user should be aware that the potential exists.
One other problem with UDP is that only one application on a PC can receive messages from the designated port (xPL has been assigned port 3865). To work around this restriction, each PC that is hosting an xPL program must also be running an xPL hub.