CO2 Gadget features a low-power binary system (HIGH_PERFORMANCE / LOW_POWER) that achieves a battery life of up to 3 months with a single 18650 battery, compared to the few hours offered by a conventional meter. Here you’ll see how to configure wake-up via CO₂, via timer, via button, and non-blocking deep sleep techniques for SCD4x and CM1106.
Contents
Operating modes (binary, from v0.16.x)
From v0.16.015-beta onwards, CO2 Gadget uses a model binary modes (there used to be 4 modes, which have now been simplified). The preference lowPowerMode Take the values:
| Mode | Value | Description | Consumption |
|---|---|---|---|
| HIGH_PERFORMANCE | `0` | Continuous operation, no standby mode, all radios active | High |
| LOW_POWER | `1` | Deep sleep with configurable periodic wake-ups | Very low |
If you upgrade from a version earlier than v0.16, the old `MEDIUM_LOWPOWER` setting is automatically migrated to `LOW_POWER=1` via `upgradePreferences()` on the first boot.
Deep sleep cycle
In LOW_POWER mode, the meter wakes up periodically, takes measurements, publishes data (if applicable) and goes back to sleep. The main parameters are:
| Parameter | Constant | Default | Meaning |
|---|---|---|---|
| `waitToDeep` | `timeToWaitForCaptivePortal` | 60 s | Time spent awake before going back to sleep |
| `timeSleeping` | `DEEP_SLEEP_SECONDS_DEFAULT` | 60 s | Duration of deep sleep |
| Sleep range | `DEEP_SLEEP_SECONDS_MIN/MAX` | 15–900 s | Configurable minimum and maximum limits |
| `activateWiFiEvery` | `cyclsWifiConn` | 5 | Wake cycles between Wi-Fi connections |
| `cycRedrawDis` | — | 5 | Intervals between screen refreshes |
| `wakeOnCO2Alert` | — | `true` | The screen lights up when the orange threshold is exceeded |
Sensor behaviour in low-power mode (v0.16.x)
Each sensor has a handler optimised to minimise power consumption whilst in wake mode:
- SCD41 — non-blocking single-shot (`measureSingleShot(true)`), conversion within 5 seconds of light sleep. The result is processed during the next wake. This is the key improvement in v0.16.015.
- SCD40 — `startLowPowerPeriodicMeasurement()`, wait time limited to 31 s in a 0.3 s light sleep.
- SCD30 — continuous mode, wait time limited to `(sampleTime + 1) × 1000` ms.
- CM1106SL-NS — wait for RDY to be active-LOW for up to 2 s, cycle from HIGH to LOW, validation `CO₂ > 0`.
- MH-Z19 / Senseair S8 — standard continuous reading.
BTHome in low-power mode
When the BLE BTHome is active (SUPPORTBTHOMEBLE), whilst in deep sleep mode, the meter emits a brief BTHome announcement (BLEWAKEADVERTISEMENTMS = 2500 ms) before going back to sleep. PM particle sensors are omitted in the display (the fan does not allow time for a valid measurement); the selection is held and resumes automatically when the setting returns to HIGHPERFORMANCE.
Barometric pressure in the wake
If your build includes SUPPORTLOWPOWER_PRESSURE and a BME280 sensor; at each wake, a takeForcedMeasurement() to get an up-to-date pressure reading without exiting sleep mode. This pressure is published via BTHome and MQTT.
Web-based configuration
The page /low_power.html allows you to configure the publication thresholds for the ThresholdManager (4 channels: Display, BLE, MQTT, ESP-NOW) and the wake flags. The mode is also controlled from there (lowPowerMode) and sleep duration.
Battery
The CO2 Gadget measures the battery voltage using a 100k/100k divider (ratio 2.0) and averages 3 samples per reading. The display only updates when the voltage change is ≥ 0.1 V (to prevent flickering). You can configure batChargd y batDischargedMillivolts from the menu Settings → Battery Config (defaults: 4150 mV full, 3200 mV empty following the migration to v0.16).
Important notes
- RTC variables are preserved during deep sleep (with a fallback to NVS)
- The T-Display S3 completely switches off the backlight (IC DW8904)
- The current calibration is retained during sleep
- CO2 Gadget offers more advanced energy management than any other commercially available meter in the same price range
Did you find this helpful? Share this article. Have a look at the Menu Guide. Any questions? Ask on the Telegram group.