Dispositivos ESPHome con batería

Aprende a crear dispositivos ESPHome con batería de la forma más sencilla para hacer que tus proyectos sean portátiles!

Ventajas y limitaciones de usar baterías

Si ya has entrado en este «mundillo», es cuestión de tiempo que quieras crear dispositivos ESPHome con batería. Las ventajas son evidentes, ya que puedes colocarlos en cualquier sitio (tengan cerca un enchufe o no) y quedan más estéticos.

¿Entonces por qué no los vemos más a menudo? Bueno, lo cierto es que en el contexto en que nos movemos hay diversos factores:

  • Los proyectos de domótica suelen ser dispositivos que están permanentemente encendidos y reportando su estado cada pocos segundos (por ejemplo, un sensor de presencia o un multisensor ambiental). Esto deriva en un gasto de energía considerable, que nos obligaría a cargar la batería continuamente.
  • Tanto las baterías de litio como las LiPo son delicadas y pueden llegar a ser peligrosas (incluso arder). Lógicamente, no tiene por qué suceder nada siempre que se utilice de forma correcta. El problema es que esto requiere un cierto conocimiento para no sobrecargar la batería, crear cortocircuitos, calentarla más de la cuenta…
  • Por defecto, no todas las placas nos permiten saber el nivel de batería. Esto puede ser un problema o una incomodidad, si la única manera que tienes de saber de que no hay batería es que se «muera» tu dispositivo (o cargarla continuamente de forma preventiva).
  • Si has estado investigando a fondo, sabrás que para incorporar a tu proyecto una batería «en condiciones», necesitas varios componentes. Esto incrementa la complejidad, coste y tamaño de tu proyecto.

Casos y dispositivos recomendados

Entonces, ¿cuándo nos conviene usar dispositivos ESPHome con batería? Mi opinión es la siguiente:

  • Dispositivos de uso intermitente. No siempre necesitamos que nuestro dispositivo responda de forma inmediata o que reporte información cada pocos segundos. Por ejemplo, cuando utilizamos los típicos sensores para medir la humedad de las plantas (ya que es una información que no cambia continuamente). Esto nos va a permitir reducir significativamente el consumo de energía.
  • Placas con puerto de carga. Existe algunas variantes de placas controladoras que incorporan el circuito y puerto de carga (como la Lolin D32). Estas te permiten reducir la complejidad, coste, tamaño y riesgos en tus dispositivos ESPHome con batería. Además, normalmente vas a poder determinar fácilmente el nivel de batería restante.
  • Baterías acorde a tu proyecto. A la hora de comprar una batería pueden abrumarte la cantidad de opciones que hay, pero hay algunos aspectos importantes a considerar:
    • Voltaje compatible. Generalmente vas a querer una batería de 3.7 V nominal para tus proyectos con ESPHome (voltajes distintos al requerido pueden dañar el dispositivo o volverlo inestable).
    • Autonomía requerida. La capacidad de la batería se expresa en miliamperios / hora (mAh) y el consumo de tu dispositivo (en mA) dependerá de las características de tu proyecto (por ejemplo, una pantalla consume mucho más que un simple sensor de temperatura). Sabiendo ambos datos puedes estimar cuántas horas aguantará la batería (capacidad dividida por el consumo).
    • Conector incorporado. Verifica que el conector de la batería (por ejemplo, ‘Ph 2.0’) coincide con el puerto de tu placa.
    • Circuito de protección. Procura utilizar baterías que incorporen una placa o circuito de protección (se indica en la descripción del producto). De esta forma reducirás los riesgos de que tener «un susto».
    • Otros factores. Hay más detalles que puede interesarte tener en cuenta, dependiendo de tu proyecto (como la forma, tamaño o peso de la batería).
Batería Lipo
GENERICO

Batería Lipo

3,0

Alimenta tus proyectos DIY y sensores con esta batería recargable. Ideal para Arduino y ESP, funciona en local e integra WiFi vía ESPHome para un control total desde Home Assistant.Alimenta tus proyectos DIY y sensores con esta batería recargable. Ideal para Ar...

Lolin D32
GENERICO

Lolin D32

4,0

Placa de desarrollo ESP32 ideal para proyectos DIY. Conectividad WiFi, funcionamiento local y soporte para batería. Se integra fácilmente en Home Assistant mediante ESPHome para crear tus propios sensores.Placa de desarrollo ESP32 ideal para proyectos DIY. Conectividad WiFi, funcionam...

*Algún precio puede haber cambiado desde la ultima revision

Monitorización del nivel de batería

Algo que, obviamente, es muy interesante al utilizar dispositivos ESPHome con batería es monitorizar el nivel de carga. De esta forma podremos saber el porcentaje actual y crear automatizaciones para que nos notifique cuando debemos cargarla.

Esto podemos hacerlo gracias al componente ADC (Analog To Digital Sensor) de ESPHome. Este componente lee el voltaje que entra en uno de los pines de la placa. Con este dato podemos crear un sensor ‘template’ que traduzca este voltaje en un porcentaje de carga.

Aquí tienes un ejemplo (correspondiente a una Lolin D32) del fragmento de código que tendrías que añadir a tu dispositivo para controlar la batería.

captive_portal:
sensor:
  - platform: adc
    pin: GPIO35
    name: "Batería (voltaje)"
    id: voltaje_bateria
    attenuation: 11db  # Para leer hasta ~3.9-4.2V en ESP32
    update_interval: 60s
    filters:
      - multiply: 2
      - sliding_window_moving_average:
          window_size: 10
          send_every: 5
  - platform: template
    name: "Batería"
    unit_of_measurement: "%"
    icon: "mdi:battery"
    update_interval: 60s
    lambda: |-
      if (id(voltaje_bateria).state > 4.2) {
        return 100.0;
      } else if (id(voltaje_bateria).state < 3.0) {
        return 0.0;
      } else {
        return (id(voltaje_bateria).state - 3.0) / (4.2 - 3.0) * 100.0;
      }

Esto nos devolvería las siguientes entidades:

Ahorro de energía

Si nos encontramos en uno de esos casos en los que nos basta con tener lecturas esporádicas de nuestro dispositivo (por ejemplo, cada hora), ESPHome nos ofrece la posibilidad de ahorrar energía y alargar la batería.

Power Save Mode

Para empezar, el componente WiFi de ESPHome nos permite ahorrar energía sin apagar completamente nuestra placa. Esto podemos hacerlo ajustando el parámetro «Power Save Mode» del componente, para reducir el consumo minimizando el uso del WiFi. Podríamos configurar el modo de ahorro más agresivo de la siguiente forma:

wifi:
  power_save_mode: high

Esto puede ser conveniente para ahorrar energía en un dispositivo que debe reaccionar rápidamente a eventos (como un botón o un sensor PIR). Puesto que la placa no llega a apagarse, no necesita invertir tiempo en reiniciarse (conservando el estado del dispositivo).

Deep Sleep

Ahora, si lo que buscamos es el máximo ahorro de energía, entonces nos interesa el componente Deep Sleep de ESPHome. A diferencia de lo indicado en el apartado anterior, el ‘deep sleep’ apaga la placa casi por completo, teniendo que reiniciarse al «despertar», y solo puede ser activada por un temporizador o un pin configurado como ‘wake-up‘. Esto se traduce en un ahorro energético y una duración de la batería mucho mayor.

El componente se configura añadiendo el siguiente fragmento a tu código:

deep_sleep:
  run_duration: 20s   
  sleep_duration: 5min  
  wakeup_pin: GPIO33

Si observas el código anterior:

  • run_duration‘ representa el tiempo en segundos, durante el cual permanecerá encendido el dispositivo. Ten en cuenta que debe ser suficiente para iniciar el dispositivo, conectarlo a la WiFi, realizar las lecturas correspondientes y enviar los datos.
  • ‘sleep_duration’ es el tiempo en segundos que permanecerá dormido el dispositivo, entre ciclo y ciclo de lectura.
  • ‘wakeup_pin’ es, como forma alternativa al temporizador, el GPIO que puede despertar el dispositivo al registrar un cambio (por ejemplo, la pulsación de un botón).