<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Best approach for collecting data from hundreds of sensors</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/49034/best-approach-for-collecting-data-from-hundreds-of-sensors</link><description>Hello, 
 I&amp;#39;m looking for some general guidance on the following application: 
 
 1 nRF52840 based gateway to cloud, on power supply 
 a few hundred nRF52832 sensor nodes, all battery operated, all within reach of the GW 
 sensor nodes are asleep most</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Tue, 02 Jul 2019 10:24:12 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/49034/best-approach-for-collecting-data-from-hundreds-of-sensors" /><item><title>RE: Best approach for collecting data from hundreds of sensors</title><link>https://devzone.nordicsemi.com/thread/195927?ContentTypeID=1</link><pubDate>Tue, 02 Jul 2019 10:24:12 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b797d775-cadc-4867-9f07-544a0738855e</guid><dc:creator>gweppler</dc:creator><description>&lt;p&gt;We&amp;#39;ll look into ESB. Thank you for your support!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Best approach for collecting data from hundreds of sensors</title><link>https://devzone.nordicsemi.com/thread/195926?ContentTypeID=1</link><pubDate>Tue, 02 Jul 2019 10:21:51 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6f2e5db9-f1b9-4f5f-9d3c-acb223ec07af</guid><dc:creator>Edvin</dc:creator><description>&lt;p&gt;Ok. Then I think there is not much more you can do to reduce the time it takes from disconnected -&amp;gt; receive data -&amp;gt; disconnected.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If this is still too long for your use case, I think you have to use ESB.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Best approach for collecting data from hundreds of sensors</title><link>https://devzone.nordicsemi.com/thread/195919?ContentTypeID=1</link><pubDate>Tue, 02 Jul 2019 09:52:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4c57e689-2d91-4ccb-a374-d7f2b60d604e</guid><dc:creator>gweppler</dc:creator><description>&lt;p&gt;We found an error on our part affecting the previously reported times. Corrected measurements:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;BLE UART central example started. 
Scan-Started @ 0000 ms 
Time b/n Scan@ 0000 ms 
Start Connecting. @ 0011 ms 
Connecting to target 35BD962F40DA 
ATT MTU exchange completed @  0056 ms 
Ble NUS max data length set to 0xF4(244) 
Discovery complete @  0123 ms 
Connected to device with Nordic UART Service. @  0123 ms 
Receiving data. @ 0139 ms 
Start Disconnecting. @ 0139 ms 
Disconnected. 
Scan-Started @ 0153 ms 
Time b/n Scan@ 0153 ms 
Disconnected. conn_handle: 0x0, reason: 0x16 
Disconnected at  0153 ms&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Around 140 ms per cycle.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
[quote userid="26071" url="~/f/nordic-q-a/49034/best-approach-for-collecting-data-from-hundreds-of-sensors/195812"]I suspect that the time from &amp;quot;connecting to target&amp;quot; until &amp;quot;Disconnect&amp;quot; is more or less the same, is that correct?[/quote]
&lt;p&gt;yes, it is around 125 ms-127ms.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
[quote userid="26071" url="~/f/nordic-q-a/49034/best-approach-for-collecting-data-from-hundreds-of-sensors/195812"]What you can try is to decrease the advertising interval[/quote]
&lt;p&gt;We were&amp;nbsp;using the minimum advertising interval (20 ms) already.&lt;/p&gt;
[quote userid="26071" url="~/f/nordic-q-a/49034/best-approach-for-collecting-data-from-hundreds-of-sensors/195812"]By the way, from the central, when do you enable the notifications?[/quote]
&lt;p&gt;As per ble_app_uart_c example project in ble_nus_c_evt_handler (with BLE_NUS_C_EVT_DISCOVERY_COMPLETE event). Unchanged from original Nordic example.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Best approach for collecting data from hundreds of sensors</title><link>https://devzone.nordicsemi.com/thread/195812?ContentTypeID=1</link><pubDate>Tue, 02 Jul 2019 07:16:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:cfb248d5-f248-4f37-a215-ce801aed4f9d</guid><dc:creator>Edvin</dc:creator><description>&lt;p&gt;What seems to be the varying part now? I suspect that the time from &amp;quot;connecting to target&amp;quot; until &amp;quot;Disconnect&amp;quot; is more or less the same, is that correct?&lt;/p&gt;
&lt;p&gt;What you can try is to decrease the advertising interval, but be aware that cutting the advertising interval in half will double the current consumption. I am not sure whether it is possible to shorten it much more using BLE. If you want it quicker, you may need to use ESB, where you control all the packets, and you don&amp;#39;t need to wait for service discovery, and all the other packets going back and forth during the establishment of the connection.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;By the way, from the central, when do you enable the notifications?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Best approach for collecting data from hundreds of sensors</title><link>https://devzone.nordicsemi.com/thread/195733?ContentTypeID=1</link><pubDate>Mon, 01 Jul 2019 15:01:38 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e3c1619d-c428-4eba-bbd1-6b25eb29b6b2</guid><dc:creator>gweppler</dc:creator><description>&lt;p&gt;Thank you, Edvin!&lt;/p&gt;
&lt;p&gt;Results:&lt;/p&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;BLE UART central example started. 
Scan-Started @ 0000 ms 
Connecting to target 35BD962F40DA 
ATT MTU exchange completed @  0054 ms 
Ble NUS max data length set to 0xF4(244) 
Discovery complete @  0128 ms 
Connected to device with Nordic UART Service. @  0128 ms 
Receiving data. @ 0247 ms 
Disconnected. 
Scan-Started @ 0262 ms
Disconnected. conn_handle: 0x0, reason: 0x16 
Disconnected at  0262 ms &lt;/pre&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div class="gmail_signature" dir="ltr"&gt;
&lt;div dir="ltr"&gt;
&lt;div dir="ltr"&gt;
&lt;div dir="ltr"&gt;
&lt;div dir="ltr"&gt;
&lt;div dir="ltr"&gt;
&lt;div dir="ltr"&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;Maximum 412 ms&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Min 258 ms&lt;/li&gt;
&lt;li&gt;average 299 ms&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So&amp;nbsp;your info cut overall time by more than 50% - great! 2-3 more tipps of the same calibre will get us into useful territory :-)&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Best approach for collecting data from hundreds of sensors</title><link>https://devzone.nordicsemi.com/thread/195705?ContentTypeID=1</link><pubDate>Mon, 01 Jul 2019 14:20:59 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:96b0da6e-c937-4e62-bab1-2d17fb97d9fe</guid><dc:creator>Edvin</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;Since you already have this project up and running where you measure the time between the events, can you try to set both MIN_CONN_INTERVAL and MAX_CONN_INTERVAL to 7.5 ms on the peripheral? And do the same on the central. On the central this is&amp;nbsp;set in sdk_config.h:&lt;/p&gt;
&lt;p&gt;NRF_BLE_SCAN_MIN_CONNECTION_INTERVAL&lt;/p&gt;
&lt;p&gt;NRF_BLE_SCAN_MAX_CONNECTION_INTERVAL&lt;/p&gt;
&lt;p&gt;Set both of these to 7.5 as well.&lt;/p&gt;
&lt;p&gt;That may shorten the time it takes for discovery complete and to transfer the data. How much does it impact the time?&lt;/p&gt;
&lt;p&gt;BR,&lt;/p&gt;
&lt;p&gt;Edvin&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Best approach for collecting data from hundreds of sensors</title><link>https://devzone.nordicsemi.com/thread/195580?ContentTypeID=1</link><pubDate>Mon, 01 Jul 2019 10:03:41 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e4f2f66b-c182-4f57-ae81-c7cbe6703972</guid><dc:creator>gweppler</dc:creator><description>&lt;p&gt;We&amp;nbsp;looked at BLE first.&lt;/p&gt;
[quote userid="26071" url="~/f/nordic-q-a/49034/best-approach-for-collecting-data-from-hundreds-of-sensors/195146"]BLE connections and disconnection is also a possibility. In order to speed up the connection/disconnection time, you can decrease the connection interval on your devices (the initial connection intervals). Shortening this will allow you to be able to send data quite quick.[/quote]
&lt;p&gt;Our setup:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span class="gmail-NormalTextRun gmail-BCX0 gmail-SCXO15010075"&gt;Used&amp;nbsp;&lt;/span&gt;&lt;span class="gmail-SpellingError gmail-BCX0 gmail-SCXO15010075"&gt;ble_uart_app&lt;/span&gt;&lt;span class="gmail-NormalTextRun gmail-BCX0 gmail-SCXO15010075"&gt;&amp;nbsp;and&amp;nbsp;&lt;/span&gt;&lt;span class="gmail-SpellingError gmail-BCX0 gmail-SCXO15010075"&gt;ble_uart_app_c&lt;/span&gt;&lt;span class="gmail-NormalTextRun gmail-BCX0 gmail-SCXO15010075"&gt;&amp;nbsp;as peripheral and central&amp;nbsp; respectively (SDK 15.3.0).&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;reduced # of connections to 1. &amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;sequence for measuring time taken for one data collection cycle:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span class="gmail-TextRun gmail-BCX0 gmail-SCXO15010075" lang="EN-GB"&gt;&lt;span class="gmail-NormalTextRun gmail-BCX0 gmail-SCXO15010075"&gt;Start scanning&lt;/span&gt;&lt;/span&gt;&lt;span class="gmail-EOP gmail-BCX0 gmail-SCXO15010075"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="gmail-TextRun gmail-BCX0 gmail-SCXO15010075" lang="EN-GB"&gt;&lt;span class="gmail-NormalTextRun gmail-BCX0 gmail-SCXO15010075"&gt;Start time&amp;nbsp;m&lt;/span&gt;&lt;span class="gmail-NormalTextRun gmail-BCX0 gmail-SCXO15010075"&gt;easurement&lt;/span&gt;&lt;/span&gt;&lt;span class="gmail-EOP gmail-BCX0 gmail-SCXO15010075"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="gmail-TextRun gmail-BCX0 gmail-SCXO15010075" lang="EN-GB"&gt;&lt;span class="gmail-NormalTextRun gmail-BCX0 gmail-SCXO15010075"&gt;Connect to the device (MTU&amp;nbsp;&lt;/span&gt;&lt;span class="gmail-NormalTextRun gmail-BCX0 gmail-SCXO15010075"&gt;negotiation&lt;/span&gt;&lt;span class="gmail-NormalTextRun gmail-BCX0 gmail-SCXO15010075"&gt;, Service Discovery and check if&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="gmail-TextRun gmail-BCX0 gmail-SCXO15010075" lang="EN-GB"&gt;&lt;span class="gmail-NormalTextRun gmail-BCX0 gmail-SCXO15010075"&gt;characteristics exist&lt;/span&gt;&lt;/span&gt;&lt;span class="gmail-TextRun gmail-BCX0 gmail-SCXO15010075" lang="EN-GB"&gt;&lt;span class="gmail-NormalTextRun gmail-BCX0 gmail-SCXO15010075"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class="gmail-EOP gmail-BCX0 gmail-SCXO15010075"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="gmail-TextRun gmail-BCX0 gmail-SCXO15010075" lang="EN-GB"&gt;&lt;span class="gmail-NormalTextRun gmail-BCX0 gmail-SCXO15010075"&gt;Receive data from peripheral&lt;/span&gt;&lt;/span&gt;&lt;span class="gmail-EOP gmail-BCX0 gmail-SCXO15010075"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="gmail-TextRun gmail-BCX0 gmail-SCXO15010075" lang="EN-GB"&gt;&lt;span class="gmail-NormalTextRun gmail-BCX0 gmail-SCXO15010075"&gt;Disconnect&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="gmail-TextRun gmail-BCX0 gmail-SCXO15010075" lang="EN-GB"&gt;&lt;span class="gmail-NormalTextRun gmail-BCX0 gmail-SCXO15010075"&gt;peripheral&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="gmail-EOP gmail-BCX0 gmail-SCXO15010075"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="gmail-TextRun gmail-BCX0 gmail-SCXO15010075" lang="EN-GB"&gt;&lt;span class="gmail-NormalTextRun gmail-BCX0 gmail-SCXO15010075"&gt;Stop time m&lt;/span&gt;&lt;/span&gt;&lt;span class="gmail-TextRun gmail-BCX0 gmail-SCXO15010075" lang="EN-GB"&gt;&lt;span class="gmail-NormalTextRun gmail-BCX0 gmail-SCXO15010075"&gt;easurement&lt;/span&gt;&lt;/span&gt;&lt;span class="gmail-EOP gmail-BCX0 gmail-SCXO15010075"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="gmail-TextRun gmail-BCX0 gmail-SCXO15010075" lang="EN-GB"&gt;&lt;span class="gmail-NormalTextRun gmail-BCX0 gmail-SCXO15010075"&gt;Start scanning&lt;/span&gt;&lt;/span&gt;&lt;span class="gmail-EOP gmail-BCX0 gmail-SCXO15010075"&gt;&amp;nbsp;&lt;/span&gt;...&lt;span class="gmail-EOP gmail-BCX0 gmail-SCXO15010075"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span class="gmail-EOP gmail-BCX0 gmail-SCXO15010075"&gt;Parameters changed vs. example projects:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span class="gmail-EOP gmail-BCX0 gmail-SCXO15010075" style="font-family:inherit;"&gt;central&lt;/span&gt;&lt;span class="gmail-EOP gmail-BCX0 gmail-SCXO15010075" style="font-family:inherit;"&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span class="gmail-EOP gmail-BCX0 gmail-SCXO15010075" style="font-family:inherit;"&gt;&lt;pre class="ui-code" data-mode="text"&gt;#NRF_BLE_SCAN_SCAN_INTERVAL    80 
#NRF_BLE_SCAN_SCAN_WINDOW   80&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li style="list-style-type:none;"&gt;&lt;/li&gt;
&lt;li&gt;peripheral&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span lang="EN-GB"&gt;&lt;pre class="ui-code" data-mode="text"&gt;#define APP_ADV_INTERVAL 32 
#define MIN_CONN_INTERVAL            MSEC_TO_UNITS(7.5, UNIT_1_25_MS)  
#define MAX_CONN_INTERVAL           MSEC_TO_UNITS(40, UNIT_1_25_MS)  

#define SLAVE_LATENCY 0  
#define CONN_SUP_TIMEOUT MSEC_TO_UNITS(4000, UNIT_10_MS) 
#define FIRST_CONN_PARAMS_UPDATE_DELAY APP_TIMER_TICKS(5000) 
#define NEXT_CONN_PARAMS_UPDATE_DELAY APP_TIMER_TICKS(30000)  
#define MAX_CONN_PARAMS_UPDATE_COUNT 3  &lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="EN-GB"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="EN-GB"&gt;Results:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="EN-GB"&gt;&lt;pre class="ui-code" data-mode="text"&gt;BLE UART central example started. 
Scan-Started @ 0000 ms 
Connecting to target 35BD962F40DA 
ATT MTU exchange completed @  0106 ms 
Ble NUS max data length set to 0xF4(244) 
Discovery complete @  0374 ms
Connected to device with Nordic UART Service. @  0374 ms 
Receiving data. @ 0464 ms 
Disconnected. 
Scan-Started @ 0523 ms 
Disconnected. conn_handle: 0x0, reason: 0x16 
Disconnected @  0523 ms &lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="EN-GB"&gt;Average was 612 ms per cycle.&amp;nbsp;&lt;/span&gt;That doesn&amp;#39;t sound right. Any ideas what we might be&amp;nbsp;missing?&lt;/p&gt;
&lt;p&gt;Thanks,&lt;br /&gt;gj&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Best approach for collecting data from hundreds of sensors</title><link>https://devzone.nordicsemi.com/thread/195201?ContentTypeID=1</link><pubDate>Thu, 27 Jun 2019 14:52:56 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:32f10784-c4fb-4965-b14e-ab4b194c676a</guid><dc:creator>gweppler</dc:creator><description>&lt;p&gt;Thank you for this 5 star answer- very helpful! We&amp;#39;ll digest &amp;amp; get back.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Best approach for collecting data from hundreds of sensors</title><link>https://devzone.nordicsemi.com/thread/195146?ContentTypeID=1</link><pubDate>Thu, 27 Jun 2019 12:50:57 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9344d776-7754-4eac-ba6d-6e6782aaf960</guid><dc:creator>Edvin</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;1) That really depends on the number of nodes, and how often they send whether this is possible or not.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;100 nodes, 10B per&amp;nbsp;30 seconds = 33Bps = 0.26kbps&lt;/p&gt;
&lt;p&gt;100 nodes, 15B per&amp;nbsp;1 second = 1.5kBps = 12kbps&lt;/p&gt;
&lt;p&gt;The issue with mesh networks is that the throughput capacity goes down the more nodes you have. It is really not designed for gathering data from several hundred sensors.&lt;/p&gt;
&lt;p&gt;A standard BLE connection has much higher throughput, but it is as you say, the connection also takes time.&lt;/p&gt;
&lt;p&gt;ESB is possible. It has ACKs, and may be a possiblility for your case. I would recommend to have some sort of &amp;quot;connection&amp;quot; here as well, so that not everyone is broadcasting the sensor data at all times, as it would increase the overall traffic, increasing the chance of packet loss. So basically that every node listens for a specific message, meaning that it is that node&amp;#39;s turn to send the payload data.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;BLE connections and disconnection is also a possibility. In order to speed up the connection/disconnection time, you can decrease the connection interval on your devices (the initial connection intervals). Shortening this will allow you to be able to send data quite quick.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;So I think BLE or ESB is the way to go. It is difficult to say what would work best. As mentioned, in ESB, I would look into having some sort of communication protocol, so that not everyone is sending the sensor data at will, to reduce the chance for packet loss. In BLE I would recommend to keep the number of connections (far) below 20. Maybe only 2-3, or maybe even only 1 at the time. This way the central can use the radio 100% for scanning whenever it isn&amp;#39;t connected, meaning that if it is looking for one particular node that it hasn&amp;#39;t been connected to in a while, it will increase the chance of picking up the advertising packet for that node.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Whether you use BLE or ESB, I would recommend that the sensor nodes go quiet for as long as possible after connection and sensor dumping, leaving the air traffic to the nodes that hasn&amp;#39;t been connected in a while.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;So, in BLE, things are a bit more random, while in ESB, you can create your own protocol. Maybe the gateway can broadcast a message with a node ID telling everyone that this node should send the data now.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;It is an interesting problem. I think the throughput is too high for a mesh network of that size. Connecting and disconnecting with that number of nodes is on the edge of what is possible in BLE. The ESB protocol that I imagine you would have to implement is maybe a bit more work, but it may be the best shot if it is not possible with BLE. You can do some testing on how fast you can receive the payload (10-15 Bytes) from a single node using BLE and ESB.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I also recommend you read through &lt;a href="https://devzone.nordicsemi.com/nordic/nordic-blog/b/blog/posts/bluetooth-smart-and-the-nordics-softdevices-part-1" rel="noopener noreferrer" target="_blank"&gt;this guide&lt;/a&gt;&amp;nbsp;on advertising (even though you go for ESB), as it gives some perspective on scanning and broadcasting. Note that it is the time you actively use the radio that affects the current consumption. So advertising is cheap, while scanning is expensive, power wise.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>