如何使用 digi xbee Python 获取网络中的 xbee 设备列表

How to get list of xbee devices in network using digi xbee Python

我有一个 xbee 代码 运行ning,它有一个计划程序 运行 每 1 分钟。此调度程序查询网络并获取在线的 xbee 台设备。下面是代码:

def search_devices_in_nw():
    log_debug.error("Discovery process starting....")
    
    net = device.get_network()
    net.start_discovery_process(deep=True, n_deep_scans=1)
    while net.is_discovery_running():
        time.sleep(0.5)

    active_nodes = net.get_devices()
    print(active_nodes)


schedule.every(1).minutes.do(search_devices_in_nw)
while device.is_open():
    schedule.run_pending()

我的 xbee 网络中有两个设备,运行 宁此代码,给出 2 mac 地址是正确的。但是,如果我将其中一个 xbee 设备置于离线状态,它仍然会给出 2 mac 地址在线的结果,这是不正确的。

如果我停止我的代码并重新启动它,那么它会显示 1 mac 个在线地址。我不确定为什么代码不能正常工作。谁能帮我解决这个问题。请帮忙。谢谢

文档页面:https://xbplib.readthedocs.io/en/latest/user_doc/discovering_the_xbee_network.html#discovernetwork

根据 documentation,“所有发现的 XBee 节点都存储在 XBeeNetwork 实例中。”

但您也可以在 XBeeNetwork 对象上使用 clear() 方法 clear the list of nodes,然后再开始新的发现:

[...]

# Instantiate a local XBee object.
xbee = XBeeDevice(...)

[...]

# Get the XBee network object from the local XBee.
xnet = xbee.get_network()

# Discover XBee devices in the network and add them to the list of nodes.
[...]

# Clear the list of nodes.
xnet.clear()

[...]