X10 Appliance Control
In our first look at the X10 technology, we came to the conclusion that it isn't really reliable enough and does not scale well enough to be a major part of our home control system. With a bit more time to think about it though, we can see that its low cost, easy to use, plug-in design does makes it suitable for controlling non-critical services and features.
So with this in mind, the objectives of this project are:
- To learn about X10 and its capabilities and limitations by testing its ability in a few scenarios in our existing home.
- To enable automation and control of some external lighting and temporary decorative (Christmas) lighting in our existing home.
- To write a Java application wrapper around the X10 technology, to make it part of our real-time, event driven Home Control System (HCS).
Computer Interface Module
This X10 PC CM11/CM12 interface which provides a USB and serial port interface to a PC but can also work in 'stand alone' mode and controls timed events and run macros. Scheduled events are also retained and resume automatically after a power outage.
The socket on the unit is not switched, it simply passes a power feed through the device. The device also accepts 2 AAA batteries but these do not need to be installed in the unit for it to work. They are for the on-board clock and the retention of macros, to allow it to work when not connected to a PC.
This device comes with both a serial lead and a USB lead. The latter is basically a USB serial port and needs a driver to work. We downloaded the latest Marmitek driver. This recognises the device as a PL-2303 (Prolific USB to Serial Comm Port). There is other software that can be downloaded from Marmitek in the Customer Service / Software section.
On my home control server, this driver simply failed to work. We eventually did get the driver installed and it then crashed our home control mini-ITX PC, which is running Windows 2000 (don't ask, it's a long story and its been running non-stop for over 6 years). At this point we tried it on another machine, running Windows XP. This did work and we tested this with the Marmitek Automated Home software. This is a fairly crude bit of software but, it does allow you you test out your hardware.
To get things working on the Mini-ITX machine we dumped this USB-serial lead and used a simpler and cheaper USB-serial adaptor and the supplied serial port lead. This device uses the simpler adn more reliable FTDI chip and drivers. The kind of device we are talking about is available here.
We want to control our X10 devices using applications written in Java. It would be possible to write the required code based upon the Marmitek X10 Protocol (MS Word document) but we had a quick search and came across the Java X10 Project.
In fact we found several suitable libraries of Java code but, all were fully functional X10 libraries and quite complex. We actually found it easier to write our own from scratch using the protocol doucmentation, to support the limited functionality we planned for X10 in our home. Our implementation works out at less than 100 lines of Java code.
Sun no longer offer's the Windows platform binaries of javax.comm, however javax.comm 2.0.3 can be used for the Windows platform, by using it in conjunction with the Win32 implementation layer provided by the RxTx project. To use that, download javax.comm for the 'generic' platform (which provides the front-end javax.comm API only, without platform specific back-end implementations bundled). Then acquire the Windows binary implementation rxtx-2.0.7pre1 from http://www.rxtx.org.
Whatever we tried to do, we couldn't get this to work, so we resorted to using the SimpleSerial Java library in the end, as we have tested this on other projects.
Marmitek X10 Appliance Module
This Marmitek appliance module is an example of one that we have used in our current home. It provides an on/off function (i.e. it is not dimmable) to control a lamp, heater, fan, coffee maker, etc. It is designed to operate with 240V ac loads of up to 500W (incandescent lamps and halogen light) or 230W (motors) or 3600W (resistive loads).
You can get wired version of these modules, which are designed for a more permanent installation, e.g. garden lighting control
As the X-10 switch is simply inserted into wall sockets like an ordinary plug, there is no installation to be carried out. Just set the wheels on the front to the desired device address (eg. G7) and note this address down.
The load connected to the switch module can still be controlled locally by its own switch, but you have to leave the local switch in the "ON" position, otherwise the load cannot be controlled by an X-10 controller. This unit responds to the All-Lights-Off, On and Off commands. We found some design flaws with this device. Whilst using an small night-light that presents a very low load (Neon light), it doesn't fully switch off and something happens inside the unit that makes it switch itself on afer a 2-3 minute delay. This was totally repeatable and not interference or spurious transmissions.
X10 2G Appliance Module
This is the the latest 2nd generation X10 module with built in noise filter and improved signal sensitivity. One plus is that it includes manual on/off button on the front of the module. A downside is the module ID has to be programmed using a different process. In reality this programming is very simple to acheive though.
Along with the rest of our Home Control System (HCS) currently under development, we are using Java code to wrap individual automation technologies and to enable them to form part of a real-time, event driven, mulit-process control system.
We ordered equipment to test from UK Automation. We have been running the X10 PC interface module via a USB port, to control four plug-in appliance modules. We have been running two Marmitek modules for a while now and two 2nd generation appliance modules for a less time.
- X10 is not reliable as a sole home automation technology. In particular, the older modules often miss commands sent to them. The 2nd generation modules are a lot better. For a while we had a 'dead zone' in our lounge as far as X10 signalling went, but testing identified the culprit and we have had reliable communications working for a while now.
- Placing the PC interface as close (electrically) as possible to the modules makes things better but there are often constraints on just how this is achieved.
- The Marmitek appliance modules do not like low loads or even zero loads. They leak current and tend to switch themselves on when used with night lights and low energy bulbs.
- The 2nd generation modules are much better for use with lamps as they feature a manual button to toggle the module on or off. This fits with our methodology of over-laying automation on top of the traditional manual controls. With the earlier modules the only way to achieve this manual control is via a control link back through the PC interface.
- The modules we have been using are quite noisy in operation. The 2nd generation modules are better in this respect but, there is still a noticable 'clunk' on switch over.
- Bear in mind that X10 modules do not work in the event of a power cut and thus cannot be used for emergency lighting and similar features.
In summary, we will not be using X10 technology in our next home but, for existing installs it is a cheap and reasonable solution for automation of lighting an appliances, that are not safety/security critical.