Sensor de Fluxo de Água YF-S201 no Home Assistant via ESPHome
Quer monitorar o consumo de água da sua casa inteligente? Com o sensor YF-S201 e um ESP8266 NodeMCU, você faz isso de forma simples e barata!
🧰 Materiais Necessários:
- Sensor de fluxo YF-S201
- ESP8266 NodeMCU v2/v3
- Mangueira compatível (se desejar testar com água)
- Fonte 5V ou USB
- Links pra compra em: https://www.asnweb.com.br/c/2034/a/

🔌 Ligação dos Fios:
Sensor YF-S201 | ESP8266 NodeMCU |
---|---|
Vermelho (VCC) | VIN (5V) |
Preto (GND) | G (GND) |
Amarelo (Saída) | D1 (GPIO5 por exemplo) |
Após instalar o seu ESP no Home Assistant, usando ESPHOME, poderá subir o código YAML e adicionar o sensor dessa maneira:
sensor:
- platform: pulse_counter
pin: GPIO14
name: "Fluxo de Água"
unit_of_measurement: 'L/min'
update_interval: 5s
filters:
- multiply: 0.118 # constante de calibração aproximada
🧪 Como funciona?
O YF-S201 emite pulsos conforme a água passa. O ESPHome conta esses pulsos e converte em litros por minuto (L/min). A constante 0.118
pode variar entre sensores — ajuste para melhor precisão!
✅ Resultado
Você verá em tempo real no Home Assistant o fluxo de água em L/min, ideal para:
- Detectar consumo em máquinas de lavar, chuveiros, irrigação
- Acionar alertas em caso de vazamento
- Criar automações baseadas no uso de água
💡 Dica Extra:
Crie automações como:
- “Se fluxo de água por mais de 10 minutos, enviar notificação”
- “Se fluxo for detectado e ninguém estiver em casa, desligar a bomba d’água”
Código completo para o ESP Home no Home Assistant
substitutions:
name: esphome-web-889d9c
friendly_name: sensor_de_fluxo
esphome:
name: ${name}
friendly_name: ${friendly_name}
min_version: 2024.6.0
name_add_mac_suffix: false
project:
name: esphome.web
version: dev
esp8266:
board: nodemcuv2
logger:
# Enable Home Assistant API
api:
# Allow Over-The-Air updates
ota:
- platform: esphome
password: !secret wifisenha
# Allow provisioning Wi-Fi via serial
improv_serial:
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
captive_portal:
sensor:
- platform: pulse_counter
state_class: measurement
name: "Fluxo de Água"
id: fluxo_agua_lavadora
pin: GPIO5
update_interval: 1s
filters:
- lambda: return (x / 500.0); #Flow pulse: F=(6.68Q)±5% with Q=L/min
unit_of_measurement: "L/min"
- platform: integration
device_class: water
state_class: total_increasing
name: "Água em m³"
unit_of_measurement: 'm³'
accuracy_decimals: 4
sensor: fluxo_agua_lavadora
time_unit: min
icon: "mdi:water"
filters:
- lambda: return (x / 1000);
- platform: integration
device_class: water
state_class: total_increasing
name: "Agua em litros"
unit_of_measurement: 'L'
accuracy_decimals: 2
sensor: fluxo_agua_lavadora
time_unit: min
icon: "mdi:water"
Card Home Assistant
title: Sensor de Fluxo
type: horizontal-stack
cards:
- type: glance
entities:
- entity: sensor.esphome_web_889d9c_fluxo_de_gua
name: Sensor de Fluxo
- entity: sensor.esphome_web_889d9c_gua_em_m
name: Cubagem
icon: mdi:water-circle
- entity: sensor.esphome_web_889d9c_agua_em_litros
name: Quantidade
columns: 1
state_color: true
show_header_toggle: true
footer:
type: graph
entity: sensor.parede_mode_scene_power_meter
- type: custom:button-card
entity: sensor.esphome_web_889d9c_fluxo_de_gua
name: Fluxo
show_name: false
show_state: false
show_icon: true
state_color: true
icon: mdi:water-check-outline
styles:
card:
- height: 360px
icon:
- color: |
[[[
const value = parseFloat(entity.state.replace(' L/min', '').replace(',', '.'));
if (value > 0) return '#006699';
if (value === 0) return '#ff9933';
return 'red';
]]]