Medir tu consumo de agua en HA

Medir tu consumo de agua en HA

Aprende a medir tu consumo de agua en HA integrando tu contador y dispositivos, de una forma sencilla y no invasiva!

Alternativas para leer el contador

Después de pasar unos días relacionándome con el panel de «Energía», integrando el consumo de la electricidad y el gas, he querido cerrar el círculo y enseñarte cómo medir tu consumo de agua en HA.

Para ello, el principal elemento con el que vamos a querer interactuar es nuestro contador de agua, ya que es quien se encarga de medir el consumo. Entre las alternativas disponibles, puedes utilizar, por ejemplo:

  • Dispositivos que se instalan sobre tu contador, como el Watermeter de Homewizard, con integración oficial en Home Assistant. Si no quieres complicarte la vida y puedes instalarlo físicamente (porque no hay otros elementos que te lo impidan), son una buena opción. La pega es que son más caros que otras alternativas.
  • Utilizar una ESP32-CAM + IA es una opción clásica, porque es universal, barata, y fácil de llevar a cabo. Todo lo que necesitas es haber integrado una en Home Assistant y sacar unas piezas con tu impresora 3D (o pedírselas a La R3D).
💡 No te preocupes si tu contador está en un sitio oscuro, las ESP32-CAM incorporan un LED en su placa que te van a permitir iluminarlo para ver la imagen con claridad.

[content-egg module=Aliexpress2 template=grid groups=»esp32cam» cols=4 cols_xs=2 cols_sm=2]

*Algún precio puede haber cambiado desde la última revisión

Instalación de una ESP32-CAM

Como te decía, medir tu consumo de agua en HA usando una ESP32-CAM está al alcance de cualquiera. Para ello solo tienes que seguir estos pasos:

  1. En primer lugar, consulta esta guía sobre cómo integrar una ESP32-CAM en HA para que te proporcione la imagen.
  2. El siguiente paso es imprimir un soporte con tu impresora 3D, que se adapte a tu instalación. En internet vas a encontrar un montón de diseños que puedes descargar de forma gratuita.
💡 En mi caso he optado por una carcasa tipo "Gopro", junto a dos brazos en forma de 'L' y una abrazadera con el mismo adaptador, que no obstaculiza la lectura manual.
  1. Si has visto otros modelos por internet, quizás te llame la atención que la mayoría son más voluminosos que el mío y no es casualidad. Esto se debe a que el módulo que suelen traer por defecto las ESP32-CAM (en concreto, el OV2640), necesita una distancia mínima (al menos, unos 10 cm) para enfocar la imagen. Sin embargo, podemos arreglarlo con un pequeño truco.
  2. Para obligar a nuestra cámara a que ajuste el enfoque en cortas distancias, basta con girar (con cuidado) la rosca superior del módulo OV2460 unos 360º, usando unos alicates de punta fina. Vienen fijadas con pegamento industrial, por lo que al principio notarás un poco de resistencia.
  1. Hecho esto solo necesitas ajustar el soporte para que encuadre la lectura del contador y, si es necesario, ajustar la configuración de la cámara en ESPHome. En mi caso, he ajustado el brillo del LED al 50% y he aplicado esta configuración a la cámara.
esp32_camera:
  name: esp32cam
  external_clock:
    pin: GPIO0
    frequency: 20MHz
  i2c_pins:
    sda: GPIO26
    scl: GPIO27
  data_pins: [GPIO5, GPIO18, GPIO19, GPIO21, GPIO36, GPIO39, GPIO34, GPIO35]
  vsync_pin: GPIO25
  href_pin: GPIO23
  pixel_clock_pin: GPIO22
  power_down_pin: GPIO32
  vertical_flip: true # Volteo vertical de la imagen
  horizontal_mirror: true # Volteo horizontal de la imagen
  resolution: 1600x1200 # Resolución máxima
  jpeg_quality: 10 # Calidad máxima
  max_framerate: 1 fps # Framerate bajo
  idle_framerate: 0.2 fps # Framerate bajo
💡 Como ves, la imagen no es perfecta en nitidez o encuadre, pero es suficiente para la Inteligencia Artificial.
  1. Ahora vamos a crear un contador virtual, que vaya acumulando las lecturas. Para ello ve a Configuración > Dispositivos y servicios > Ayudantes > Crear ayudantes > Contador, e indica estos datos:
    • Nombre. El que tú quieras (por ejemplo, «Contador Agua»).
    • Icono. De nuevo, el que más te guste.
    • Valor mínimo. Introduce el valor ‘0’.
    • Valor máximo. Introduce el valor ‘999999999’.
    • Pulsa en «Crear».
  2. El siguiente paso es crear una automatización que va a ir leyendo el contador de la siguiente forma:
    • Añade un disparador de tipo «Patrón de tiempo» e indica que lea, por ejemplo, cada 6 h.
    • Añade una acción que encienda el LED de la ESP32-CAM, para asegurarnos de que el ambiente está bien iluminado, seguido de una acción «Esperar» durante 1 minuto para que de tiempo a actualizar la captura.
    • Ahora añade una tarea de IA (utilizando alguna inteligencia artificial gratuita, como OpenRouter o Gemini), que haga la lectura del contador y lo devuelva como un número.
    • Por último, utiliza este número para almacenarlo en el contador y después apaga el LED de la cámara.
    • Adicionalmente (muy recomendable), podrías añadir alguna validación que compruebe que se ha realizado correctamente (o te avise).
💡 A continuación te dejo el código de la automatización del ejemplo, que tendrías que adaptar con tus entidades.
alias: Lectura Contador Agua
description: ""
triggers:
  - trigger: time_pattern
    hours: /6
conditions: []
actions:
  - action: light.turn_on
    metadata: {}
    target:
      entity_id: light.esp32_cam_espcam_02_light
    data:
      brightness_pct: 50
    enabled: true
  - delay:
      hours: 0
      minutes: 1
      seconds: 0
      milliseconds: 0
    enabled: true
  - action: ai_task.generate_data
    data:
      task_name: Lectura Contador Agua
      instructions: >-
        Obtén el consumo de agua del contador y devuelve su valor, teniendo en
        cuenta que se trata de un número de 7 cifras, sin decimales.
      entity_id: ai_task.google_ai_task
      attachments:
        media_content_id: media-source://camera/camera.esp32_cam_esp32cam
        media_content_type: image/jpeg
        metadata:
          title: ESP32-CAM esp32cam
          thumbnail: /api/camera_proxy/camera.esp32_cam_esp32cam
          media_class: video
          children_media_class: null
          navigateIds:
            - {}
            - media_content_type: app
              media_content_id: media-source://camera
      structure:
        consumo:
          selector:
            number: null
    response_variable: consumo_contador_agua
    continue_on_error: true
  - if:
      - condition: template
        value_template: "{{ consumo_contador_agua is defined }}"
    then:
      - action: counter.set_value
        metadata: {}
        target:
          entity_id: counter.contador_agua
        data:
          value: "{{ consumo_contador_agua.data.consumo | int }}"
    else:
      - action: notify.mobile_app_pixel_9a
        metadata: {}
        data:
          message: ⚠️ La lectura del contador de agua ha fallado!
  - action: light.turn_off
    metadata: {}
    target:
      entity_id: light.esp32_cam_espcam_02_light
    data: {}
    enabled: true
mode: single
  1. Como el agua se factura en m3, ahora vamos a crear un sensor template que convierta las unidades. Ve a Configuración > Dispositivos y servicios > Ayudantes > Crear ayudante > Template > Sensor, e indica lo siguiente:
    • Nombre. El que quieras (por ejemplo, «Consumo de Agua»).
    • Unidad de medida. Busca y selecciona m3.
    • Clase de dispositivo. Selecciona «Agua».
    • Clase de estado. Selecciona «Total».
    • Estado. Pega la siguiente plantilla (indicando tu contador creado en el paso 6).
{{ states('counter.contador_agua')|int * 0.001 }}
  1. Tras guardar el sensor, ve a tu panel de «Energía» en modo edición. Ve al apartado «Consumo de agua» y pulsa en «Añadir fuente de agua». Al hacer clic en el desplegable te aparecerá la entidad que hemos creado en el paso anterior. Pulsa en «Guardar» y ya podrás medir tu consumo de agua en HA!