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

How i use "InstaBurst feature" for sending large amount of sensor data in mesh network?

Hi,

We have developing ble mesh network using nRF52 mesh sdk is 1.0.1. We have large amount of sensor data it near about 24-25 kb and want to send this data to other node in single message.

Actually i have refer this link_refer for doing this. I have enable this "EXPERIMENTAL_INSTABURST_ENABLED" and added required source files then complied code.

When i define large length is gives error code 9 means invalid length. 

For sending this all data to server i am using this method:

             #define SAMPLE_POINTS   4096

             uint8_t value[SAMPLE_POINTS*2];

             status = simple_message_client_send(&m_clients[GROUP_CLIENT_INDEX], &value[0], sizeof(value));

I have few question for sending all data as following:

  1. Is it possible to send 24-25kb data in single message, if yes how i can send? 
  2. If not able to send this kind of data is it have other solution for sending all data in ble mesh network?
  3. Once i enabled InstaBurst feature is it required specific soft-device version if yes which one? currently i am using sd132_nrf52_3.1.0.
  4. how i can use  InstaBurst feature and send data via this feature for large packet length and high through put?

Looking forward your reply....!!

 Thanks in Advanced...

  • Hi,

    Please note that Bluetooth Mesh is best suited for use cases where you have many nodes, possibly over a large area, but where the required data throughput is low. Although Bluetooth Mesh was not written for large data transfers this may still be possible although not in one message and only with low frequency (ref. DFU, which uploads full firmware binaries.)

    1. Although our Instaburst feature uses extended advertising, it is limited to the auxiliary packet and a single chain packet. We provide some performance numbers in the Nordic Advertiser Extensions (Instaburst) chapter of the nRF5 SDK for Mesh documentation, and it states that you get 498 bytes of advertising data over the bearer for every advertising interval. Subtract overhead throughout the stack and you are left with around 1/3 of that as access layer payload. With maximum 32 segments that becomes approximately 32 * 498 / 3 = ~5k, which is 1/5 of what you ask for.

    2. As long as the total throughput is low enough you may of course split up the data in as many messages that you want. This resembles what we did for DFU: In order to send large files we are sending packets of smaller size which are assembled to the full firmware binary after reception.

    3. Our Mesh stack in the nRF5 SDK for Mesh has its own implementation of the required Advertising Extensions for our Instaburst feature. Support for those features is not required from the SoftDevice, and s132 v3.1.0 should work perfectly well.

    4. Please see the "Usage in the mesh" section of the Nordic Advertiser Extensions (Instaburst) documentation on Infocenter.

    Regards,
    Terje

  • Thank you so much for your reply,

    If i split my data into different message how i can manage this message in mesh network. Because we need to send data to other node sequentially it has analog readings. 

    For sending 25kb data i need to split in 5 messages is it write. for sending those messages through instabrust  feature in that which api need to call for sending all messages.

    Actually i have refer this Nordic Advertiser Extensions (Instaburst) and configure in my code. But not able to understand which API use in main.c for sending data sequentially one by one message. 

    As mentioned you in 2 ans DFU send large file, i look DFU main.c file example but instead of this how i can send many message and  reception at the server node.

    Please can you give me example code for sending all data, if not please suggest which api instabrust  feature i need to use for sending those all messages. 

    Thanks..

  • Hi,

    Although it its possible with the instaburst feature to send that large messages, I would recommend not to use the maximum. The reason is that the longer the packet, the larger the risk of packet collition. You have to find a good packet length for your particular use case. Then the number of messages to send depends on that packet length value.

    We do not have an API for sending a stream of data over several messages. This means you must implement that part yourself. It may be similar to DFU, but DFU does not use mesh messages.

    I am afraid we do not have a code example at the moment, for sending large amounts of data over Bluetooth Mesh.

    Please also note that sending that large amount of data will take some time. How often do you want to send those 25 kb of data?

    Regards,
    Terje

  • Thanks for your reply,

    Now, i have sent all 24KB data from client to sever for that i have sent 256 bytes in each messages . but one of the my other server node in that i have interface UART example. In this server node uart functionality use for communicate with wifi module. only when i send this data to this uart server the data is very slow transmit ans received as well. 

    Can you please why is slow transmitting and receiving for uart merge example server.

    Is it any other configuration for the same if i use uart in server side.  

    When i sent all data to simple mesh server it is fast sending as well receiving.

    Looking forward your reply...!!

    Thanks. 

  • Hi,

    I am sorry for not coming back to you earlier. I see that you have opened a new question thread instead, which I think is good as this is a new question. The original question was about sending a large amount of data, and the new question is about transfer speed over UART.

    Can you update that other thread with a precise description of what UART example you use? It is not clear if you mean the serial example from the nRF5 SDK for Mesh, or if you have merged with an UART example from the nRF5 SDK.

    Regards,
    Terje

Related