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]
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:
- En primer lugar, consulta esta guía sobre cómo integrar una ESP32-CAM en HA para que te proporcione la imagen.
- 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.

- 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.
- 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.

- 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.
- 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».
- 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
- 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 }}

- 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!

