
com.rapplogic.xbee.examples.zigbee.ZNetApiAtExample Maven / Gradle / Ivy
/**
* Copyright (c) 2008 Andrew Rapp. All rights reserved.
*
* This file is part of XBee-API.
*
* XBee-API is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* XBee-API is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with XBee-API. If not, see .
*/
package com.rapplogic.xbee.examples.zigbee;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import com.rapplogic.xbee.api.AtCommand;
import com.rapplogic.xbee.api.AtCommandResponse;
import com.rapplogic.xbee.api.XBee;
import com.rapplogic.xbee.api.XBeeException;
import com.rapplogic.xbee.api.XBeeResponse;
import com.rapplogic.xbee.api.zigbee.AssociationStatus;
import com.rapplogic.xbee.util.ByteUtils;
/**
* This class contains AtCommand examples that are specific to ZNet radios
*
* @author andrew
*
*/
public class ZNetApiAtExample {
private final static Logger log = Logger.getLogger(ZNetApiAtExample.class);
private XBee xbee = new XBee();
public ZNetApiAtExample() throws XBeeException {
try {
// replace with port and baud rate of your XBee
xbee.open("COM6", 9600);
// get the 8 byte SH/SL address
log.debug("SH is " + ByteUtils.toBase16(((AtCommandResponse)xbee.sendAtCommand(new AtCommand("SH"))).getValue()));
log.debug("SL is " + ByteUtils.toBase16(((AtCommandResponse)xbee.sendAtCommand(new AtCommand("SL"))).getValue()));
// uncomment to run
// this.configureIOSamples(xbee);
// this.associationStatus(xbee);
// this.nodeDiscover(xbee);
// this.configureCoordinator(xbee);
// this.configureEndDevice(xbee);
} finally {
if (xbee != null && xbee.isConnected()) {
xbee.close();
}
}
}
private void associationStatus(XBee xbee) throws XBeeException {
// get association status - success indicates it is associated to another XBee
AtCommandResponse response = (AtCommandResponse) xbee.sendAtCommand(new AtCommand("AI"));
log.debug("Association Status is " + AssociationStatus.get(response));
}
private void configureEndDevice(XBee xbee) throws XBeeException {
// basic end device configuration (assumes ZNet radio flashed with end device API firmware)
XBeeResponse response = null;
// reset to factory settings
response = xbee.sendAtCommand(new AtCommand("RE"));
log.debug("RE is " + response);
// set PAN id to arbitrary value
response = xbee.sendAtCommand(new AtCommand("ID", new int[] {0x1a, 0xaa}));
log.debug("ID is " + response);
// set NI -- can be any arbitrary sequence of chars
response = xbee.sendAtCommand(new AtCommand("NI", new int[] {'E','N','D','_','D','E','V','I','C','E','_','2' }));
log.debug("NI is " + response);
// set API mode to 2. factory setting is 1
response = xbee.sendAtCommand(new AtCommand("AP", 2));
log.debug("AP is " + response);
// save to settings to survive power cycle
response = xbee.sendAtCommand(new AtCommand("WR"));
log.debug("WR is " + response);
// software reset
response = xbee.sendAtCommand(new AtCommand("FR"));
log.debug("FR is " + response);
}
private void configureCoordinator(XBee xbee) throws XBeeException {
// basic coordinator configuration (assumes ZNet radio flashed with COORDINATOR API firmware)
XBeeResponse response = null;
// reset to factory settings
response = xbee.sendAtCommand(new AtCommand("RE"));
log.debug("RE is " + response);
// set PAN id to arbitrary value
response = xbee.sendAtCommand(new AtCommand("ID", new int[] {0x1a, 0xaa}));
log.debug("RE is " + response);
// set NI
response = xbee.sendAtCommand(new AtCommand("NI", new int[] {'C','O','O','R','D','I','N','A','T','O','R' }));
log.debug("NI is " + response);
// set API mode to 2. factory setting is 1
response = xbee.sendAtCommand(new AtCommand("AP", 2));
log.debug("AP is " + response);
// save to settings to survive power cycle
response = xbee.sendAtCommand(new AtCommand("WR"));
log.debug("WR is " + response);
// software reset
response = xbee.sendAtCommand(new AtCommand("FR"));
log.debug("FR is " + response);
}
/**
* This assumes an end device that is already has the configureEndDevice configuration
* Does not save configuration! -- use WR if you want this configure to survive power on/off.
*
* @param xbee
* @throws XBeeException
*/
private void configureIOSamples(XBee xbee) throws XBeeException {
// basic coordinator configuration (assumes ZNet radio flashed with COORDINATOR API firmware)
XBeeResponse response = null;
// set IR to 1 sample every 10 seconds. Set to 0 to disable
response = xbee.sendAtCommand(new AtCommand("IR", new int[] {0x27, 0x10}));
log.debug("IR is " + response);
// set pin 20 to monitor digital input
response = xbee.sendAtCommand(new AtCommand("DO", 0x3));
log.debug("DO is " + response);
// set pin 19 to monitor analog input
response = xbee.sendAtCommand(new AtCommand("D1", 0x2));
log.debug("D1 is " + response);
// set pin 18 to monitor analog input
response = xbee.sendAtCommand(new AtCommand("D2", 0x2));
log.debug("D2 is " + response);
// set pin 16 to monitor digital input
response = xbee.sendAtCommand(new AtCommand("D6", 0x3));
log.debug("D6 is " + response);
// optionally configure DH + DL; if set to zero (default), samples will be sent to coordinator
}
public static void main(String[] args) throws XBeeException {
PropertyConfigurator.configure("log4j.properties");
new ZNetApiAtExample();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy