MCPcopy Index your code
hub / github.com/andrewrapp/xbee-api

github.com/andrewrapp/xbee-api @v0.9.3

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.9.3 ↗ · + Follow
806 symbols 1,757 edges 92 files 167 documented · 21%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

xbee-api

This is a Java API for communication with XBee/XBee-Pro series 1 (802.15.4) and series 2 (ZB/ZigBee Pro) OEM RF Modules, in API mode. The objective of this project is to provide a flexible and simple to use API to interact with XBee radios. In terms of flexibility, the goal is to not constrain you to a particular implementation (e.g. GUI, Web App, Processing etc.), but instead let you decide how to use it. This software has been tested on Windows, Mac, and Linux and can run on any other platform that supports Java 5 or greater and RXTX, including the Rasberry Pi! If you're interested in interfacing XBees directly with Arduinos see XBee Arduino

Note: This software requires API mode, by setting AP=2. If you are using Series 2 XBee, you'll need to install API Firmware (coordinator, router or endpoint) with X-CTU since they ship with AT firmware. This software will not work correctly with AP=1 Refer to XBeeConfiguration and WhyApiMode for more info.

News

  • 1/8/17 Release 0.9.2 is in Maven Central. This release includes xbee-socket so you can connect to XBees over an ip network. You'll still need the RXTX native module installed and referenced in java command with -Djava.library.path=/usr/lib/jni/
  • 2/19/15 I've created xbee-socket and xbee-serial-server projects for sharing a single xbee radio with multiple applications, over sockets. This is very beta. Also, this code is now on github.
  • 2/1/14 Converted repository from Subversion to Git
  • 6/11/13 Yeah, you can use xbee-api with your Raspberry Pi
  • 4/3/11 I have created a XBeeUseCases wiki that describes several use cases for communicating with XBees.
  • 11/7/10 The 0.9 release is now available! This release includes a lot of new features and an extensive redesign of the internals. See ReleaseNotes for details.
  • 8/13/10 I've added a wiki that describes how to use XBee-API with Processing
  • 3/29/09 I have released XBee Arduino. This is a port of XBee API to the Arduino platform, allowing you to send/receive packets on Arduino.
  • 4/5/08 Initial Release

Documentation

Note: some image links may not render correctly from the googlecode export

Google Group

Learning/Books

Examples

Here are a few examples that demostrate some common functionality:

Turn on an I/O port on a remote Series 2 (ZNet/ZB Pro) XBee:

XBee xbee = new XBee();
xbee.open("COM5", 9600);

// this is the Serial High (SH) + Serial Low (SL) of the remote XBee            
XBeeAddress64 addr64 = new XBeeAddress64(0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0, 1);

// Turn on DIO0 (Pin 20)
RemoteAtRequest request = new RemoteAtRequest(addr64, "D0", new int[{XBeePin.Capability.DIGITAL_OUTPUT_HIGH.getValue()});

xbee.sendAsynchronous(request);

RemoteAtResponse response = (RemoteAtResponse) xbee.getResponse();

if (response.isOk()) {
    System.out.println("Successfully turned on DIO0");
} else {
    System.out.println("Attempt to turn on DIO0 failed.  Status: " + response.getStatus());
}

// shutdown the serial port and associated threads
xbee.close();

Receive I/O samples from a remote Series 1 (802.15.4) XBee:

XBee xbee = new XBee();     
xbee.open("COM15", 9600);

while (true) {
    RxResponseIoSample ioSample = (RxResponseIoSample) xbee.getResponse();

    System.out.println("We received a sample from " + ioSample.getSourceAddress()); 

    if (ioSample.containsAnalog()) {
        System.out.println("10-bit temp reading (pin 19) is " + ioSample.getSamples()[0].getAnalog1();
    }
}

There are many more detailed examples included in the code for both ZigBee and 802.15.4. Here are just a few:

This example contains a few sample configurations to get your ZigBee coordinator and end devices configured quickly, without needing X-CTU (windows only) ZNetApiAtExample.java

Example of sending packets from a ZigBee coordinator to an end device ZNetSenderExample.java

This example receives the packets sent in the previous example ZNetReceiverExample.java

Feature Support

The majority of the XBee specification has been implemented for both 802.15.4 (Series 1) and ZNet 2.5/ZB Pro (Series 2). See FeatureSupport for a full listing of supported API types.

About

I received my first pair of XBee Pro radios in Nov '07, after learning about them on the Arduino website. I quickly learned that to take advantage of the real power in XBee radios (e.g. I/O Samples, ACK/Delivery Status, Remote AT etc.), you need to configure the radio in API mode. I searched for open source XBee software with support for API mode, but couldn't find anything, so I decided to write my own. I started coding on 12/15/2007 and after about 300 commits and several months later I released the software on Google Code.

Support

Please report any bugs on the Issue Tracker For questions regarding this software, not covered in the documentation, use the Forum

Questions/Feedback

Questions about this project should be posted to http://groups.google.com/group/xbee-api?pli=1 Be sure to provide as much detail as possible (e.g. what radios s1 or s2, firmware versions, configuration and code).

Consulting/Commercial Licenses

I'm available for consulting to assist businesses or entrepreneurs that need help getting their projects up and running. I can also provide a commercial license for situations where you need to distribute code to clients/third parties that would otherwise conflict with GPL. For these matters I can be contacted at andrew.rapp [at] gmail.

Extension points exported contracts — how you extend this code

NoRequestResponse (Interface)
This filter is used to capture only RX packets that are not a response to a TX packet. This includes I/O samples, RX pac [5 …
src/main/java/com/rapplogic/xbee/api/NoRequestResponse.java
PacketListener (Interface)
Add an implementation of this interface to xbee.addPacketListener to get notifications of new packets @author andre [4 …
src/main/java/com/rapplogic/xbee/api/PacketListener.java
IIntInputStream (Interface)
(no doc) [6 implementers]
src/main/java/com/rapplogic/xbee/util/IIntInputStream.java
XBeeConnection (Interface)
Represents a protocol independent connection to a XBee radio (e.g. could be a serial connection, socket, xmpp etc.) Impo [3 …
src/main/java/com/rapplogic/xbee/XBeeConnection.java
IXBee (Interface)
XBee interface @author andrew [2 implementers]
src/main/java/com/rapplogic/xbee/api/IXBee.java

Core symbols most depended-on inside this repo

read
called by 47
src/main/java/com/rapplogic/xbee/api/IPacketParser.java
toBase16
called by 45
src/main/java/com/rapplogic/xbee/util/ByteUtils.java
write
called by 34
src/main/java/com/rapplogic/xbee/util/IntArrayOutputStream.java
sendAtCommand
called by 28
src/main/java/com/rapplogic/xbee/api/XBee.java
getValue
called by 28
src/main/java/com/rapplogic/xbee/api/ApiId.java
getBit
called by 28
src/main/java/com/rapplogic/xbee/util/ByteUtils.java
isDigitalEnabled
called by 25
src/main/java/com/rapplogic/xbee/api/zigbee/ZNetRxIoSampleResponse.java
isConnected
called by 21
src/main/java/com/rapplogic/xbee/api/XBee.java

Shape

Method 695
Class 82
Enum 18
Interface 11

Languages

Java100%

Modules by API surface

src/main/java/com/rapplogic/xbee/api/zigbee/ZNetRxIoSampleResponse.java59 symbols
src/main/java/com/rapplogic/xbee/api/zigbee/ZNetNodeIdentificationResponse.java34 symbols
src/main/java/com/rapplogic/xbee/api/wpan/RxResponseIoSample.java30 symbols
src/main/java/com/rapplogic/xbee/api/wpan/IoSample.java30 symbols
src/main/java/com/rapplogic/xbee/api/XBee.java27 symbols
src/main/java/com/rapplogic/xbee/XBeePin.java26 symbols
src/main/java/com/rapplogic/xbee/api/zigbee/ZBNodeDiscover.java23 symbols
src/main/java/com/rapplogic/xbee/api/zigbee/ZNetTxRequest.java22 symbols
src/main/java/com/rapplogic/xbee/api/zigbee/ZNetExplicitTxRequest.java22 symbols
src/main/java/com/rapplogic/xbee/api/zigbee/ZNetTxStatusResponse.java21 symbols
src/main/java/com/rapplogic/xbee/api/PacketParser.java20 symbols
src/main/java/com/rapplogic/xbee/api/XBeeResponse.java19 symbols

For agents

$ claude mcp add xbee-api \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact