1-Wire LUX9000 Thermostat Monitor
Table of Contents
- Overview
- Downloads
- Hardware
- Installation
- Software
- Future
This application demonstrates monitoring the LUX9000
Thermostat by utilizing the 1-Wire Network communication
port of the TINI platform.
1-Wire addressable switches are used to read the state
information from the accessory port of the LUX9000
Thermostat. The protocol to read out this port was
graciously provided by LUX. (Thank you LUX!)

LUX9000 and TINI
Here is the description of the LUX unit from their web site.
We found ours at Home Depot!
http://www.luxproducts.com/thermostats/tx9000.htm
The monitoring is done through a web browser. Here is a
screen snapshot of the Thermostat monitor. See the
`Software#software' section for more details on it's
operation.

Thermostat Monitor applet screen capture
As you can see, at 11:10 on Friday, the unit is running,
trying to achieve a temperature of 76 degrees Fahrenheit
with the current temperature being 75.0.
The hardware consists of a TINI communicating to an
interface board that connects to the LUX unit.

Hardware Overview
The interface board contains (3) DS2406's that connect to
the LUX accessory port and (1) DS2433 for tagging
information. This board allows the LUX9000 to be a 1-Wire
'node' on the network.
The 1-Wire and power is provided through the RJ-12 connection from TINI.
Note the ground 'tail'.

1-Wire Interface board (top)

1-Wire Interface board (bottom)
Note the 4 pin header that plugs onto the accessory port of
the LUX9000.
The Schematic can be downloaded here:
1-Wire LUX Schematic
The PCB can be downloaded here:
1-Wire LUX PCB
The board was designed to give access to a standard RJ-12
1-Wire port out the back of the unit.

LUX9000 Thermostat (back)

Accessory header where the board will mount

Board mounted to accessory header

Ground `tail' inserted between battery and contact

Closed unit with RJ-12 accessible out the back
The software consists of a 1-Wire application called
`ThermostatMonitor' running on TINI that listens on a
network port (7777) for a socket connection. Once a
connection has been established then the monitor updates the
new socket every time a change in the Thermostat occurs.
The entity on the other end of this socket is a Java Applet
running in a browser. Here is the overall software flow:

Software Overview Download source:
1-Wire LUX Source
Socket Communication
The socket communication is simple text read-line write-line. The consequence
of this is the ThermostatMonitor socket server can be linked up to a
simple telnet session.
For example:
c:\>telnet my_tini 7777

Telnet Screen
Note that the first message that is recieved is the version of the server.
The type of message is denoted by the first character. Here are
the available types of messages.
From Server to Client
V version
X exception
Everything else is parsible data
From Client to Server
X kill socket
Build
Each sample directory contains batch files to build and deploy
the applications. The batch files require the following
environment variables be set before use:
MY_TINI - name or IP of the TINI to deploy to
TINI_HOME - absolute path to the TINI distribution
OWAPI_HOME - absolute path to the 1-Wire API
distribution
The source is divided up into the following build directories:
ThermostatMonitor - base classes to monitor the Thermostat
ThermostatSocketServer - Socket listner that uses ThermostatMonitor
ThermostatApplet - Applet to run in remote browser
SimpleTINIWebServer - Simple Web server to run on
TINI
Deploy
When using the 'deploy' batch files, the following 4 files
will be copied to TINI:
tiniweb.tini - simple web server
tserv.tini - Thermstat Server
webroot/index.html - main HTML that brings in applet
webroot/ThermostatApplet.jar - applet
Run
To start the application:
TINI> java tiniweb.tini &
TINI> java tserv.tini
To stop the Thermostat server application, hit 'ENTER' at the
telnet prompt. To stop the web server, connect on port 6666.
This current implementation can only monitor the Thermostat
and not set any of the values. We have experimented with a
unit that simulates `key' presses to set the trip values.
LUX is in the process of changing the firmware of this unit
to allow updates through the accessory port. When this unit
is available this same board will be able to interface with
it.
Another step forward will be realized with the introduction
of the DS2408. This is an 8-channel version of the DS2406
allowing the (3) DS2406's to be replaced with ONE chip!