I developed a simple board that connects via WiFi and upload some data to a remote server. The network management is up to the customer but now he asks me some hints about how to avoid the limited number of connections allowed.
There are thousands of those boards around, but only few hundreds of them are within the range of the router (I only know is a Huawei router that allows 60 WiFi connections at time).
Currently the firmware will try to connect every 20 minutes and, if the connection is granted, the time required to do all the stuff is about 1-2 minutes. After that the boards would upload another set of records after other 20 minutes but this time the connection will last for a fraction of second (because it has no data, just a "keep alive" signal to the server).
Each board will remain in this area for few hours. That means during the whole day the mean quantities of boards in the "upload area" is quite constant.
With this setup, often happens that a lot of units cannot upload data in their parking slot time, so the next time they have the double of data to be uploaded, and eventually the situation becomes worse.
Of course the first thing is try to find another router that allows more connections, obviously.
My question is related about any software pattern/strategy to improve the overall efficiency.
My thoughts: all boards try to connects randomly. They are not tied to a specified hour. Hence we assume the probability at a given time is quite uniform. If the router can accept 60 connections at time, it means that the next one will be refused. If I can catch this error, I would retry more frequently than 20 minutes.
In this way I should increase the probability to find a free 'slot' in the same amount of time spent there. Of course I wouldn't do that if I cannot know if the connection is refused for other reasons because it will drain the battery too fast.
Any other ideas? Are there any router specifically designed for such an IoT application? And, as per your knowledge, the limitation is due to the radio bandwidth or the capability of the router to handle more connections internally?