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

To perform indoor localization/asset tracking by measuring RSSI on NRF52 DK from other nodes in bluetooth mesh network

It is required to track/locate the position of a bluetooth mesh node.  I found that RSSI value can be used to estimate the distance between receiver node and a target node. This distance estimate could be used by trilateration method using three nodes (whose positions and distances to target node are already known) to calculate the position of target node. 

I want to implement light switch example using simple on/off model to send and receive sensor data and to locate the position of a particular node in a bluetooth mesh network. Is it possible to measure RSSI of other nodes (where nRF52 DK boards are configured as mesh nodes) in a bluetooth mesh network ?

Moreover, is it possible to receive sensor data somehow on the nRF Mesh app ? I came to know that nRF Mesh app only works with generic on/off model but is it possible to use it it with simple on/off model because I want to send sensor data and RSSI measurements from all nodes to smartphone and then perform trilateration algorithm for indoor localization.

Parents
  • Is it possible to measure RSSI of other nodes (where nRF52 DK boards are configured as mesh nodes) in a bluetooth mesh network ?

     Yes, this is doable (see devzone case). If you configure heartbeat messages, you can find the RSSI values there. May I ask why you want to use the simple on/off model & not the generic on/off model? Is it because of simplicity?

    Yes, you could always update the nRF Mesh app yourself. The source code is available on Github (iOS, Android). I just tested the simple on off model with the simple on off model in mesh sdk v2.1.1. It was possible to provision & configure a proxy client & a proxy server node, but I had issues provisioning & configuring the second proxy server node. I received an assert in app_error_weak. It is probably possible to get this working on the simple on off model, but we don't really have control for this model the way we have with the generic on off model. In addition, the nRF Mesh app is a lot more stable with mesh sdk v2.2.0 than v2.1.1 from my experience.

    I would recommend trying to implement the trilateration with the generic on off model in mesh sdk v2.2.0 first. Like mentioned, RSSI for trilateration is not the most ideal way of location tracking. There are numerous posts on our DevZone about this. Some people have claimed to achieve good accuracy (a vague term), but that is often with a sophisticated backend system implementing some kind of filtering (e.g. Kalman filtering) to reduce the noise on the RSSI values.

  • Thanks for the detailed reply. I want to send sensor data from server to client that's why I want to use the modified simple on/off model. Is it also possible to send sensor data (1 byte) using generic on/off model ?

    Actually I am using other manufacturer's boards and app for bluetooth mesh network but their mesh library does not support to get RSSI value from other nodes. I am using two boards and smartphone in which boards act as servers and android app (which acts as client and provisioner) is used to provision and add the boards to mesh network. Boards are used to send sensor data to the app where it is displayed. I want to achieve same functionality including RSSI by using Nordic development kit for bluetooth mesh. I have following queries

    1. Can nRF Mesh app be used both as provisioner and client ? If not, then should I use a separate nRF5 DK board and flash it with client program and the other 2 boards flash with server program ?

    2. If I want to display sensor data on the app, how could it be done ? Can app receive sensor data directly from servers or does it commmunicate to servers via a separate client ?

    3. In which scenario proxy servers and clients are used ? 

Reply
  • Thanks for the detailed reply. I want to send sensor data from server to client that's why I want to use the modified simple on/off model. Is it also possible to send sensor data (1 byte) using generic on/off model ?

    Actually I am using other manufacturer's boards and app for bluetooth mesh network but their mesh library does not support to get RSSI value from other nodes. I am using two boards and smartphone in which boards act as servers and android app (which acts as client and provisioner) is used to provision and add the boards to mesh network. Boards are used to send sensor data to the app where it is displayed. I want to achieve same functionality including RSSI by using Nordic development kit for bluetooth mesh. I have following queries

    1. Can nRF Mesh app be used both as provisioner and client ? If not, then should I use a separate nRF5 DK board and flash it with client program and the other 2 boards flash with server program ?

    2. If I want to display sensor data on the app, how could it be done ? Can app receive sensor data directly from servers or does it commmunicate to servers via a separate client ?

    3. In which scenario proxy servers and clients are used ? 

Children
  • MH said:
    I want to send sensor data from server to client that's why I want to use the modified simple on/off model. Is it also possible to send sensor data (1 byte) using generic on/off model ?

     Yes, this is possible.

    1) You could probably update the nRF Mesh app to be both a provisioner & client, but that could take quite a bit of work. I would rather use the nRF Mesh app as the provisioner, flash the client example to one 52 dev kit & the server example to one or multiple 52 dev kits.

    2) You would have to update the app yourself. The app can communicate directly to the servers (e.g. you can turn the server lights on/off directly via the app if you use the proxy server example). You may also want to check out the interactive pyaci script, which can provision a mesh network via a computer. It may be easier to show sensor data on a computer & develop a simple python program. The nRF Mesh app will communicate via one of the proxy nodes (see answer to Q3 below). If the node you want to send a set message to is out of range of the smartphone, the message will be relayed (if that functionality is turned on) via a relay node to the server node.

    3) The proxy nodes are used to communicate to a GATT based device, such as a smartphone. You will need at least one proxy node to your mesh network. To start, I would recommend only using the proxy client & proxy server examples instead of the regular light switch client & server examples.

    Kind Regards,

    Bjørn

Related