问题
What is the right way to get RSSI for each end-device?
Scenario: Using ZigBee firmware on XBee Series 2 radio modules, API mode, I have one coordinator and multiple end-devices. Every few seconds, each end-device sends the coordinator a packet contains sensor information such as temperature...
I don't see RSSI field in any API frame to parse.
If I just blindly read pin6 (or using DB command) which stored RSSI of the last received packet, I still don't know which end-device this RSSI belongs to.
回答1:
I don't believe it's available as a field in any of the API frames you're going to receive. You can use the ATDB
command to get an RSSI value, but as you state you don't know which remote device it's associated with.
If you're truly using end devices (and not routers), then you could send a remote ATDB
command to each, and the response would give you an indication of the signal strength from the end device's parent router, since all frames will be coming from that single device (as the last hop).
Even with a router, you're probably guaranteed to get the RSSI value of the remote AT request frame -- although you won't know which radio on the mesh network was the last hop to your target.
If you have a network of a coordinator and end devices, then the coordinator is the parent and you'll have an indication of how well the end devices are able to receive -- that may be enough for your application.
来源:https://stackoverflow.com/questions/34302777/in-xbee-zigbee-how-to-get-rssi-of-all-end-devices-from-coordinator