Este proyecto – llamado WaterTankController – tiene como objetivo controlar el circuito de agua de una casa tradicional, utilizando sensores comerciales de nivel de líquido . El dispositivo encenderá la Bomba Centrífuga siempre y cuando se cumplan las siguientes condiciones:

  • Tanque Elevado vacío.
  • Tanque Cisterna lleno.
  • Sensor de Desborde desactivado.
  • Haya pasado el tiempo entre encendidos de la Bomba, definido por programa.

Una vez activada, permanecerá encendida hasta que se cumplan algunas de las siguientes condiciones:

  • Tanque Elevado lleno.
  • Tanque Cisterna vacío.
  • La Bomba Centrífuga haya estado en marcha más tiempo del definido por programa.

Los dos sensores flotantes de plástico sellados controlan el Tanque Cisterna y el Tanque Elevado. Debido a que el Tanque Elevado está instalado en el entretecho de una casa, por seguridad se colocó un segundo sensor por redundancia, con uno de desborde de material inoxidable.

Para el Tanque Cisterna utilicé el sensor de nivel Viyilant TI-Hermético (con ángulo de corte de 45º), mientras que para el Tanque Elevado utilicé el modelo Viyilant TI-Patagónico, que tiene un ángulo de corte menor (20º), especialmente diseñado para tanques de menor altura, como los que normalmente se colocan en los entretechos de las casas.

Sensores de Nivel de Agua

Una primera versión del dispositivo no tomaba ninguna decisión, sino que sólo reportaba el estado de los tanques a Home Asstant, y por medio de automatizaciones se encendía/apagaba la Bomba Centrífuga, pero problemas con la red (WiFi) podían generar desbordes en el Tanque Elevado, o calentamiento de la Bomba Centrífuga (por no parar la marcha ante falta de agua en el Tanque Cisterna). Por ese motivo, decidí que el dispositivo sea el controlador y que reporte el estado a Home Assistant para monitoreo y eventualmente disparar automatizaciones (por ejemplo, desactivar el controlador por falta de presencia en la casa).

Uno de los puntos importantes en el código del WaterTankController fue conseguir la libreria “WiFi Manager” que trabaje en modo “No-Bloqueante”, es decir, que si el dispositivo no logra conectarse a la red WiFi, o si pierde conexión (por ejemplo, por problemas con el Access Point), siga controlando su tarea crítica (los niveles de agua de los Tanques y la marcha de la Bomba Cisterna). Para eso utilicé el “Development Branch” de la librería de tzapu. De esta manera, la placa microcontroladora NodeMCU (basada en el microcontrolador Espressif ESP8266) se encarga de controlar los niveles de agua del Tanque Cisterna, Elevado, la marcha de la Bomba Centrífuga, y si consigue conectarse a la red WiFi y a la instancia de Home Assistant, publicará sus estados. Caso contrario, trabajará de manera autónoma como un controlador convencional.

Descripción Funcional

La primera vez que se enciende el dispositivo, se coloca en “Modo Acces Point”, con SSID “WaterTankController”. Desde cualquier dispositivo cliente WiFi (teléfono, tablet, Notebook) deberemos conectarnos a esa red, y una vez establecida la conexión, normalmente el dispositivo presentará una página como la que se muestra en la captura de pantalla Nº 2 . En caso de que la redirección no sea automática, deberemos apuntar el Navegador a la IP 192.168.4.1.

Pantallas Android

Seleccionando el botón “Configure WiFi”, el WaterTankController realizará un “escaneo” de las redes WiFi disponibles, y mostrará en pantalla el resultado, como puede verse en la captura Nº 3. En ese momento seleccionaremos la red WiFi a la que queremos que el WaterTankController se conecte, e ingresamos la clave o “Password”.

Una vez cargados los datos, al guardarlos por medio del botón “Save”, el dispositivo se reiniciará, y si logra conectarse la red WiFi especificada, comenzará a enviar los datos a la instancia de Home Assistant que se le haya configurado en el programa (ver “Configuración del Firmware del WaterTankController“).

A partir de ese momento, y con el Home Assistan configurado (ver configuración de Home Assistant), podrá verse el estado del circuito de agua de la casa en el Dashboard correspondiente, tal como se muestra en la siguiente imagen:

Home Assistant

Para tener información del estado de los componentes del circuito de agua de manera local, el dispositivo cuenta también con una pantalla OLED. Los distintos estados del sistema se grafican como se muestra en las siguientes pantallas.

Pantallas OLED

Toda la información sobre este proyecto (esquemático, listado de componentes, diagrama de conexionado eléctrico y código fuente del ESP8266) publicado con Licencia GPL en mi cuenta de Github.