Ah, sorry, yes, we have both. The product started with ATT SIMs (3rd party) and with Particle SIMs being used in test. We recently started deploying with Particle SIMs and just moved the product out of the Sandbox. Now most of our devices are using Particle.
Based on this discussion, for keepAlive I now have the following check in setup():
// SIM Type
SimType simtype;
void setup() {
.
.
.
// Get SIM Type
simtype = Cellular.getActiveSim();
// Set keepAlive
// Type 2 (ATT) set to every 2 minutes
// Type 1 (internal) will run with Particle default
if (simtype==2) {
Log.info("===> PARTICLE KEEP ALIVE");
Particle.keepAlive(60 * 2);
}
}
New testing this weekend has shown that a 2-minute keepAlive for ATT 3rd party appears to be avoiding the cloud disconnections, at least from what I can see on the console.
With this change to keepAlive, a slight reduction of our publish payload, and the daily System.reset() (see System.reset() thread), I'm pushing the new firmware out today and will monitor over the next few weeks to see if daily usage comes down across the board.
Then we have "the big 5", 5 devices out of 24 that are 3-4X the daily data usage as compared to the rest. Publish data volumes for these is greater than the others, but should only attribute 2-3MB/month of extra data. Number of data operations per month is the same for all. Particle SIM is used for all. Device OS is 4.0.2 for all. Firmware is the same for all. This leaves location, location, location as the variable that matters?
We will continue to track this down and share findings here.