Válvula motorizada + Home Assistant

Hoy os traigo algo que para mi lo veo fundamental, sobre todo, para casas, parcelas o viviendas, estén o no habitadas.

Hemos integrado una válvula motorizada para la apertura y cierre de la tubería general de entrada de agua a la parcela.

¿Pero para que vale?

Con esta válvula motorizada y alguna automatización, podremos cortar el agua en caso de fugas o cuando hiela mucho y poder vaciar las tuberías de agua o para no tener que cerrar de forma manual la llave de corte, para poder hacer reformas en las tuberías de casa, etc.

Materiales:

  • Home Assistant instalado.
  • Válvula motorizada. Enlace.
  • Teflon para las uniones.
  • Manguera con 3 cables.
  • Termoretractil.
  • Placa 8 Relé.
  • ESP32.
  • 74HC595.
  • Cables para conexiones.

En mi caso, os voy a enseñar el código y diagrama de como lo tengo montado con un esp32, una placa de 8 relés controlado con un 74HC595. Además, tengo conectado un sensor de temperatura y humedad DHT11, sensor de presión y medidor de flujo de agua (imprescindible para la automatización en caso de fuga de agua).

Diagrama de conexiones del esp32 y 74HC595

Código. En mi caso se llama huerto y dejo añadido sensor de presión, temperatura y humedad y medidor de consumo de agua. Como se va a poder ver en el código, usaremos la salida 0 del 74HC595 para controlar una electro válvula para riego y la salida 7, para controlar la válvula motorizada.

esphome:
  name: huerto

esp32:
  board: az-delivery-devkit-v4
  framework:
    type: arduino

wifi:
  networks: # EN MI CASO USO 2 REDES
  - ssid: SSID 1
    password: CONTRASEÑA 1
  - ssid: SSID 2
    password: CONTRASEÑA 2

mqtt:
  broker: IP DEL SERVIDOR MQTT
  username: USUARIO
  password: CONTRASEÑA

logger:
api:
captive_portal:

ota:
  password: "CONTRASEÑA DE OTA"
 
time:
  - platform: homeassistant

sensor:

# OPCIONAL, SOLO ES PARA CONTROLAR LA INSTENSIDAD DE LA SEÑAL DEL ESP32
  - platform: wifi_signal
    name: "señal wifi huerto"
    update_interval: 3600s

# CONSUMO INSTANTANEO EN LITROS X MINUTO
  - platform: pulse_meter
    pin: GPIO27
    name: "consumo agua instantaneo"
    unit_of_measurement: "L/min"
    timeout: 1s
    accuracy_decimals: 3
    filters:
      - multiply: 0.04 # CAMBIAR SEGUN LOS PULSOS DE SU MEDIDOR DE FLUJO DE AGUA

# TOTAL DE CONSUMO DE AGUA
    total:
      name: "consumo total agua"
      unit_of_measurement: "m³"
      device_class: water
      state_class: total_increasing
      accuracy_decimals: 3
      filters:
        - multiply: 0.0004

# PARTE PARA EL SENSOR DE PRESION
  - platform: adc
    pin: GPIO34
    name: "presion agua"
    id: presion_agua
    device_class: pressure
    state_class: "measurement"
    accuracy_decimals: 2
    filters:
    - calibrate_linear: # MODIFICAREMOS PARA LA CALIBRACION DE SENSOR DE PRESION CON EL MANOMETRO ANALOGICO
      - 0 -> 0
      - 1 -> 3
    unit_of_measurement: bar
    update_interval: 30s  
  
# AÑADIMOS ESTA LINEA PARA PODER CALIBRAR LA PRESION
  - platform: adc
    pin: GPIO34
    name: 'voltaje presion'
    id: voltaje_presion

# PARTE DEL SENSOR DE TEMPERATURA Y HUMEDAD    
  - platform: dht
    pin: GPIO32
    temperature:
      name: "Temperatura Huerto 1"
    humidity:
      name: "Humedad Huerto 1"
    update_interval: 5s

# DECLARAMOS EL SELECTOR DE REGISTRO
sn74hc595:
  - id: 'sn74hc595_hub'
    data_pin: GPIO14 # PIN SER 
    clock_pin: GPIO12 # PIN SRCLK 
    latch_pin: GPIO13 # PIN RCLK 
    sr_count: 1 # CAMBIAR SI PONEMOS MAS EN SERIE

switch:
  - platform: gpio
    name: "riego arboles gallinero"
    pin:
      sn74hc595: sn74hc595_hub
      number: 0
      inverted: true

  - platform: gpio
    name: "SN74HC595 Pin #1"
    pin:
      sn74hc595: sn74hc595_hub
      number: 1
      inverted: true

  - platform: gpio
    name: "SN74HC595 Pin #2"
    pin:
      sn74hc595: sn74hc595_hub
      number: 2
      inverted: true

  - platform: gpio
    name: "SN74HC595 Pin #3"
    pin:
      sn74hc595: sn74hc595_hub
      number: 3
      inverted: true

  - platform: gpio
    name: "SN74HC595 Pin #4"
    pin:
      sn74hc595: sn74hc595_hub
      number: 4
      inverted: true

  - platform: gpio
    name: "SN74HC595 Pin #5"
    pin:
      sn74hc595: sn74hc595_hub
      number: 5
      inverted: true

  - platform: gpio
    name: "SN74HC595 Pin #6"
    pin:
      sn74hc595: sn74hc595_hub
      number: 6
      inverted: true

  - platform: gpio
    name: "general agua"
    pin:
      sn74hc595: sn74hc595_hub
      number: 7
      inverted: true

on_boot:
    then:
      - lambda: |-
          // Restaurar el valor total de consumo de agua desde la EEPROM al iniciar
          id(consumo_agua_total).publish_state(eeprom_read_float(0));

# BOTON VIRTUAL PARA REINICIAR EL ESP32
button:
  - platform: restart
    name: "reinicio huerto"

# APARTADO PARA EL ACCESO A TRAVÉS DE WEB    
web_server:
  port: 80

About Author

Artículos recomendados

4 comentarios

  1. ¿Podrías decirme qué sensor de presión utilizas? Quiero hacer algo similar pero no tengo ni idea de cómo programar en home assistant un sensor de presión hidráulica.

    1. Hola, pues he usado uno de Ali. Algo así:
      https://a.aliexpress.com/_EIa3YcJ
      La programacion está en el post. Solo tienes que realizar las conexiones correctas. Es sencillo, aun así puede avisarme y ayudare en lo que pueda. Le recomiendo iniciarse en Home Assistant. Es un mundo pero es un mundo bonito. Si tiene iOS puede ponerlo todo en HomeKit sino Google o alexa

  2. Hola,
    Estoy intentando ver este proyecto pero me aparece como:
    “Este contenido está restringido.”
    Como podría verlo?
    Gracias

    1. buenas tardes,
      perdón estoy trasteando el tema de permisos, pero creo que ya lo tienes, si no avísame y lo reviso.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *