- XPL Protocol
xPL is an open protocol intended to permit the control and monitoring of
home automation devices. The primary design goal of xPL is to provide a rich set of features and functionality, whilst maintaining an elegant, uncomplicated message structure. The protocol includes complete discovery and auto-configuration capabilities which support a fully "plug-n-play" architecture - essential to ensure a good end-user experience.xPL benefits from a strongly-specified message structure, required to ensure that xPL-enabled devices from different vendors are able to communicate without the risk of incompatibilities.
Architecture
XPL device
Applications add functionality to your home automation solution such as weather information, sun rise/set and so on. You can build you own and there are many available on the net. A device can generate and or act on received messages, it can also issue instructions to any other xPL device.Bridge
It is assumed that your network protocol is TCP/IP but this is by no means a requirement. If you wish for your XPL message to cross from one transport medium to another (TCP/IP to RS232 for example) then you will need a Bridge.HUB
A hub is needed for all PCs that run one or more xPL devices. The main intention of the Hub is to broker the transactions when there are several devices on the once PC.XPLHAL
This is the brains of the XPL solution. Device configuration is performed here, meaning this is a critical component for the xPL environment. Scripted rules (called Determinators) that act on events (xPL or other) is a very handy feature delivered by XPLHAL.Protocol
Lite on the wire, by design
xPL Messages are line based, with each line ending with a linefeed (ASCII: 10 decimal) Character. The following is an example of a typical xPL Message
xpl-cmnd { hop=1 source=xpl-xplhal.myhouse target=acme-cm12.server } x10.basic { command=dim device=a1 level=75 }
All messages conform to this structure:
* The message type (xpl-cmnd, xpl-stat or xpl-trig)
* A header block of variable (but restricted) size. All name/value pairs must be present.
* The message schema, in the format schema.version
* A single message "body", containing name=value pairsMessage Schema
xPL uses well defined message schema's to ensure that applications from different vendors can interact sensibly. Message Schema's are extensible, and define not only the elements which should be present in a message, but also the order in which they appear.
This allows simple devices and applications to parse messages more easily.
All of the existing message schema's can be found on the xPL project home page. Developers looking to create a new schema are invited to do so.
External links
Official
* [http://www.xplproject.org.uk/ xPL Home Automation Project homepage]
* [http://www.xpl-home.org/forums xPL Forum]
* [http://wiki.xplproject.org.uk/index.php/XPL_Links xPL Project URL links]Development
* [http://www.xplmonkey.com/ xPL Mal's C++ SDK]
* [http://www.xpl4java.org/ Java SDK]
* [http://www.xpl-perl.org.uk/ Perl SDK]
* [http://www.xpl.myby.co.uk/ .Net framework]
* [http://users.telenet.be/see/ha/ C# and .Net]Other
* [http://www.opnode.org/ opnode's official website]
* [http://www.neven.info/ xPL 8bit micro controller]
* [http://misterhouse.sourceforge.net/ Misterhouse supports xPL]
Wikimedia Foundation. 2010.