Categorias

Automatize as cortinas com Home Assistant e ESP32

Como automatizar cortinas e persianas com Home Assistant: módulo Shelly para motor AC ou ESP32 DIY. Código e YAML inclusos.

Automatizar cortinas é um dos projetos que mais impactam o conforto da casa inteligente. Acordar com a luz do sol entrando gradualmente, fechar automaticamente quando o sol bate na tela de tarde, ou simular presença quando você viaja — tudo isso é possível com o Home Assistant.

Este tutorial cobre duas abordagens, da mais simples à mais maker:

  1. Persiana motorizada AC existente + módulo Shelly — sem trocar motor, sem obra
  2. Cortina manual + ESP32 e motor DC — DIY completo, para qualquer cortina

E os motores prontos Zigbee/Wi-Fi? Motores de eixo (Zemismart, Moes e similares) são uma boa opção para cortina de rolo — mas a oferta com link confiável no Mercado Livre muda constantemente. Pesquise “motor cortina zigbee” e priorize anúncios que citem Zigbee 3.0 ou Tuya. O YAML da Abordagem 1 funciona igual para eles.


Abordagem 1 — Persiana AC + Shelly (a mais simples)

Se a sua persiana já tem motor 110/220V com interruptor de subir/descer (comum em persianas de PVC e toldos), você não precisa trocar nada: um módulo Shelly Plus 1PM (ou o Shelly 2PM, com dois canais para subir/descer) instalado atrás do interruptor transforma a persiana em uma entidade cover do Home Assistant — confira o preço atual no link.

A instalação é elétrica básica (desligue o disjuntor): o Shelly fica entre o interruptor e o motor, dentro da caixinha 4x2.

YAML para Home Assistant (Shelly em modo cover):

# O Shelly 2PM em modo "cover" expõe a entidade automaticamente
# via integração nativa Shelly. Automações de exemplo:

automation:
  - alias: "Persiana — fechar no calor"
    trigger:
      - platform: numeric_state
        entity_id: sensor.temperatura_sala
        above: 27
    condition:
      - condition: sun
        after: sunrise
        before: sunset
    action:
      - service: cover.close_cover
        entity_id: cover.persiana_sala

  - alias: "Persiana — abrir no nascer do sol"
    trigger:
      - platform: sun
        event: sunrise
        offset: "+00:30:00"
    action:
      - service: cover.set_cover_position
        entity_id: cover.persiana_sala
        data:
          position: 50  # Abre 50% — luz sem sol direto

Abordagem 2 — ESP32 + Motor DC (DIY completo)

Para cortinas de trilho ou rolo manual, a solução maker é um motor DC controlado por ESP32 rodando ESPHome.

Componentes

Produto Destaque Preço Comprar
ESP32 DevKitC Wroom-32U · Espressif Cérebro do projeto R$ 109,90

Demais materiais (procure no Mercado Livre — são itens genéricos de bancada):

  • Motor DC 12V com caixa de redução (ou motor de passo NEMA 17)
  • Driver de motor L298N (~R$ 15)
  • Fonte 12V 2A
  • 2 chaves fim-de-curso (detectar posição totalmente aberto/fechado)
  • Polia ou engrenagem impressa em 3D para acoplar ao cordão da cortina
Ver no Mercado Livre

Esquema de ligação

ESP32 GPIO 25  →  L298N IN1 (direção A)
ESP32 GPIO 26  →  L298N IN2 (direção B)
ESP32 GPIO 27  →  L298N ENA (PWM — velocidade)
ESP32 GPIO 32  →  Fim de curso FECHADO (pullup interno)
ESP32 GPIO 33  →  Fim de curso ABERTO (pullup interno)
Motor DC       →  L298N OUT1/OUT2
Fonte 12V      →  L298N VS (alimentação do motor)

Código ESPHome (YAML — mais simples que Arduino)

# esphome/cortina-sala.yaml
esphome:
  name: cortina-sala
  platform: ESP32
  board: esp32dev

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

api:
  encryption:
    key: "CHAVE_GERADA_PELO_ESPHOME"

ota:
  password: "SUA_SENHA_OTA"

output:
  - platform: esp32_ledc
    pin: GPIO27
    id: motor_pwm
    frequency: 1000 Hz

  - platform: gpio
    pin: GPIO25
    id: motor_dir_a

  - platform: gpio
    pin: GPIO26
    id: motor_dir_b

binary_sensor:
  - platform: gpio
    pin:
      number: GPIO32
      mode: INPUT_PULLUP
      inverted: true
    id: fim_curso_fechado
    name: "Cortina — fim de curso fechado"

  - platform: gpio
    pin:
      number: GPIO33
      mode: INPUT_PULLUP
      inverted: true
    id: fim_curso_aberto
    name: "Cortina — fim de curso aberto"

cover:
  - platform: time_based
    name: "Cortina Sala"
    open_action:
      - output.set_level:
          id: motor_pwm
          level: 80%
      - output.turn_on: motor_dir_a
      - output.turn_off: motor_dir_b
    open_duration: 25s
    close_action:
      - output.set_level:
          id: motor_pwm
          level: 80%
      - output.turn_off: motor_dir_a
      - output.turn_on: motor_dir_b
    close_duration: 25s
    stop_action:
      - output.turn_off: motor_dir_a
      - output.turn_off: motor_dir_b
      - output.set_level:
          id: motor_pwm
          level: 0%

Ajuste open_duration e close_duration para o tempo real que sua cortina leva para abrir e fechar completamente — meça na prática.

Automações recomendadas no HA

# Simular presença: aleatoriza a abertura entre 7h e 8h
automation:
  - alias: "Cortina — abertura aleatória manhã"
    trigger:
      - platform: time
        at: "07:00:00"
    action:
      - delay:
          minutes: "{{ range(0, 60) | random }}"
      - service: cover.open_cover
        entity_id: cover.cortina_sala

  # Fechar ao pôr do sol
  - alias: "Cortina — fechar ao pôr do sol"
    trigger:
      - platform: sun
        event: sunset
    action:
      - service: cover.close_cover
        entity_id: cover.cortina_sala

Qual abordagem escolher?

  • Persiana motorizada AC já instalada: Shelly atrás do interruptor — 30 minutos de trabalho
  • Cortina de rolo manual + quer comprar motor pronto: motor Zigbee + coordenador (pesquise a oferta atual)
  • Cortina de trilho, orçamento apertado ou espírito maker: ESP32 + motor DC + ESPHome
  • Já usa ESPHome em outros projetos: a Abordagem 2 é a escolha natural

Resumo dos produtos avaliados

#1
ESP32 DevKitC Wroom-32U

Espressif

ESP32 DevKitC Wroom-32U

R$ 109,90 · preço em 10/06/2026

Pontos positivos

  • Wi-Fi nativo para integração com HA via ESPHome
  • Flexível: funciona com qualquer motor DC ou de passo
  • Versão com nota fiscal e antena externa

Pontos negativos

  • Requer conhecimento básico de eletrônica e programação