从与 XBee 模块远程连接的 TOSR0X-T 继电器读取响应

Reading response from a TOSR0X-T relay remotely connected with XBee module

我想从继电器上获取板上继电器的状态,但我只能得到 ACK。

我有两个 XBee 模块,一个通过 USB 连接到计算机,充当串行设备,另一个连接到 TOSR0X-T 继电器。我计划稍后将更多的 XBee 模块添加到具有更多中继的网络中,所以我使用 API 模式,而不是简单的 AT 模式,因为我需要单独解决它们。

我正在向远程 XBee 发送具有 64 位地址的 TX 帧以打开或关闭继电器。这很好用,我正确地得到了 ACK 响应帧。但是,如果我通过发送 0x5B 发送一条消息来获取中继状态,我只会返回一个 ACK​​,而且我无法找到返回指示中继状态的实际数据的方法。

我正在使用 node-serialport and the X-CTU 软件,但无法读取数据,我发现的唯一示例使用连接到同一台机器的两个 XBees - 这样 RX 出现在目标 XBee 上 - 但我需要以某种方式远程获取它。

TOSR0X-T 文档 here 只告诉我如何通过 TX 消息与它交谈,所以我不知道我是否可以通过命令实现任何目标(以及如何实现)。

您看到的 ACK 可能是网络层 ACK,告诉您远程 XBee 模块收到了您的数据包。您需要在连接到 TOSR0X-T 的 XBee 上使用 "AT mode",并针对该模式正确寻址您的 TX API 帧(端点 0xE8 的集群 0x0011)。

如果您已将计算机上的 XBee 配置为协调器,则中继 XBee 模块上 DHDL 的默认设置为 0 将导致所有接收到的串行字节被中继返回到您计算机上的 XBee,并作为 RX 帧通过。

经过一些实验我可以解决我的问题。

考虑到 CH(频道)和 ID(PAN ID)匹配 - 这是能够设置网络的要求,我这样设置我的 XBees:

Coordinator XBee(连接到计算机的那个):

CE = 1 (for being coordinator)
MY = 0001
DH = 0
DL = 0
AP = 1 (in API mode)

第一个端点(连接到 TOSR0X-T 的端点):

CE = 0 (for being an endpoint)
MY = 000A (whatever you want), use FFFF for 64 bit responses
DH = 0
DL = 0001 (This is one I missed. It should be the Coordinator's MY)
AP = 0 (in AP mode)

所以基本上我做对了所有事情,除了 DH/DL 寻址。对于端点,DL 必须设置为协调器的 MY。我读了一些使用 FFFF 和 FFFE 之类的东西来设置广播的文章,我想我对这些信息感到困惑。