Skip to content

Commit 1a5a0af

Browse files
authored
0.14.0 Release
2 parents 94a1a6b + bd75a44 commit 1a5a0af

File tree

4 files changed

+26
-14
lines changed

4 files changed

+26
-14
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ zigpy works with separate radio libraries which can each interface with multiple
2525

2626
These are XBee Zigbee based radios that have been tested with the [zigpy-xbee](https://github.com/zigpy/zigpy-xbee) library for zigpy
2727

28-
- Digi XBee Series 2C (S2C) modules
29-
- Digi XBee Series 2 (S2) modules. Note: These will need to be manually flashed with the Zigbee Coordinator API firmware via XCTU.
30-
- Digi XBee Series 3 (xbee3-24) modules
28+
- [Digi XBee Series 3 (xbee3-24)](https://www.digi.com/products/embedded-systems/digi-xbee/rf-modules/2-4-ghz-rf-modules/xbee3-zigbee-3) and [Digi XBee Series S2C](https://www.digi.com/products/embedded-systems/digi-xbee/rf-modules/2-4-ghz-rf-modules/xbee-zigbee) modules
29+
- Note! While not a must, [it is recommend to upgrade XBee Series 3 and S2C to newest firmware firmware using XCTU](https://www.digi.com/resources/documentation/Digidocs/90002002/Default.htm#Tasks/t_load_zb_firmware.htm)
30+
- [Digi XBee Series 2 (S2)](https://www.digi.com/support/productdetail?pid=3430) modules (Note! This first have to be [flashed with Zigbee Coordinator API firmware](https://www.digi.com/support/productdetail?pid=3430))
3131

3232
# Port configuration
3333

tests/test_application.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -404,15 +404,20 @@ async def _test_request(
404404
expect_reply=True,
405405
send_success=True,
406406
send_timeout=False,
407-
is_end_device=None,
407+
is_end_device=True,
408+
node_desc=True,
408409
**kwargs
409410
):
410411
seq = 123
411412
nwk = 0x2345
412413
ieee = t.EUI64(b"\x01\x02\x03\x04\x05\x06\x07\x08")
413414
dev = app.add_device(ieee, nwk)
414-
dev.node_desc = mock.MagicMock()
415-
dev.node_desc.is_end_device = is_end_device
415+
416+
if node_desc:
417+
dev.node_desc = mock.MagicMock()
418+
dev.node_desc.is_end_device = is_end_device
419+
else:
420+
dev.node_desc = None
416421

417422
def _mock_command(
418423
cmdname, ieee, nwk, src_ep, dst_ep, cluster, profile, radius, options, data
@@ -445,6 +450,12 @@ async def test_request_with_reply(app):
445450
assert r[0] == 0
446451

447452

453+
@pytest.mark.asyncio
454+
async def test_request_without_node_desc(app):
455+
r = await _test_request(app, expect_reply=True, send_success=True, node_desc=False)
456+
assert r[0] == 0
457+
458+
448459
@pytest.mark.asyncio
449460
async def test_request_send_timeout(app):
450461
r = await _test_request(app, send_timeout=True)
@@ -466,8 +477,7 @@ async def test_request_extended_timeout(app):
466477
assert app._api._command.call_args[0][8] & 0x40 == 0x00
467478
app._api._command.reset_mock()
468479

469-
is_end_device = None
470-
r = await _test_request(app, True, True, is_end_device=is_end_device)
480+
r = await _test_request(app, True, True, node_desc=False)
471481
assert r[0] == xbee_t.TXStatus.SUCCESS
472482
assert app._api._command.call_count == 1
473483
assert app._api._command.call_args[0][8] & 0x40 == 0x40
@@ -502,7 +512,7 @@ def test_remote_at_cmd(app, device):
502512
assert app._api._remote_at_command.call_count == 1
503513
assert app._api._remote_at_command.call_args[0][0] is dev.ieee
504514
assert app._api._remote_at_command.call_args[0][1] == s.nwk
505-
assert app._api._remote_at_command.call_args[0][2] == 0x22
515+
assert app._api._remote_at_command.call_args[0][2] == 0x12
506516
assert app._api._remote_at_command.call_args[0][3] == s.cmd
507517
assert app._api._remote_at_command.call_args[0][4] == s.data
508518

zigpy_xbee/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
MAJOR_VERSION = 0
2-
MINOR_VERSION = 13
2+
MINOR_VERSION = 14
33
PATCH_VERSION = "0"
44
__short_version__ = "{}.{}".format(MAJOR_VERSION, MINOR_VERSION)
55
__version__ = "{}.{}".format(__short_version__, PATCH_VERSION)

zigpy_xbee/zigbee/application.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,8 @@ async def startup(self, auto_form=False):
108108
dev = zigpy.device.Device(self, self.ieee, self.nwk)
109109
dev.status = zigpy.device.Status.ENDPOINTS_INIT
110110
dev.add_endpoint(XBEE_ENDPOINT_ID)
111-
self.listener_event("raw_device_initialized", dev)
112111
xbee_dev = XBeeCoordinator(self, self.ieee, self.nwk, dev)
112+
self.listener_event("raw_device_initialized", xbee_dev)
113113
self.devices[dev.ieee] = xbee_dev
114114

115115
async def force_remove(self, dev):
@@ -222,7 +222,9 @@ async def request(
222222
LOGGER.debug("Zigbee request tsn #%s: %s", sequence, binascii.hexlify(data))
223223

224224
tx_opts = 0x00
225-
if expect_reply and device.node_desc.is_end_device in (True, None):
225+
if expect_reply and (
226+
device.node_desc is None or device.node_desc.is_end_device
227+
):
226228
tx_opts |= 0x40
227229
send_req = self._api.tx_explicit(
228230
device.ieee,
@@ -254,7 +256,7 @@ def remote_at_command(
254256
if apply_changes:
255257
options |= 0x02
256258
if encryption:
257-
options |= 0x20
259+
options |= 0x10
258260
dev = self.get_device(nwk=nwk)
259261
return self._api._remote_at_command(dev.ieee, nwk, options, cmd_name, *args)
260262

@@ -381,7 +383,7 @@ class XBeeGroupResponse(zigpy.quirks.CustomCluster, Groups):
381383
def __init__(self, *args, **kwargs):
382384
super().__init__(*args, **kwargs)
383385
self.node_desc = NodeDescriptor(
384-
0x01, 0x40, 0x8E, 0x101E, 0x52, 0x00FF, 0x2C00, 0x00FF, 0x00
386+
0x00, 0x40, 0x8E, 0x101E, 0x52, 0x00FF, 0x2C00, 0x00FF, 0x00
385387
)
386388

387389
replacement = {

0 commit comments

Comments
 (0)