My question is how to handle large amounts of data over the Gatt service
Our Current setup is 10 devices all on a Mesh Network. We use nRF5 SDK for Mesh and NRF mesh BLE based on the light switch example.
Using our mobile app we connect to a device and setup a Gatt service for communication RX and TX. This allows us to send messages to the connected node Proxy which relays the messages to the nodes on the mesh. The problem is once we start adding more and more devices we are creating a bottle neck on that one Gatt Service because of the size of the data being relayed to the mobile app.
One solution I'd like to implement is setting up multiple Gatt services and defining separate rx/tx characteristics for the different data points.
Here is an example (Current way first):
Current way we communicate now: This service relays data to the mobile app (fue levell, battery level,temp, settings, gps, device info, on/off/, windspeed, etc...) all data for 10 devices is in an array and this is very slow. Plus in order to see the fuel level for a certain device I have to receive data for all 10 devices.
deviceGattService
deviceGattCharacteristicRX
deviceGattCharacteristicTX
What I'd like to do, but I'm wondering if it's possible to create multiple services and characteristics with Proxy Gatt on mesh
deviceGattService
settingsGattCharacteristicRX
deviceGattCharacteristicTX
tempGattCharacteristicRX
batteryGattCharacteristicRX
statusGattCharacteristicRX
speedGattCharacteristicRX
gpsGattService
gpsLongitudeGattCharacteristicRX
gpsLattitudeGattCharacteristicRX
gpsElevationGattCharacteristicRX
and so on breaking out multiple services and characteristics. This way the mobile app is only listening for updates on separate Characteristics.
Is there a better way to handle this type of setup? We'd like to be able to scale to 100's of devices on a mesh.