X10Client - Java user-interface for controlling X10 devices
Control X10 capable devices from anywhere on your network, incliuding from
Sharp Zaurus equiped
with a Wireless Network CF Card.
X10Client is a Java graphical-user-interface
program which communicates with the X10Server
to send X10 commands and displays X10
Created to work in a PJava environment using AWT.
Screen size designed to fit the Sharp
Includes packaging to create the required '.ipk' file needed to
load onto the Sharp Zaurus
Supports the following X10 commands: ON,
(a subset of the commands supported by
To utilize the capabilities of the X10Client you first need to install
the X10Server which also requires
purchasing a CM11A (available in the "ActiveHome"
package), or 'FireCracker'
CM17A, computer interface module from X10
, plus several X10 capable devices for the X10Server to control.
See also SmartHome.com and search
for other X10 capable switches and devices.
The X10Client was designed specifically for the Sharp
Zaurus PDA, but will work on any system that supports Java.
Note: While the look and feel of this AWT application should
appear the same on all Java platforms, this application was visually optimized
for the Zaurus and may appear differently on various non-Zaurus platforms.
Install the Java JDK v1.2
on your platform (JDK versions greater that v1.2 should work just fine,
however, if you are planning on eventually building the X10Client for the
Zaurus, then you should use JDK
Set the environment variable JAVA_HOME to point to this Java JDK
If necessary, run 'make jar' to build 'X10Client.jar'
(this assumes building in a Linux environment with gnumake installed):
Start the X10Client with the appropriate 'bin/runX10Client[.bat]'
script for your platform, or execute the java command from the command
line directly as follows (the commands shown assume starting from the X10Client
Windows: "%JAVA_HOME%"\bin\java -classpath X10Client.jar
Linux: $JAVA_HOME/bin/java -classpath X10Client.jar X10Client
Sharp Zaurus Installation:
Note: The X10Client requires a network connection to be able to communicate
with the X10Server. While the
Sharp Zaurus can be configured to work over its USB docking station, practicality
suggests that the Zaurus be equiped with a Wireless Network CF Card so
that it can be used without having to be hardwired to the network.
If necessary, (re)build 'java-X10CLient_1.0_arm.ipk' (this assumes
building in a Linux environment with gnumake installed):
Install the Java JDK v1.2
on your platform.
Run 'make ipk' to build 'java-X10CLient_1.0_arm.ipk'
and 'java-X10CLient_1.0_arm.ipk.control' (the 'control'
Install into your local 'Package Server' (optional step).
A 'Package Server' is simply a directory which is served by your local
http server (eg. Apache), or anonymous ftp server, that contains all of
your '.ipk' files you wish to have available for loading onto your
Zaurus. This directory also contains the file 'Packages'
which is just a contatenation of the individual package 'control'
files, each separated by a blank line. I find that placing downloaded
ipk files on my local package server, and rebuilding the Packages file
with their contained 'control' file, to be the easiest
way to upload new applications into my Zaurus (using "Install packages
If you have your own 'Package Server', you can have the 'java-X10CLient_1.0_arm.ipk'
and 'java-X10CLient_1.0_arm.ipk.control' files copied to the appropriate
directory and have the 'Packages' file rebuilt. Set
the environment variable IPK_INSTALL to point to the package server
directory, then run 'make install'. The X10Client
ipk and control file will be copied to this directory and the 'Packages'
file rebuilt using the command 'cat *.control >Packages'.
For this to work properly, all other '.control' files in
the directory must be padded with an extra blank line at the end of the
file in order for the entries to be separated in the 'Packages'
Install 'java-X10CLient_1.0_arm.ipk' on your Sharp Zaurus
using the "Add/Remove Software" utility application.
Start X10Client Java application with 'bin/runX10Client[.bat]',
or on the Sharp Zaurus, click on the X10 icon in the 'Applications' tab.
Here's a screenshot of the X10Client application running on the Sharp
To configure the X10Client to properly communicate with the X10Server,
select the option "X10 Server Properties..." from the "Files"
menu. Enter the IP address or name of the host running X10Server.
Enter the Command Port which the X10Server
is using to receive X10 commands. Optionally, enter the Log Port
to which the X10Server is broadcasting X10 events (this requires that the
X10Server is configured to broadcast X10 events on a specific port, either
to the specific host running X10Client, or to a general subnet broadcast
address. X10 events are considered informational only, thus the X10Server
broadcasts X10 events via UDP packets. This means that any client
listening to X10 events isn't guaranteed to receive a specific event, but
in practice few X10 event packets are ever lost). Click 'OK' when
the server configuration is completed.
To edit your custom defined house/unit code aliases, select the option
"Edit HouseCode Names..." from the "Files" menu. For
each house/unit code alias you wish to enter, select the desired House/Unit
codes from the pull-down menus, enter a brief description in the text field,
then click "Add". To remove an item, select it with the mouse
(or stylus), then click "Remove". When finished, click "OK".
To specify a house/unit code address, you may select the "Name" radio
button and a desired predefined house-code name from the pull-down menu,
or select the "House/Unit" radio button and a specific house/unit code
address. Send a command to the selected X10 address by clicking one
of the following buttons:
Click "On" to send an X10 ON command.
Click "Off" to send an X10 OFF command.
Click "+" to send an X10 BRIGHT command (a dim-able X10 device
Click "-" to send an X10 DIM command (a dim-able X10 device
The X10Client sends the command to the X10Server over the local-area-network,
which then forwards the command to the X10 CM11A computer interface over
the serial interface, which then sends the command over the house wiring
to the individual X10 capable devices. As a result there is latency
of about 1 second between the time the command is sent by the X10Client
and the time the X10 device actually responds to the command.
As the X10Client sends commands to X10Server, they will be shown in
the "X10 Event Log:" text area prefixed with "Send->". Also,
if the X10Server has log broadcasting
enabled, and the proper "Log Port:" has been specified, then X10 events
broadcasted from the X10Server will
also be shown in the "X10 Event Log:" text area prefixed with "<-X10:".
Log messages coming from the X10Server may be one of the following types:
<X10> - X10Server
has received an X10 command coming from another X10 transmitter device.
- An event based macro was executed.
- A timer based macro was executed.
<command> - X10Server
has received a command to execute.
<notify> - X10Server
has executed a 'Notify' command.
<error> - X10Server
has detected an error.
By configuring the X10Server to
recognize a command and trigger a macro, you can have the X10Server begin
execution of a series of commands triggered by a single command sent by
the X10Client. For instance, assume the following macro is defined
on the X10Server (X10Server/conf/X10.conf).
<on D1> on A 3 4; off A 5 6 7;
If D-1 is sent an ON command from the X10Client, then the
X10Server will receive this event and invoke the corresponding macro in
which A3/A4 will be turned 'on', and A5/A6/A7 will be turned 'off'.
Other configuration options are also possible. See X10Server
and the X10Server config file 'X10Server/conf/X10.conf'
for more information.
Questions? Comments? Let me know what
you think! Contact me at: firstname.lastname@example.org
Copyright (c) 2002 Martin D. Flynn