This is a landing page for some Home Automation projects I worked on and made available for download. These projects fit in the wider xPL project – an open source community project for home automation based on the open xPL protocol.

Learn more about xPL:

xPLLib version 4.4
This version has a few minor updates in the xPLListener class and a major update in the XplMsg class. It is upgraded to .Net 2.0.
Please see the canvas that was added in the readme file to get you quickly up and running with this latest version.

- the constructor requires a vendor id and device id
- the configuration elements must be defined via the ConfigItems.Define method
- the Configuration done event is raised when the app has received its configuration, regardless whether it comes from an xPL config message or from a local file
- GetPreparedXplMessage returns a message that is almost ready to be sent, just fill in the final details

- every item of an xPL message is available as a property
- it does not accept illegal values (wrong casing or field size too long)
- the older interface has been left intact but marked as “obsolete”
- please use the new properties to construct xPL messages: it will help to get rid of the many poorly constructed xPL messages flying around… I did it for the applications below without too much of a hassle.


xPLCM11 is an interface to the X10 CM11 computer interface (other names for the same thing: CM12, LM11; compatible with CP10). xPLCM11 installs as a Windows Service. It communicates via the xPL “x10.basic” schema.

Features of Medusa.XPLCM11:
- reliable;
- multiple devices accepted in the “device” attribute;
- asynchronous: incoming X10 commands are queued for execution;
- incoming X10 signals (from the power line) do not interfere with incoming X10 commands (via xpl);
- threads communicate via synchronization objects (no time wasted in Thread.Sleep);
- stress-tested
The component survives and executes the following scenario: X10 commands ON/OFF are sent in a loop, building up a queue of commands waiting to be executed. While the commands are executed one after the other, as fast as the CM11 can handle them, X10 signals are put on the power line. The sending is interrupted and the component reports the signals. The command execution continues when the power line is clear. Eventually all commands will be executed and all incoming signals reported.

Medusa.xPLCM11 current status: V1.05. (.Net 2.0 and xPLLib V4.4)


xPLLogger does what its name suggests: it logs xPL messages. It writes xPL messages to an XML file. It comes with 3 XSL transformation files that will take the XML as input and generate html output which can be viewed in any browser. There is also an XSL included that generates Excel output.
You can configure what it logs via filters, how much it logs via a configuration item and the way the output is presented via an XSL.
It recognizes xpl messages of the log.basic schema. Added an xsl for this specific type of messages.

Medusa.xPLLogger current status: V1.2. (.Net 2.0 and xPLLib V4.4)


xPLDawnDusk (bonus!)
This is the original xPLDawnDusk as first published by John Bent but with a few corrections. It is very reliable and correctly goes through Daylight Savings Time moments…
100% compatible with the original (it still uses johnb as vendor id), so no need to modify scripts or determinators. Just uninstall whatever version you have running now and install this version.

xPLDawnDusk current status: V1.3 (.Net 2.0 and xPLLib V4.4)


This is an application that when run installs an icon in the taskbar
notification area.

Any messages that pass through its filters are displayed as a popup near the
taskbar notification area. Multiple popups will be stacked. A popup can be
closed by clicking its close button. A popup will remain visible as long as the
mouse is hovering over it. The application itself can be closed by
right-clicking on the taskbar icon and picking ‘exit’ from the menu.
It is configured via xPLHAL.

Two informational message received via the log.basic schema:
stacked info msgs

A warning:
xpl warning msg

An error:
xpl error msg

xPLBalloon is set to filter all messages in the next example to help understand what is happening in the xPL network:
xpl debug msgs

xPLBalloon current status: V1.2 (.Net 2.0 and xPLLib V4.4)



Comment by Boris
2008-07-24 20:41:01

Hello. Using 2 of your work and it is great ! Thank for this.
I only have a problem with xplballoon : deviceid has a name which is too large, it must be 8 or less in size. Have a look here : http://wiki.xplproject.org.uk/index.php/XPL_Specification_Document#The_xPL_Protocol:_.22Lite_on_the_wire.2C_by_design.22
It cause a problem with tonyt job : we can’t add OSD device pointing to xplballoon in his interface xPLMyHome.

Thank in advance for the next release :)

Comment by Tom VdP
2008-08-05 22:26:00

Hi Boris,
You will be glad to hear I have updated xPLBalloon. This version registers itself on the xPL network simply as “balloon”.
BTW, this version also allows multiple text= lines in one xPL message.
Have fun with it!

Comment by bushmen
2008-09-15 16:18:42


how do you initiate a xPL message.

eg. if the setups are installed with the balloon icon running in the sytemtray.

how would i be able to send a custom message to a user on the network.

i would like to use this for communication purposes, where i can tell a user something on which they have to click ok to.


Comment by Tom VdP
2008-09-15 20:25:35

This application is normally running without a user interface. It displays xPL messages that are generated by other xPL applications or devices. So, if you would want to specifically send it a message, you would either write your own xPL application that can put an xPL message onto the network, or you could pick one of the many xPL sender tools that already exist.
Note that you will need at least 2 other applications: 1 xPLHalManager to configure your xPL applications installed anywhere on your network and a xPLHub on each pc that will join in the xPL network.
One more caveat: the xPL network is limited to local networks. (If you want to pass xPL messages via the internet you are better of making a web application that generates xPL messages on the local server.)

If the network you mention is a local network (i.e. UDP broadcast messages will be seen by all machines) then you could install:
- on each pc: xPLBalloon and xPLHub
- on your pc: xPLBalloon, xPLHalManager and xPLHub and maybe some tool that helps you to generate an xPL message easily (though xPLHalManager can do that too)

You could try a simple setup on 1 pc alone and see if it fits your need. If it does, then you only need to deploy xPLBalloon and xPLHub on the other pcs and configure them in the same way (the default config should be ok, but you will have to open and close the config settings for each in xPLHalManger).

Comment by Cmri
2008-10-11 20:01:41

How can i display the value of a global variable in XplBalloon using message parameters?
I’m using Hal manager wizard

Thank u in advance,


Comment by Tom VdP
2008-10-15 17:00:35

I have never used determinators and xplhal wizards… I do everything in script. But please visit the forums (link is at the top of this page) and do a search there. I am sure this question is already answered! If not, feel free to post in the forum.

Comment by Insteon
2009-10-13 08:05:08

This is great, I like the ‘growl-esc’ popups – I have some interesting ideas for this, I’ll come back and post when I’m a bit further into the project.

Comment by GushK
2009-11-21 21:50:00


Quick question abou the Medusa.xPLCM11

for DIM, BIGHT commands, how is the level supported (0-100) and does it expect an absolute or relative value.
E.g if I call DIM, LEVEL=20, will it dim to 20% or dim by 20% from the current level?

Also how does this translate to the 16 brightness levels supported by the X10 modules?

Comment by Tom VdP
2009-11-22 13:43:49

Medusa.xPLCM11 is “agnostic” about the dim level, it merely checks whether the level is in the range 0 to 100 and then passes it on to the X10 interface. How exactly the X10 components react I do not know as I never had any to try this on.
Someone at the xpl forums can probably answer this question. http://www.xpl-home.org/forums/index.php

Comment by X10 Home Automation
2009-12-03 21:19:59

X10 doesn’t support direct dim levels, so the command will be interpreted as a decrease from current levels. How the 20% is interpreted will be a function of how many “dim” commands are sent to the module, each one being 1/16 of the current brightness.

(Comments wont nest below this level)
Comment by Serge
2009-12-27 23:54:33

Uh i’m just wandering around xPL, and i’m pretty surprised to see that you developed stuff using .NET … I’m on Linux (Ubuntu) only, trying xPL4Java, but i won’t be able to use any tools working only on Windows, whereas i would need the CM11a stuff … any idea, where could i find all this for Linux ?

Comment by Tom VdP
2009-12-29 09:37:44

Serge, your best bet is a search in the forums (see top of the article). I am pretty sure there exist interfaces with the CM11 written for Linux.

Name (required)
E-mail (required - never shown publicly)
Your Comment (smaller size | larger size)
You may use <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> in your comment.

To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word

Trackback responses to this post