3

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...

  1. I don't see RSSI field in any API frame to parse.

  2. 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.

Tina Tran
  • 41
  • 3
  • Hi, Do you use a micro-controller on the coordinator ? a linux terminal ? Do you use a library ? you can get this information with some basic function from a Xbee library :) – Thanatheos Dec 16 '15 at 08:50
  • I'm using Galileo/Linux on the coordinator and XBee C Library https://github.com/digidotcom/xbee_ansic_library. I see that people are using a getRSSI() function in Arduino but I'm not using Arduino. – Tina Tran Dec 16 '15 at 18:17

1 Answers1

2

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.

tomlogic
  • 11,489
  • 3
  • 33
  • 59
  • don't he use the getRSSI() function when he receive a packet on the coordinator ? – Thanatheos Dec 18 '15 at 08:12
  • How does the `getRSSI()` function work? As stated in a comment on the question, that's a feature of an Arduino library and not available in the library in use. And, according to API Frame documentation, that field of the RX16 and RX64 frames is set to 0 for ZigBee (XBee Series 2) firmware. – tomlogic Dec 18 '15 at 08:17
  • Oh ok, thank's for the information ^^ I've seen some docs who use RSSI in S2 to try le localisation of an end device. I'll check later because i'm confuse – Thanatheos Dec 18 '15 at 08:23