I have a sensor that collects 100 data points per second. I want to upload all of the points to Arduino IoT Cloud without missing any, but even with the update On Change variable setting, the platform seems to only collect 1 data point every 4 seconds.
Can I update Arduino IoT Cloud with an array of 400 data points every 4 seconds? If not, are there other solutions to get all of my data into the cloud from my Arduino?
I rather doubt that it can be done. You're allowing 10mS for each reading to get to the IoT server. Just thinking about the ping time to the server, if you're physically close to it, you might get 20mS at best. Throw in whatever protocol is transporting your data and you're probably looking at a minimum of ten times the ping and likely a great deal more.
Your only hope as you have surmised, is to batch up an array of datapoints and timestamps in a single transmission. I have no idea whether Arduino offers such a feature, but I'd be surprised if it does - it's a little beyond the hobbyist IoT model.
You may need to provision your own server to accept the data, whether local or create one on one of the usual cloud providers.
it really depends how it's done and if you need to establish and close the connection for each byte.
Seems OP wants to collect & stream the data.
Say OP has 2 bytes per data point, you are looking at a 200 bytes transfer in less than 1s... that's not a lot in today's networks... an ESP32 (S2 for example) can handle probably 10 Mb/s - even 1Mb/s would be plenty
So it depends on the network of course and on the way the communication with the server happens and if the server is throttling the connexion in some way
Indeed. Arduino IoT certainly does say it throttles and unless you're standing up your own server or paying a lot, I expect most similar services do.
It looks like they offer REST or MQTT. At least MQTT keeps the connection open, but even then you're looking at overhead and again, will it do arrays? I just think the OP is asking too much from their cloud service.