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
¿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.
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
Hola,
Estoy intentando ver este proyecto pero me aparece como:
“Este contenido está restringido.”
Como podría verlo?
Gracias
buenas tardes,
perdón estoy trasteando el tema de permisos, pero creo que ya lo tienes, si no avísame y lo reviso.