Leyendo el contador de agua de casa con ESPHome y Home Assistant

Tenía ganas de escribir este post, ya hace tiempo que andaba buscando una buena solución, estable y fiable… y como no, ESPHome tiene la respuesta. En este post veremos cómo leer el consumo de agua de un contador de agua común y corriente, vamos, el que tenemos en casa; y visualizarlo con Home Assistant.

 

Desde hace años este tema me dio curiosidad, conocer el consumo, en este caso del agua de casa, el consumo y uso que hacemos del agua en nuestros hogares. Venía usando soluciones con cámara de fotos y con reconocimiento de texto OCR, pero… no era una solución válida, tenía sus puntos débiles y fallaba más que una escopeta de feria. Tras unos cuantos meses de uso os puedo asegurar que la manera más fiable es con un sensor de proximidad inductivo y un ESP8266 o ESP32.

¿Para qué? Pues por la razón que tengas, por saber consumos, intentar ahorrar, detectar fugas, porque se puede…

 

 

Bueno, total, que al final resulta que tenemos una manera muy sencilla de leer la lectura de un contador, lo podemos hacer mediante un sensor de proximidad, en concreto con el modelo LJ18A3-8Z/BX NPN (por poco más de 10€). Los contadores de agua, normalmente disponen de una pequeña ruleta, esta ruleta gira y tiene un pequeño imán que podremos detectar en cada vuelta. Cada vuelta, cada pulso equivale a 1 litro.

 

 

Así que, conectaremos el sensor de proximidad LJ18A3-8Z/BX a nuestra placa con el ESP, sea ESP8266 o ESP32, y luego pegaremos el sensor a dicha ruleta del contador de agua. Obviamente, antes de pegar nada, lo probaremos previamente con algún imán que tengamos en la nevera 😉 El cableado es muy sencillo y quedaría de la siguiente manera, el cable marrón al VIM, el azul al GND y el negro a un GPIO de datos, el mi caso el D21.

 

Si no lo hemos hecho ya, en nuestra placa instalaremos el firmware de ESPHome para poder integrarlo sencillamente en Home Assistant. La manera más sencilla de instalar ESPHome es desde el propio Home Assistant, añadiendo un nuevo dispositivo (si hace falta haremos un post de este How To). Y una vez creado el dispositivo le añadimos la siguiente configuración a la placa:

sensor:
  - platform: pulse_counter
    pin: 21
    update_interval : 6s
    name: "pulso agua"
    id: pulso_agua

  - platform: pulse_meter
    pin: 21
    name: "Medidor pulsos agua"
    unit_of_measurement: "litros/min"
    icon: "mdi:water"
    total:
      name: "Total Agua"
      unit_of_measurement: "litros"

  - platform: template
    name: "Flujo de agua"
    id: flujo_agua
    accuracy_decimals: 1
    unit_of_measurement: "l/min"
    icon: "mdi:water"
    lambda: return (id(pulso_agua).state * 10);
    update_interval: 6s

 

Con esto ya podremos conocer el ‘Pulso del agua’, el ‘Total de agua’ y el ‘Flujo de agua’. Tardaréis 2 minutos en añadir las tarjetas en Home Assistant, os dejo sus códigos por si os sirve de algo:

type: custom:apexcharts-card
header:
  show: true
  title: Consumo agua - Última hora
  show_states: false
series:
  - entity: sensor.total_agua
    name: Luxes
    type: area
    opacity: 0.7
    color: blue
    group_by:
      duration: 1m
      func: avg
graph_span: 1h
update_interval: 5mins

 

 Y luego en Home Assistant, si queremos almacenar los datos para estadística y conocer el consumo del agua por horas, por días, por meses o anuales, deberíamos de crear las siguientes Utility Meters directamente en el fichero de configuración de Home Assistant (configuration.yaml):

utility_meter:
  consumo_agua_horario:
    name: "Consumo Agua - Horario"
    source: sensor.total_agua
    cycle: hourly
  consumo_agua_diario:
    name: "Consumo Agua - Diario"
    source: sensor.total_agua
    cycle: daily
  consumo_agua_mensual:
    name: "Consumo Agua - Mensual"
    source: sensor.total_agua
    cycle: monthly
  consumo_agua_anual:
    name: "Consumo Agua - Anual"
    source: sensor.total_agua
    cycle: yearly

 

 

Y las tarjetas para visualizar dichos datos, os dejo una de ejemplo:

type: custom:apexcharts-card
header:
  show: true
  title: Consumo agua - Último mes
  show_states: false
series:
  - entity: sensor.consumo_agua_diario
    name: Litros
    type: column
    opacity: 0.7
    color: blue
    group_by:
      duration: 1d
      func: max
graph_span: 30d
update_interval: 5min

 

Espero que os sirva de utilidad, de aquí a final de año tengo intención de sacar otros posts que sacan lecturas no sólo del contador del agua de casa, si no, del gasto eléctrico, del gas… Como siempre, deseando que os vaya muy bien y tengáis muchos éxitos! Abrazos,

 

Héctor Herrero