We are troubleshooting a deployed IoT application that is installed in a variety of sites like high-rises and closely clustered buildings. The IoT devices monitor values like temperature and publish this data through a mesh network when it has changed sufficiently (push) or if queried (polled). These IoT devices also receive commands like alarm setpoints or OTA updates. A gateway device is also installed at each site to monitor the network and relay data from the mesh network to and from the cloud. The mesh network is driven by XBee Pro S2C chips and their drop-in replacement XB3-24Z.
At small deployments (1-20 IoT devices per gateway) the system runs as expected. As we scale more IoT devices (50-150 IoT devices per gateway) we start observing inconsistent behaviour.
- The IoT devices are polled every 5 minutes and their responses are stored in a cloud database. On inspection of the database, there is less data than expected (it could be as little as 1% of expected responses are received)
- When cloud commands are sent to the remote IoT devices, they are not consistently received.
- We have connected the gateway’s coordinator XBee to XCTU and allowed it to scan the network for about 15 minutes (after which it was halted due to time constraints). Not all IoT devices (~100) were discovered after this scan.
Questions
-Is it expected to take more than 15 minutes for an XCTU network discovery to find a mesh with ~100 nodes? What is a reasonable time estimate needed to fully discover a mesh network using XCTU and an XBee gateway?
- It seems like messages are sporadically being dropped causing missed commands and less poll responses. Is it possible there is an issue with network that is causing messages to get dropped?
- What happens if multiple IoT devices send push messages at the same time?
- What is a reasonable time for a poll to take (both time for the request to arrive at the IoT device and for the IoT device’s response to be sent)? If there are multiple outstanding polls on the network can this cause a message collision?
- Any other suggestions why we would see this behaviour?