System modes
Semi-automatic mode
The semi-automatic mode will not attempt to connect the device to the Cloud automatically, but once you connect it automatically handles reconnection. One common use case for this is checking the battery charge before connecting to cellular on the Boron, B-Series SoM, Electron, and E-Series.
This code checks the battery level, and if low, goes back into sleep mode instead of trying to connect with a low battery, which is likely to fail.
The combination of SEMI_AUTOMATIC
and threading enabled is a recommended combination; it's what
the Tracker Edge firmware uses.
SYSTEM_MODE(SEMI_AUTOMATIC);
SYSTEM_THREAD(ENABLED);
void setup() {
float batterySoc = System.batteryCharge();
if (batterySoc < 5.0) {
// Battery is very low, go back to sleep immediately
SystemSleepConfiguration config;
config.mode(SystemSleepMode::ULTRA_LOW_POWER)
.duration(30min);
System.sleep(config);
return;
}
// Do normal things here
Particle.connect();
}
void loop() {
}