ESP-NOW es el protocolo peer-to-peer de Espressif que permite a tus medidores CO2 Gadget comunicarse entre sí sin router, sin WiFi y con un alcance de cientos de metros en campo abierto. Útil para redes de sensores en aulas, oficinas o grandes espacios donde no quieres saturar la WiFi.
Contenidos
Qué es ESP-NOW
ESP-NOW es un protocolo de comunicaciones vía radio de largo alcance y bajo consumo desarrollado por Espressif. Comparte la radio Wi-Fi pero no necesita router ni punto de acceso — los dispositivos se comunican directamente entre sí (peer-to-peer) usando sus direcciones MAC.
Habilitar ESP-NOW
ESP-NOW no está habilitado por defecto en los binarios precompilados. Para usarlo hay que activar SUPPORT_ESPNOW en la sección [features] del platformio.ini y compilar desde el código fuente:
[features]
SUPPORT_ESPNOW = ON
Tras compilar y flashear, el firmware muestra un menú ESP-NOW Config en el puerto serie y en /preferences.html.
Configuración
| Parámetro NVS | Default | Descripción |
|---|---|---|
| `activeESPNow` | `false` | Activa/desactiva ESP-NOW |
| `tToPubESPNow` | 60 s | Tiempo entre publicaciones |
| `tKeepAlESPNow` | 300 s | Intervalo de keepalive |
| `boardID` | MAC del dispositivo | Identificador único de la placa |
| Peer MAC | `FF:FF:FF:FF:FF:FF` (broadcast) | MAC destino (broadcast por defecto) |
ESP-NOW comparte la radio Wi-Fi; funciona en paralelo si tu AP está en el mismo canal (o se usa `ESPNOW_WIFI_CH = 1`). Si el router cambia de canal, ESP-NOW deja de recibir hasta que se re-sincronice. Cuidado con el channel switch dinámico de routers modernos.
Comandos remotos (killer feature)
ESP-NOW permite enviar comandos remotos entre dispositivos. El set de comandos soportados es:
| Comando | Valor | Función |
|---|---|---|
| `cmdCO2GadgetNone` | 0 | No-op |
| `cmdCO2GadgetCalibration` | 1 | Calibración forzada (parámetro: ppm 400–2000) |
| `cmdCO2GadgetDeepSleepPeriod` | 2 | Cambio del periodo de deep sleep (parámetro: segundos) |
| `cmdCO2GadgetTest` | 10 | Test/debug |
Por ejemplo, puedes calibrar remotamente otro medidor CO₂ Gadget sin necesidad de tocarlo físicamente.
Tipos de mensaje
| Tipo | Valor | Payload |
|---|---|---|
| `MSG_JSON` | 0 | JSON genérico |
| `MSG_RESERVED` | 1 | Reservado |
| `MSG_CO2GADGET` | 2 | Telemetría CO2 Gadget (boardID, temp, hum, co2, battery, readingId, command, parameter) |
| `MSG_PULSECOUNTER` | 3 | Contador de pulsos |
| `WS_OTHER` | 128 | Otros protocolos |
Threshold gating
Las publicaciones ESP-NOW también pasan por el ThresholdManager (canal ESPNOW_SEND). Se publican solo cuando el valor cruza el umbral configurado, evitando saturar la red con mensajes innecesarios.
Casos de uso
- Medidores en múltiples habitaciones sin WiFi dedicado
- Gateway ESP-NOW → MQTT para enviar telemetría a Home Assistant sin WiFi en el medidor original
- Monitorización exterior (garaje, taller, invernadero)
- Calibración remota de medidores en campo
Notas
- ESP-NOW y BTHome pueden coexistir (BLE y Wi-Fi comparten banda pero ESP-NOW solo transmite en tx slots cortos)
- El alcance depende de antena y entorno; típico 100–200 m en interior y hasta ~200 m en abierto con peer en el mismo canal
- CO2 Gadget con ESP-NOW supera cualquier medidor comercial en alcance y versatilidad
¿Te ha sido útil? Comparte este artículo. ¿Tambien consulta la Guía del Menú. Tienes dudas? Pregunta en el grupo de Telegram.