This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

RSSI between all nodes in mesh network

Hello,

I am developing an application for location tracking to be run on a Windows computer. The computer will be communicating to a mesh network using the serial interface running on an NRF52-DK board. The mesh network will consist of Light Switch servers and clients also running on NRF52-DK boards.

My question is: by using the interactive_pyaci script, is it possible to send a request out to the mesh network, and receive a list of the RSSI values between all nodes that can communicate with one another? For example

1. {Board 1}, {Board 2} : {RSSI Value 1}

2. {Board 1}, {Board 3} : {RSSI Value 2}

3. {Board 7}, {Board 14} : {RSSI Value 1}

....

Please let me know if there is any documentation on how to implement this or if you can help in any way. Thanks!

Parents
  • I am very new to this but it seems like I could accomplish this in 2 steps:

    1 - Send out a message through the pyaci script and a node running the serial interface example that is relayed to all nodes.

    2 - Configure all other network nodes so that when they receive any message, they log the sender ID and RSSI value of the message.

    Is this something that would work?

  • Hi.

    Sorry for the delayed response here.

    samjaklic said:
    Is this something that would work?

     I haven't tried it myself, I don't see any reason why that shouldn't be possible. Hwoever, I'm afraid we don't have an example for this.

    You could also take a look at the Heartbeat message. 
    Heartbeat messages are transmitted by nodes periodically. A heartbeat message indicates to other nodes in the network that the node sending the heartbeat is still active. In addition, heartbeat messages contain data which allows receiving nodes to determine how far away the sender is, in terms of the number of hops required to reach it. This knowledge can be exploited with the TTL field.

    You can also take a look at this thread; 
    https://devzone.nordicsemi.com/f/nordic-q-a/39270/ble-mesh-heartbeat-example 

    Here is a description from Hung Bui who created the example:
    "Attached is a modified version of the lightswitch example to show how to configure heart beat. Please have a look at the node_setup.c file in the provisioner. In the example we will configure the light switch client to send heart beat to address 0xFFFF (all nodes) and the server 1, 2 will subscribe to the client address (0x100) and destination (0xFFFF). The server will print it out as RTT log in mesh_event_cb() in main.c

    If you want to have RSSI (of the last forwarded packet) you would need to nrf_mesh_rx_metadata_t in heartbeat_opcode_handle() to send the RSSI value to mesh_event_cb as NRF_MESH_EVT_HB_MESSAGE_RECEIVED event."

    Best regards, 
    Joakim Jakobsen

  • Thank you for your response. One follow up question:

    When I try to add the RSSI from nrf_mesh_rx_metadata_t to the event, it tells me:

    'nrf_mesh_evt_t {aka struct <anonymous>}' has no member named 'message'

    but when I look up the struct on the infocenter, it says that message is included member? Any solution to this? Is there a simple way to export the metadata so that I can log it through RTT?

Reply Children
No Data
Related