CO2 Gadget incluye un sistema de bajo consumo binario (HIGH_PERFORMANCE / LOW_POWER) que consigue autonomías de hasta 3 meses con una batería 18650, frente a las pocas horas de un medidor convencional. Aquí verás cómo configurar wake-up por CO₂, por timer, por botón, y las técnicas de deep sleep no-bloqueante para SCD4x y CM1106.
Modos de funcionamiento (binario, desde v0.16.x)
Desde v0.16.015-beta, CO2 Gadget usa un modelo binario de modos (anteriormente había 4 modos que se han simplificado). La preferencia lowPowerMode toma los valores:
| Modo | Valor | Descripción | Consumo |
|---|---|---|---|
| HIGH_PERFORMANCE | `0` | Funcionamiento continuo, sin sueño, todas las radios activas | Alto |
| LOW_POWER | `1` | Deep sleep con wakes periódicos configurables | Muy bajo |
Si actualizas desde una versión anterior a v0.16, el antiguo `MEDIUM_LOWPOWER` se migra automáticamente a `LOW_POWER=1` mediante `upgradePreferences()` en el primer arranque.
Ciclo de deep sleep
En modo LOW_POWER el medidor se despierta periódicamente, toma medidas, publica datos (si corresponde) y vuelve a dormir. Los parámetros principales son:
| Parámetro | Constante | Default | Significado |
|---|---|---|---|
| `waitToDeep` | `timeToWaitForCaptivePortal` | 60 s | Tiempo en wake antes de volver a dormir |
| `timeSleeping` | `DEEP_SLEEP_SECONDS_DEFAULT` | 60 s | Duración del deep sleep |
| Rango de sueño | `DEEP_SLEEP_SECONDS_MIN/MAX` | 15–900 s | Límites mínimo y máximo configurables |
| `activateWiFiEvery` | `cyclsWifiConn` | 5 | Ciclos de wake entre conexiones WiFi |
| `cycRedrawDis` | — | 5 | Ciclos entre refrescos de pantalla |
| `wakeOnCO2Alert` | — | `true` | Pantalla se enciende al superar umbral naranja |
Comportamiento por sensor en low power (v0.16.x)
Cada sensor tiene un handler optimizado para minimizar el consumo en wake:
- SCD41 — single-shot no bloqueante (`measureSingleShot(true)`), conversión en 5 s de light-sleep. Resultado se consume en el siguiente wake. Esta es la mejora clave de v0.16.015.
- SCD40 — `startLowPowerPeriodicMeasurement()`, espera limitada a 31 s en light-sleep de 0,3 s.
- SCD30 — modo continuo, espera limitada a `(sampleTime + 1) × 1000` ms.
- CM1106SL-NS — espera RDY activo-LOW hasta 2 s, ciclo EN HIGH→LOW, validación `CO₂ > 0`.
- MH-Z19 / Senseair S8 — lectura continua estándar.
BTHome en low power
Cuando el BLE BTHome está activo (SUPPORTBTHOMEBLE), durante el deep sleep el medidor emite un anuncio BTHome breve (BLEWAKEADVERTISEMENTMS = 2500 ms) antes de volver a dormir. Los sensores de partículas PM se omiten en el anuncio (el ventilador no da tiempo a una medición válida); la selección se retiene y se reanuda automáticamente al volver a HIGHPERFORMANCE.
Presión barométrica en wake
Si tu build incluye SUPPORTLOWPOWER_PRESSURE y un sensor BME280, en cada wake se ejecuta un takeForcedMeasurement() para tener una lectura de presión actualizada sin salir del modo sleep. Esta presión se publica por BTHome y MQTT.
Configuración desde la web
La página /low_power.html permite configurar los umbrales de publicación del ThresholdManager (4 canales: Display, BLE, MQTT, ESP-NOW) y los flags de wake. Desde allí también se controla el modo (lowPowerMode) y la duración del sueño.
Batería
CO2 Gadget mide el voltaje de la batería con divisor 100k/100k (ratio 2.0) y promedio de 3 muestras por lectura. El display solo se actualiza cuando el delta de voltaje es ≥ 0,1 V (evita parpadeos). Puedes configurar batChargd y batDischargedMillivolts desde el menú Configuración → Battery Config (defaults: 4150 mV lleno, 3200 mV vacío tras la migración de v0.16).
Notas importantes
- Las variables RTC se preservan en deep sleep (con fallback a NVS)
- El T-Display S3 apaga completamente el backlight (IC DW8904)
- La calibración en curso se preserva a través del sueño
- CO2 Gadget ofrece una gestión de energía más avanzada que cualquier medidor comercial de precio similar
¿Te ha sido útil? Comparte este artículo. ¿Tambien consulta la Guía del Menú. Tienes dudas? Pregunta en el grupo de Telegram.