Categorias

Sensor de vazamento de água com ESP32 e Home Assistant

Tutorial: monte um alarme de vazamento de água com ESP32, sensor de chuva/líquido e buzzer local. Código ESPHome testado e notificação no Home Assistant.

Vazamento de água que ninguém percebe a tempo é receita para conta alta, mofo e até dano estrutural. Um sensor de R$ 18 ligado a um ESP32 resolve isso: detecta o contato com água no chão (embaixo da pia, perto do aquecedor, atrás da máquina de lavar) e dispara notificação no Home Assistant e um alarme sonoro local — mesmo que o Wi-Fi caia justo na hora que você mais precisa saber.

Vazamentos pequenos e lentos são os mais traiçoeiros: não formam poça grande o suficiente para você notar de relance, mas ao longo de semanas apodrecem rodapé, mancham parede e inflam a conta de água sem ninguém entender por quê. Colocar um sensor de R$ 18 exatamente nos pontos de risco resolve esse ponto cego — e como o alarme soa localmente (via buzzer) além de notificar o celular, você fica coberto mesmo num momento em que o Wi-Fi da casa cair ou o celular estiver no silencioso.

Onde instalar: os pontos de risco mais comuns

Antes de sair comprando sensor para a casa toda, vale mapear onde um vazamento realmente aconteceria primeiro:

  • Embaixo da pia da cozinha e do banheiro — conexões de mangueira e sifão são os pontos mais comuns de gotejamento lento.
  • Atrás/embaixo da máquina de lavar roupa — mangueiras de entrada e saída de água sob pressão, e vibração da máquina pode afrouxar conexões com o tempo.
  • Perto do aquecedor de água (boiler ou passagem) — conexões hidráulicas expostas a variação de temperatura tendem a folgar mais rápido.
  • Embaixo ou ao lado da caixa d’água/reservatório, se for acessível — boia com defeito transborda sem ninguém perceber até secar o hidrômetro.
  • Perto do ar-condicionado split, no ponto de dreno — entupimento do dreno é causa comum de “vazamento” que na verdade é água de condensação acumulada.

Um único sensor cobre bem um ponto específico. Para cobertura completa da casa, o caminho é repetir o circuito (visto na seção de variações, mais abaixo) em cada ponto de risco — não adianta um sensor só na cozinha se o vazamento real acontecer no banheiro do outro lado da casa.

O que você vai montar

  • Um ESP32 rodando ESPHome, conectado ao seu Wi-Fi
  • Um sensor de chuva/líquido posicionado no chão, no ponto de risco de vazamento
  • Um buzzer ativo para alarme sonoro local, independente da notificação
  • Uma entidade binary_sensor (classe “umidade”) no Home Assistant, com automação de notificação

Lista de materiais

Produto Destaque Nota Preço Comprar
Placa ESP32 DevKit NodeMCU Wi-Fi/Bluetooth · ESP32 Cérebro do projeto ⭐ 4.6 R$ 45,00
Sensor de Chuva e Líquido com Cabo · Genérico Detecta o contato com água ⭐ 4.5 R$ 18,33
Módulo Buzzer Ativo KY-012 5V · Genérico Alarme sonoro local ⭐ 4.4 R$ 22,00

💲 Preços consultados em 07/07/2026, sujeitos a alteração. Confira o valor atual na loja.

Placa ESP32 DevKit NodeMCU

Ver no Mercado Livre

Como o sensor funciona

O sensor de chuva/líquido é uma placa com trilhas de cobre expostas em padrão de pente — quando seca, a resistência entre as trilhas é praticamente infinita (nenhuma corrente passa); quando a água toca as trilhas, ela conduz um pouco de corrente entre elas, e a placa entrega uma tensão analógica proporcional à quantidade de contato (poça grande = mais contato = sinal mais forte). É o mesmo princípio usado em sensores de chuva de estação meteorológica, só que aqui usado deitado no chão em vez de exposto ao tempo.

Por entregar um valor analógico (não só ligado/desligado), o ESP32 lê a tensão pelo ADC (conversor analógico-digital) e o ESPHome converte esse valor num sensor binário (seco/molhado) usando um limiar (threshold) configurável — se o sinal passar do limiar, dispara o alarme.

Esquema de ligação

ESP32 GPIO34 (ADC)  →  Saída analógica (AO) do sensor de chuva/líquido
ESP32 3V3            →  VCC do sensor de chuva/líquido
ESP32 GND            →  GND do sensor de chuva/líquido (e GND do buzzer)
ESP32 GPIO5          →  Pino de sinal (+) do buzzer ativo KY-012
Buzzer GND           →  GND do ESP32

Posicionamento: coloque o sensor deitado no chão, na área de maior risco de poça (embaixo da pia, atrás da máquina de lavar, perto do aquecedor de água). O cabo permite deixar o ESP32 em um ponto mais protegido, longe de qualquer risco de respingo direto.

Código ESPHome

# esphome/vazamento-agua.yaml
esphome:
  name: vazamento-agua

esp32:
  board: esp32dev
  framework:
    type: arduino

wifi:
  ssid: "SUA_REDE"
  password: "SUA_SENHA"

api:
  encryption:
    key: "CHAVE_GERADA_PELO_ESPHOME"

ota:
  password: "SUA_SENHA_OTA"

logger:

sensor:
  - platform: adc
    pin: GPIO34
    id: leitura_sensor_agua
    attenuation: 11db
    update_interval: 2s
    name: "Leitura bruta sensor de água"
    entity_category: diagnostic

binary_sensor:
  - platform: analog_threshold
    sensor_id: leitura_sensor_agua
    name: "Vazamento de Água"
    device_class: moisture
    threshold:
      upper: 1.5
      lower: 1.0
    filters:
      - delayed_on: 200ms
      - delayed_off: 10s
    on_press:
      - switch.turn_on: alarme_sonoro
    on_release:
      - switch.turn_off: alarme_sonoro

output:
  - platform: gpio
    pin: GPIO5
    id: saida_buzzer

switch:
  - platform: output
    output: saida_buzzer
    id: alarme_sonoro
    name: "Alarme sonoro vazamento"

O sensor do tipo adc lê a tensão bruta no pino GPIO34 continuamente (a cada 2 segundos). O binary_sensor do tipo analog_threshold converte essa leitura num estado seco/molhado: quando o valor sobe acima de upper (1.5V neste exemplo), considera “molhado”; só volta a “seco” quando cai abaixo de lower (1.0V) — essa diferença entre os dois limiares (histerese) evita que o sensor fique alternando de estado por causa de ruído elétrico bem na fronteira do limiar. Os filtros delayed_on/delayed_off seguram a mudança de estado por alguns instantes, para não disparar por um respingo passageiro nem desligar o alarme cedo demais.

Os valores upper/lower (1.5V/1.0V) são um ponto de partida — a tensão exata que seu sensor específico entrega variando com água depende do modelo e da umidade ambiente. Calibre na prática: com o ESPHome rodando, molhe levemente o sensor e observe o valor de “Leitura bruta sensor de água” nos logs ou no Home Assistant, depois ajuste upper/lower para os valores reais que você observou.

Automação no Home Assistant

automation:
  - alias: "Vazamento de água — notificar"
    trigger:
      - platform: state
        entity_id: binary_sensor.vazamento_de_agua
        to: "on"
    action:
      - service: notify.mobile_app_seu_celular
        data:
          title: "⚠️ Vazamento de água detectado!"
          message: "O sensor identificou água no local monitorado. Verifique agora."
      - service: light.turn_on
        target:
          entity_id: light.sala
        data:
          flash: long

A automação acima notifica o celular assim que o sensor mudar para “molhado”, e opcionalmente pisca uma luz da casa (útil se você estiver em outro cômodo e quiser um alerta visual imediato, não só no celular). Adapte o entity_id do notify para o app instalado no seu celular, e o light.sala para uma luz real da sua instalação (ou remova essa ação se preferir só a notificação).

Calibrando na prática (passo a passo)

A parte que mais gera dúvida neste projeto não é o código — é achar o par upper/lower certo para o seu sensor específico, já que a tensão de saída varia por fabricante e até por umidade ambiente do dia. Um processo confiável:

  1. Depois de flashear o ESPHome, deixe o sensor completamente seco e abra os logs do dispositivo (ou o painel do Home Assistant) observando o valor de “Leitura bruta sensor de água” por 1-2 minutos — anote o valor de repouso (normalmente próximo de 0V, mas alguns sensores flutuam um pouco).
  2. Pingue poucas gotas de água nas trilhas (não afogue) e observe até onde o valor sobe — esse é o seu “vazamento leve”.
  3. Despeje água suficiente para cobrir as trilhas por completo (simulando uma poça real) e observe o valor máximo.
  4. Defina lower um pouco acima do valor de repouso seco (para não disparar por umidade do ar) e upper entre o valor de “gotas leves” e o de “poça completa” — isso faz o alarme disparar já nas primeiras gotas, sem esperar virar poça grande.
  5. Seque bem o sensor com papel toalha antes de reinstalar no local definitivo — resíduo de água doce costuma evaporar rápido, mas água com sabão/produto de limpeza pode deixar resíduo condutor residual que atrapalha a leitura de repouso.

Variações do projeto

  • Monitorar vários pontos com um ESP32 só: o ESP32 tem múltiplos pinos ADC disponíveis (GPIO32, GPIO33, GPIO35, GPIO36, entre outros, dependendo da placa). Repita o par sensor (adc) + binary_sensor (analog_threshold) para cada sensor físico adicional, cada um com seu próprio id e name — o Home Assistant vai listar cada ponto monitorado como uma entidade independente, então você sabe exatamente qual cômodo disparou o alerta.
  • Versão a pilha/bateria (sem fio): para pontos sem tomada por perto, um ESP32 alimentado por poucas pilhas ou poucas baterias 18650 funciona, mas o consumo do Wi-Fi ligado o tempo todo reduz bastante a autonomia — vale pesquisar o modo deep_sleep do ESPHome, que liga o rádio só em intervalos, se a bateria for uma restrição real no seu caso.
  • Alerta multicanal: além da notificação push e do buzzer local, dá para somar uma automação que acende uma lâmpada inteligente em vermelho, manda mensagem para um grupo de WhatsApp (via integração de terceiros) ou aciona uma campainha existente — o binary_sensor já criado serve de gatilho para qualquer ação que o Home Assistant suportar.
  • Combinar com desligamento automático: para quem quer ir além do alerta e fechar o registro de água sozinho, o próximo passo natural é somar uma eletroválvula (compatível com a tubulação) acionada por um relé — mas isso é um projeto à parte, que exige atenção à pressão da rede e ao ponto certo de instalação hidráulica.

Dicas e troubleshooting

  • O sensor não detecta a água mesmo molhado: confira a ligação do AO ao GPIO34 e teste a leitura bruta antes de mexer no threshold — se a “Leitura bruta” não mudar nada ao molhar o sensor, o problema é na ligação, não no limiar.
  • O alarme dispara sozinho sem motivo aparente: normalmente é ruído elétrico ou threshold configurado baixo demais — aumente ligeiramente o valor de upper e confira se o delayed_on de 200ms é suficiente para filtrar picos rápidos.
  • Quero silenciar o buzzer sem desligar o monitoramento: adicione um segundo switch (tipo template) que force alarme_sonoro para desligado mesmo com o sensor ativo, e exponha esse switch como um botão “silenciar” separado no Home Assistant.
  • Quero monitorar mais de um ponto: repita os blocos sensor (com outro pino ADC, como GPIO35 ou GPIO32) e binary_sensor para cada sensor extra, dando nomes diferentes a cada um.

Dúvidas sobre algum produto? Fale com a gente.

Resumo dos produtos avaliados

#1
Placa ESP32 DevKit NodeMCU Wi-Fi/Bluetooth

ESP32

Placa ESP32 DevKit NodeMCU Wi-Fi/Bluetooth

4.6

R$ 45,00 · preço em 07/07/2026

Pontos positivos

  • Wi-Fi nativo — notificação chega no celular sem gateway extra
  • ADC embutido lê o sensor analógico direto, sem placa conversora

Pontos negativos

  • Exige noção básica de eletrônica de baixa tensão para as ligações
#2
Sensor de Chuva e Líquido (Água) com Cabo para Arduino/ESP32

Genérico

Sensor de Chuva e Líquido (Água) com Cabo para Arduino/ESP32

4.5

R$ 18,33 · preço em 07/07/2026

Pontos positivos

  • Barato e fácil de achar — o mesmo sensor usado em estação meteorológica DIY
  • Saída analógica permite calibrar a sensibilidade (poça grande vs poucas gotas)

Pontos negativos

  • Placa fica exposta ao contato com água — não é à prova d’água para submersão
#3
Módulo Buzzer Ativo KY-012 5V

Genérico

Módulo Buzzer Ativo KY-012 5V

4.4

R$ 22,00 · preço em 07/07/2026

Pontos positivos

  • Alarme sonoro local funciona mesmo se o Wi-Fi cair — ninguém depende só da notificação
  • Liga direto num pino digital do ESP32, sem circuito adicional

Pontos negativos

  • Buzzer ativo é sempre no mesmo tom/volume — sem controle de intensidade