Now that XBee is supported, let's see how to make it work.
Bill of Materials
I would highly recommend to buy an extra XBee radio and an adapter if you have never worked with XBees before - it'll save you a lot of grief because you'll be able to monitor the network status activity. You see, the relay shield doesn't come with network status and activity lights, so unfortunately, you'll be flying blind and will have to re-plug XBee modules into adapter every time you're not sure what is going on.
Hence, recommended quantities are - three XBee modules, two adapters and one relay shield (add extra XBee module + relay shield pairs if you have more than one HVAC unit, one pair per unit) - starting at $110.80 before shipping.
Minimum quantities - two XBee modules, one adapter and one relay shield (
$73.90 before shipping).
Before you say that's expensive, think how much you will spend breaking walls to wire cables, then patching them back, texturing and painting. Not even talking about time spent on all that exciting work.
Keep in mind that some suppliers have high lead times - I've seen as high as two weeks.
Power
Note that the power supply is not included into the bill of materials. The relay shield requires 9V DC power - you either might have one handy already, buy a cheap one wherever you fancy, or just use a 9V battery (the relay shield has screw on contacts for that). I don't know yet how long the relay shield is going to last on a battery with normal HVAC usage pattern, will find out and report.
Setup
Countless
XBee tutorials exist, so I'm going to skip this part - suffice to say, get your XBees lined up and talking to each other.
DZ specific XBee setup
You need to flash one XBee module (the one on the adapter) with the Coordinator API firmware (when you get familiar with
X-CTU software, this will become self-explanatory). Make sure you read the module configuration and flash correct firmware. After you flash API firmware, it won't be possible to use a dumb terminal to control the XBee anymore (limitation of ZB series), so make sure you're done with setting up communications correctly before you do that - like I said, extra XBee and an adapter will help a lot from here on.
IMPORTANT: Make sure you set AP=2 and write changes. The reason for this is that xbee-api library used for low level communications doesn't work with AP=1, and fails to report when AP=1, or forcibly change the module state to AP=2.
Baud Rates
Don't bother changing the port speed from default 9600 baud. DZ is more than happy with that speed, but if you change it, you might run into trouble remembering what it is next time you try to connect to XBee via an adapter.
DZ Configuration
XBee devices are configured in exactly the same way as 1-Wire devices: using a device factory. Here's a snippet that will produce a working switch (0013A200.4062AC98 is the 64 bit hardware address of my XBee module plugged into the relay shield, substitute it with yours):
<bean id="device_factory"
class="net.sf.dz3.device.sensor.impl.xbee.XBeeDeviceFactory"
init-method="start">
<constructor-arg index="0" value="/dev/ttyUSB0"/>
</bean>
<bean id="switch_0013A200.4062AC98_0"
factory-bean="device_factory"
factory-method="getSwitch">
<constructor-arg value="0013A200.4062AC98:D0"/>
</bean>
There are four channels on the relay board used. Channel numbers are printed on the silk screen (look at the
data sheet if in doubt).
NOTE: Relays are marked COM1 to COM4, but channels to access them correspond to actual XBee channels - D0 to D3. This is done so that all XBee digital outputs can be controlled - D0 to D8, and P0 to P3.
Congratulations, you're done
From here on, things are just as usual - use the reference to
switch_0013A200.4062AC98_0 as you would have with a 1-Wire based device.
UPDATE: Adjusted description to match the improved channel addressing.