I am working on a project related to data transmission between nodes and a gateway. Currently, I am using 2 ESP32s and 1 Raspberry Pi 3B+ as nodes, and another Raspberry Pi 3B+ as the gateway. The communication between nodes and the gateway is facilitated through the UART Lora SX1278 433MHz 3000m EBYTE E32-433T20D module.
In the Python program of the gateway, I send a request message containing the name of a specific node to retrieve data from that node. When a node receives the request, it checks if the name matches its own. If it does, the node pushes the data to the gateway and waits until it receives a request message without its name. If the request message does not contain the name of that node, it stays in a waiting state until its turn comes. I am implementing a time schedule where data from node 1 is read from 0-20s, data from node 2 is read from 21-40s, data from node 3 is read from 41-60s, and then the cycle repeats.
I have to organize the time in this way because when I tested with all 3 nodes sending data simultaneously, the error rate was unacceptably high. However, if I apply this approach to reading data from industrial machines (around 60 machines) in a factory, it would take a considerable amount of time to update the collected data from the machines. Therefore, I would like to seek advice on optimizing the data update time and minimizing errors in this scenario.