Support for new hardware variants:
- XBee 3 Cellular Global LTE Cat 1
- XBee 3 Cellular North America LTE Cat 1
- XBee 3 Cellular LTE-M/NB-IoT Low Power
- XBee RR TH Pro/Non-Pro
- XBee 3 Cellular Global Cat 4
- XBee 3 Cellular North America Cat 4
- XBee XR 868 TH
- XBee XR 900 TH
- XBee 3 BLU
Support to retrieve XBee statistics.
Send/receive explicit data in 802.15.4. (XBee 3 modules support this feature)
Firmware/profile update support for:
- XBee RR MMT/SMT/TH Pro/Non-Pro (XBPL-384)
- XBee XR 868 MMT/SMT/TH, local and remote (LCG-398)
- XBee XR 900 MMT/SMT/TH, local and remote (LCG-398)
- XBee 3 BLU, local (XBPL-391)
Support for sending BLE Generic Access Profile (GAP) scans. (Only XBee 3 BLU modules support this feature) (XBPL-391)
Remove
pysrp
dependency.The library includes support to generate salt and verifier required to configure
$S
,$V
,$W
,$X
, and$Y
XBee parameters to establish Bluetooth password.Bug fixing:
- Fix
TransmitOptions.ENABLE_UNICAST_TRACE_ROUTE
value. - Python 3.10 compatibility: Fix removed deprecated
collections
module. See collections.abc, Removed, and Changes in the Python API sections at What’s New In Python 3.10 (DAL-5918) - Fix order of nodes when creating a Zigbee source route (#278)
- Firmware update: Do not check XBee region for 'skip' code in XML firmware file (XBPL-394)
- Salt/verifier generation using
pysrp
was not working with certain passwords (see cocagne/pysrp#55) Solved by removingpysrp
dependency and implementing the code to generate them. - Several minor bug fixes.
- Fix
Support for new hardware variants:
- XBee 3 Cellular LTE-M/NB-IoT (Telit)
- XBee RR MMT/SMT
- S2C P5
- XBee XR 900 MMT/SMT
- XBee XR 868 MMT/SMT
OTA firmware update:
Implementation of considerations for versions 1009, 300A, 200A, or prior (XBPL-375) See:
When updating a remote profile, let the library calculate the
*.otb
file path based on the*.xml
firmware file, as it does for the*.ota
.
XBee Cellular:
- Do not work with network if the XBee does not support it (XBPL-374)
- Fix creation of IMEI when reading cellular information.
Support to update a bunch of nodes at the same time (DAL-5285)
Documentation:
- Add info about the
force_settings
parameter ofopen
method (#241) - Add missing
exportutils
module to documentation.
- Add info about the
Set exclusive access mode to the XBee serial port (#222, #252)
Do not stop frames reader if a serial buffer empty exception occurs (#222, #252)
Do not use
os.path.join()
for relative paths of zip entries (#247)Fix bad conditions when checking for a received packet (#242)
Fix attribute name in find neighbors debug message (#122)
Fix remote firmware update issue with binary file on SX devices.
Fix protocol change issues during firmware update operation on SX devices.
Do not reconfigure SP and SN values after a firmware update operation in P2MP protocol.
Add new method to update salt and verifier values of Bluetooth password SRP authentication.
Several minor bug fixes.
- Deep node discovery for Zigbee, DigiMesh, and 802.15.4.
- Get route from local XBee to a remote XBee:
- New method to register a callback to listen for new received routes
(
add_route_received_callback()
) - New blocking method to ask for the route to the remote node
(
get_route_to_node()
)
- New method to register a callback to listen for new received routes
(
- Allow to recover a local node from a profile not only from firmware.
- Support to be notified when new frames are received from a specific node
(
add_packet_received_from_callback()
). - Update network information from sent/received AT Command frames.
- New optional argument for parameter value in
execute_command()
. - New optional argument to apply pending settings in
get_parameter()
,set_parameter()
, andexecute_command()
. - XBee 3:
- Support to update remote file system OTA images.
- XBee SX 900/868:
- Firmware update for local and remote XBee devices.
- Profile update for local and remote XBee devices.
- XBee S2C:
- OTA firmware/profile update support for remote nodes.
- Zigbee:
- Methods to get nodes routing and neighbor tables:
get_routes()
andget_neighbors()
. - Methods to get/set many-to-one broadcasting time:
get_many_to_one_broadcasting_time()
andset_many_to_one_broadcasting_time()
. - Support for source route creation:
create_source_route()
. - New frames:
- Route Record Indicator (0xA1)
- Create Source Route Packet (0x21)
- Methods to get nodes routing and neighbor tables:
- DigiMesh:
- Method to get node neighbors:
get_neighbors()
. - Method to build aggregate route:
build_aggregate_routes()
. - New frames:
- Route Information Packet (0x8D)
- Method to get node neighbors:
- Documentation update
- Bug fixing:
- Captured possible exception while determining the XBee role (#103)
- Memory leak: empty list of last discovered nodes using ND (#172)
- Fix Python 3.9 syntax error (#204)
- Use least significant nibble of status field in local/remote AT Command Responses (XCTUNG-376)
- Do not lose already registered socket callbacks when closing a local XBee.
- Reload node information after firmware/profile update (XBPL-348)
- OTA firmware update:
- Fix sequence number in ZCL responses during fw update (XCTUNG-1975)
- Immediate update after transferring the OTA file (XBPL-350)
- Use requested file offset and size instead of fixed chunks (XBPL-344)
- Mechanism to calculate the proper block size based on the maximum size received by the client and the maximum payload size (XBPL-346)
- For asynchronous sleeping nodes (Zigbee, DigiMesh, 802.15.4) and synchronous sleeping networks (DigiMesh), configure a minimum sleep time before update and restore settings at the end. For DigiMesh synchronous sleeping network, the local XBee must be a non-sleeping node but synchronized with the network (SM=7)
- Profile application:
- Do not uncompress profile when reading its information. This change avoids extra processing time and required space when retrieving profile info.
- Remove profile extracted files. A profile is opened to access to its contents, and must be closed when done with it.
- Fixed the application of XBee profiles with
AP
setting changes (XBPL-340) - Fixed bootloader update from profile due to bootloader image path mismatch (XBPL-338)
- Fix bootloader update operation by waiting some time until the new bootloader is running (XBPL-339)
- Fixed application of profile with filesystem from Windows(XBPL-341)
- Read firmware version as an hexadecimal value (#177)
- Several minor bug fixes.
- Zigbee: Support to register joining devices to a trust center.
- Cellular: XBee TCP/UDP socket support.
- XBee 3:
- Firmware update for local and remote XBee devices.
- Profile update for local and remote XBee devices.
- File system management for local XBee devices.
- New recover serial connection functionality to force the XBee serial connection settings.
- Support for notification of network cache modifications events (new node added, removed of existing node, network clear, ...)
- Deprecate
get_api_output_mode
andset_api_output_mode
methods to use newget_api_output_mode_value
andset_api_output_mode_value
withAPIOutputModeBit
enumeration. - Role as one of the cached parameters.
- Report an error on 'finished discovery' callback if node discovery fails.
- Several minor bug fixes.
- Add new methods to send and receive data from other XBee interfaces through User Data Relay frames.
- Add new methods to manage the Bluetooth interface.
- Add support to set AT parameters without applying them with the AT Command Queue packet.
- Improve the callbacks mechanism:
- Callbacks are now executed in parallel.
- Internal callbacks are now defined when needed to avoid issues when more than one callback of the same type is defined.
- Add missing
Transmit Status
,Modem Status
, andCellular Association Indication Status
values to cover all XBee Cellular/XBee3 Cellular features. - Bug Fixing:
- Fix some bugs related to package spec data.
- Log an error when processing a wrong frame instead of stopping the reader.
- Fix an issue parsing Explicit RX Indicator packets.
- Fix a couple of leaks with StreamHandlers.
- Add support for DigiMesh and 802.15.4 protocols on XBee3 modules.
- Return an unknown XBee packet when the received packet is not supported by the library instead of raising an exception.
- Change logging handler to log messages in the console.
- Bug Fixing:
- Fix a problem when closing the device connection in the reader.
- Fix how is determined whether the module has entered in AT command mode or not.
- Fix the string encoding and decoding in some API packets.
- Fix the message displayed when the XBee device protocol is not correct one.
- Add support for new hardware variants:
- XB8X
- Add missing
Modem Status
values for Remote Manager connect and disconnect events. - Bug Fixing:
- Fix timeouts on Unix platforms.
- Fix the return source endpoint method from the
ExplicitRXIndicatorPacket
class. - Perform general bug fixing when working in API escaped mode.
Initial release of XBee Python library. The main features of the library include:
- Support for ZigBee, 802.15.4, DigiMesh, Point-to-Multipoint, Wi-Fi, Cellular and NB-IoT devices.
- Support for API and API escaped operating modes.
- Management of local (attached to the PC) and remote XBee device objects.
- Discovery of remote XBee devices associated with the same network as the local device.
- Configuration of local and remote XBee devices:
- Configure common parameters with specific setters and getters.
- Configure any other parameter with generic methods.
- Execute AT commands.
- Apply configuration changes.
- Write configuration changes.
- Reset the device.
- Transmission of data to all the XBee devices on the network or to a specific device.
- Reception of data from remote XBee devices:
- Data polling.
- Data reception callback.
- Transmission and reception of IP and SMS messages.
- Reception of network status changes related to the local XBee device.
- IO lines management:
- Configure IO lines.
- Set IO line value.
- Read IO line value.
- Receive IO data samples from any remote XBee device on the network.
- Support for explicit frames and application layer fields (Source endpoint, Destination endpoint, Profile ID, and Cluster ID).
- Multiple examples that show how to use the available APIs.