Automação IoT

Guia de Automação com IoT: Automatizando Casas, Edifícios, Fazendas e Energia com MQTT

Como a automação com IoT funciona em casas, edifícios, fazendas e sistemas de energia, com uma arquitetura reutilizável de sensores, broker e regras, exemplos funcionais em Home Assistant e Python e as armadilhas a evitar.

Diagrama de automação com IoT conectando sensores de uma casa, de um edifício, de uma estufa e solares, por meio de um broker MQTT, a regras de automação
Rode isso no seu próprio broker MQTTTenha um broker MQTT privado e gerenciado no plano Free e comece com exemplos de código prontos.
Teste grátis Exemplos de código Sem cartão de crédito

Automação com IoT significa deixar que sensores, regras e atuadores cuidem das decisões rotineiras em um espaço físico, desde apagar as luzes de um escritório vazio até abrir uma válvula de irrigação quando o solo está seco. Este guia apresenta uma única arquitetura que funciona para casas, edifícios, fazendas e sistemas de energia, mostra automações funcionais em Home Assistant e Python sobre MQTT e explica como manter tudo confiável e seguro.

O Que É Automação com IoT e Por Que o MQTT Está no Centro

Toda automação, por mais complexa que seja, segue o mesmo ciclo: perceber, decidir, agir, confirmar. Um sensor mede algo, uma regra decide se é preciso agir, um atuador faz o trabalho e um relatório de estado confirma que aquilo aconteceu.

Os sistemas de automação tradicionais construíam esse ciclo dentro do controlador de um único fornecedor. Isso funciona até você querer que um sensor de presença Zigbee controle um relé Wi-Fi, ou que a geração de um inversor solar decida quando um aquecedor de água deve funcionar. A automação com IoT divide o ciclo em partes independentes que conversam por uma camada de mensageria comum, e essa camada quase sempre é o MQTT.

O MQTT se encaixa porque:

  • O publish/subscribe desacopla os dispositivos da lógica. Um sensor publica uma única vez; qualquer número de regras, dashboards e loggers pode assinar.
  • É leve o suficiente para microcontroladores como o ESP32 e o ESP8266, e tem suporte nativo em Tasmota, ESPHome, Zigbee2MQTT, dispositivos Shelly e Home Assistant.
  • Retained messages permitem que um motor de regras que reinicia saiba imediatamente o estado atual de cada dispositivo.
  • Mensagens de Last Will anunciam quando um dispositivo fica offline, para que as automações possam falhar de forma segura.

Se o broker é novidade para você, comece por o que um broker MQTT faz e depois volte aqui.

A Arquitetura de Automação com IoT em Quatro Camadas

A mesma estrutura vale para automatizar um apartamento, um prédio comercial de 20 andares ou uma estufa.

Camada Papel Ferramentas comuns
Dispositivos Perceber e agir: sensores, relés, válvulas, medidores, termostatos ESP32 com ESPHome, Tasmota, Shelly, Zigbee via Zigbee2MQTT, nós LoRaWAN
Mensageria Transportar estado e comandos entre tudo Broker MQTT, local ou na nuvem
Lógica Decidir o que fazer: regras, agendamentos, cenas Home Assistant, Node-RED, openHAB, serviços Python
Interface Mostrar o estado e permitir que as pessoas intervenham Dashboards, apps móveis, assistentes de voz

Manter essas camadas separadas é o que torna o sistema sustentável. Você pode trocar um sensor Zigbee por um Wi-Fi, ou mover as regras do Home Assistant para o Node-RED, sem refazer o resto, desde que os topics continuem os mesmos.

Broker local, broker na nuvem ou ambos?

Um broker em um Raspberry Pi local mantém as automações funcionando quando a internet cai, o que importa para iluminação e aquecimento. Um broker na nuvem torna os dispositivos acessíveis de qualquer lugar, conecta locais que não estão na mesma rede (uma fazenda com vários campos, uma empresa com vários prédios) e elimina o trabalho de atualizar e fazer backup de um broker por conta própria. Muitas instalações combinam os dois: regras críticas em tempo ficam locais, enquanto monitoramento, controle remoto e coordenação entre locais passam por um broker MQTT na nuvem. O tutorial Home Assistant com um broker MQTT externo mostra essa configuração passo a passo.

Projeto de Topics para Automação

Nomes de topics claros tornam as regras legíveis e evitam interferências acidentais entre dispositivos. Um layout prático:

<site>/<area>/<device>/<channel>
<site>/<area>/<device>/<channel>/set      (commands)

home/livingroom/thermostat/temperature
home/livingroom/thermostat/setpoint/set
office/floor3/zone-b/occupancy
farm/greenhouse1/soil/moisture
farm/greenhouse1/valve/state
energy/house/solar/power

Regras práticas que economizam horas de depuração:

  1. Separe topics de estado (o que o dispositivo informa) de topics de comando (o que você pede que ele faça), normalmente com o sufixo /set.
  2. Publique o estado como retido para que dashboards e motores de regras o vejam instantaneamente após um reinício.
  3. Use payloads JSON com unidades e timestamps quando um dispositivo informar vários valores.
  4. Dê a cada dispositivo um topic status com um Last Will offline.

O guia de estrutura de topics MQTT para casa inteligente se aprofunda no assunto, incluindo como lidar com grupos e cenas.

Automação com IoT por Ambiente

A arquitetura permanece constante, mas cada ambiente tem suas próprias prioridades.

Casas

A automação residencial é a área mais madura. O Home Assistant é a camada de lógica habitual, com o MQTT fazendo a ponte com dispositivos de vários ecossistemas: sensores Zigbee via Zigbee2MQTT, tomadas Wi-Fi com firmware Tasmota e placas ESP32 personalizadas construídas com ESPHome. As automações típicas são iluminação por presença, agendamentos de aquecimento, alertas de vazamento e notificações. Uma armadilha comum é depender da nuvem para coisas que precisam funcionar offline, como um interruptor de luz; mantenha essas coisas locais.

Edifícios comerciais

A automação predial se concentra em HVAC, iluminação, ocupação e qualidade do ar, geralmente em muitas zonas. Os sistemas existentes falam BACnet, KNX ou Modbus, e gateways os traduzem para MQTT para que aplicações mais novas possam usar os dados sem mexer no sistema de gerenciamento predial. Leia automação predial com MQTT para a arquitetura e BACnet para MQTT para a etapa do gateway. HVAC e iluminação guiados por ocupação são os ganhos rápidos clássicos, porque salas vazias são fáceis de detectar.

Fazendas e estufas

A automação agrícola lida com longas distâncias, condições adversas e sensores alimentados por bateria. Umidade do solo, temperatura do ar, umidade relativa e níveis de água comandam irrigação, ventilação e sombreamento. O LoRaWAN é comum no campo, com network servers como o The Things Network encaminhando os uplinks via MQTT, como explicado em The Things Network e MQTT. Um broker na nuvem é especialmente útil aqui, porque campos e estufas raramente compartilham uma rede local. O guia de IoT para agricultura inteligente e o tutorial de automação de estufas cobrem os detalhes.

Energia

A automação de energia equilibra geração, armazenamento e consumo: ligar um aquecedor de água quando a geração solar está alta, carregar um carro elétrico fora do horário de pico ou desligar cargas não críticas. Inversores, baterias e medidores inteligentes muitas vezes expõem Modbus ou APIs locais que pequenas pontes publicam no MQTT. Em usinas solares e plantas industriais maiores, esses mesmos topics podem alimentar um gêmeo digital do sistema de energia. Veja monitoramento de energia residencial com MQTT e monitoramento de inversores solares para montagens concretas.

Mão na Massa: Uma Automação de Irrigação por Umidade do Solo

Vamos construir um ciclo completo de perceber, decidir e agir. Um dispositivo publica a umidade do solo, o Home Assistant decide quando irrigar e uma válvula informa seu estado. Você pode testar tudo no broker.connectmq.com, o servidor MQTT público (gratuito) do ConnectMQ, antes de conectar hardware real. Escolha um prefixo único como connectmq/demo/k7x2p9 e use-o em tudo abaixo; o servidor MQTT público pode ser lido por qualquer pessoa, então ali só cabem dados de teste e protótipos, nunca dados de produção.

Passo 1: Simule o sensor e a válvula pela linha de comando

Publique uma leitura de umidade retida:

mosquitto_pub -h broker.connectmq.com -p 1883 -i soil-k7x2p9 \
  -t "connectmq/demo/k7x2p9/greenhouse1/soil" -r \
  -m '{"moisture": 42.5, "tempC": 19.8}'

Acompanhe tudo sob o prefixo em um segundo terminal:

mosquitto_sub -h broker.connectmq.com -p 1883 -i watch-k7x2p9 \
  -t "connectmq/demo/k7x2p9/#" -v

Passo 2: Defina as entidades no Home Assistant

Adicione a integração MQTT no Home Assistant (Configurações, Dispositivos e serviços, Adicionar integração, MQTT) com o broker broker.connectmq.com, a porta 1883 e um client ID único para testes. Depois declare o sensor e a válvula no configuration.yaml:

mqtt:
  sensor:
    - name: "Greenhouse Soil Moisture"
      unique_id: greenhouse1_soil_moisture
      state_topic: "connectmq/demo/k7x2p9/greenhouse1/soil"
      unit_of_measurement: "%"
      value_template: "{{ value_json.moisture }}"
  switch:
    - name: "Greenhouse Valve"
      unique_id: greenhouse1_valve
      command_topic: "connectmq/demo/k7x2p9/greenhouse1/valve/set"
      state_topic: "connectmq/demo/k7x2p9/greenhouse1/valve/state"
      payload_on: "ON"
      payload_off: "OFF"
      retain: false

Passo 3: Escreva a regra de automação

automation:
  - alias: "Irrigate greenhouse when soil is dry"
    mode: single
    triggers:
      - trigger: numeric_state
        entity_id: sensor.greenhouse_soil_moisture
        below: 30
        for: "00:05:00"
    conditions:
      - condition: time
        after: "06:00:00"
        before: "20:00:00"
    actions:
      - action: switch.turn_on
        target:
          entity_id: switch.greenhouse_valve
      - delay: "00:10:00"
      - action: switch.turn_off
        target:
          entity_id: switch.greenhouse_valve

A cláusula for ignora quedas breves causadas por ruído do sensor, a condição de horário evita irrigar à noite e o atraso fixo garante que a válvula feche mesmo que a leitura de umidade pare de chegar. Publique um valor de umidade 25 e mantenha-o por cinco minutos; você verá ON aparecer no topic valve/set na janela do mosquitto_sub, seguido de OFF dez minutos depois. Um controlador de válvula real assinaria valve/set e publicaria sua posição efetiva em valve/state.

A mesma regra sem o Home Assistant

Nem todo local roda o Home Assistant. O Node-RED (veja o tutorial de Node-RED com MQTT) ou um pequeno serviço Python podem hospedar a mesma lógica. Esta versão usa paho-mqtt 2.x e adiciona histerese para que a válvula não fique ligando e desligando em torno do limite:

import json
import threading
import uuid

import paho.mqtt.client as mqtt

PREFIX = "connectmq/demo/k7x2p9/greenhouse1"
DRY, WET, MAX_RUN_S = 30.0, 45.0, 600
valve_on = False
timer = None


def set_valve(client, on):
    global valve_on, timer
    valve_on = on
    client.publish(f"{PREFIX}/valve/set", "ON" if on else "OFF", qos=1)
    if timer:
        timer.cancel()
    if on:  # segurança: nunca funcionar por mais de MAX_RUN_S
        timer = threading.Timer(MAX_RUN_S, set_valve, args=(client, False))
        timer.start()
    print("valve", "ON" if on else "OFF")


def on_connect(client, userdata, flags, reason_code, properties):
    client.subscribe(f"{PREFIX}/soil", qos=1)


def on_message(client, userdata, msg):
    moisture = json.loads(msg.payload)["moisture"]
    if not valve_on and moisture < DRY:
        set_valve(client, True)
    elif valve_on and moisture > WET:
        set_valve(client, False)


client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id=f"irrigation-{uuid.uuid4().hex[:8]}")
client.on_connect = on_connect
client.on_message = on_message
client.connect("broker.connectmq.com", 1883, keepalive=30)
client.loop_forever()

Checklist de Projeto de Automação com IoT

Use esta lista antes de confiar a uma automação qualquer coisa que importe:

  1. Falha segura. Decida o que cada atuador deve fazer se o motor de regras, o broker ou o sensor desaparecer. Válvulas fecham, aquecedores desligam, portas permanecem trancadas.
  2. Debounce e histerese. Use janelas de tempo ou limites separados para ligar e desligar, para que o ruído não cause comutação rápida.
  3. Confirme o estado. Comande o dispositivo em /set, mas baseie dashboards e regras subsequentes no state que ele informa.
  4. Trate dispositivos offline. Assine os topics status de Last Will e gere alertas quando um sensor crítico ficar em silêncio.
  5. Mantenha os comandos manuais. As pessoas precisam conseguir sobrepor a automação localmente, e as regras devem respeitar isso.
  6. Escolha o QoS deliberadamente. QoS 1 para comandos e alarmes, QoS 0 para leituras frequentes. O artigo sobre níveis de QoS MQTT explica por quê.
  7. Proteja tudo. Use TLS, credenciais únicas por dispositivo ou gateway, e nunca exponha um broker sem autenticação. O checklist de boas práticas de segurança MQTT se aplica diretamente.
  8. Registre as decisões. Publique em um topic de log o que a regra fez e por quê, para conseguir depurar "por que o aquecedor ligou às 3 da manhã?".

Testando e Mantendo as Automações ao Longo do Tempo

Uma automação que funciona no primeiro dia pode quebrar silenciosamente meses depois: a bateria de um sensor acaba, uma atualização de firmware renomeia uma entidade ou um dispositivo recebe um novo endereço IP e nunca mais se reconecta. Trate as automações como qualquer outro software do qual você depende.

Comece testando as regras com mensagens simuladas antes que elas toquem atuadores reais. Publicar pela linha de comando um valor falso de umidade baixa ou um evento falso de ocupação é a forma mais rápida de ver se uma regra dispara, e não custa nada. Mantenha uma pequena lista dessas mensagens de teste para cada regra importante, para poder repeti-las após atualizações.

Em seguida, acompanhe a saúde das entradas, não apenas das saídas. Uma regra de aquecimento que depende de um sensor de temperatura é tão boa quanto a última leitura desse sensor. Acompanhe o tempo desde a última publicação de cada dispositivo crítico e dispare um alerta quando ele passar de alguns intervalos de envio. Topics status retidos com Last Will facilitam isso, porque um dispositivo que travou se anuncia sozinho.

Por fim, revise as automações algumas vezes por ano. Remova regras que ninguém lembra de ter criado, confira se os limites ainda correspondem à estação do ano ou à cultura e confirme que os comandos manuais ainda funcionam. Um conjunto pequeno e bem compreendido de regras vale mais do que um grande em que ninguém confia.

Armadilhas Comuns

  • Regras espalhadas por muitas ferramentas. Se parte da lógica está no firmware de uma tomada, parte no Home Assistant e parte no Node-RED, ninguém consegue prever o comportamento. Escolha um motor de regras principal.
  • Comandos retidos. Um ON retido em um topic de comando vai ligar o dispositivo de novo toda vez que ele se reconectar. Retenha o estado, não os comandos.
  • Client IDs compartilhados. Dois clientes com o mesmo ID derrubam um ao outro do broker em loop. Torne cada ID único.
  • Caminhos críticos que dependem só da nuvem. Mantenha locais as regras relevantes para a segurança e críticas para o conforto, e use a nuvem para monitoramento e acesso remoto.
  • Ignorar a escolha do protocolo. Matter, Zigbee e Wi-Fi têm seus próprios trade-offs; Matter vs MQTT explica como eles podem coexistir.

Escalando a Automação com IoT entre Locais com a ConnectMQ

Assim que você tiver mais de um local, ou precisar de acesso remoto sem abrir portas no roteador, um broker MQTT gerenciado se torna o hub mais simples. A ConnectMQ oferece a todos os locais o mesmo endpoint via TLS na porta 8883, ou WebSocket seguro na porta 8084 para dashboards no navegador, de modo que instâncias do Home Assistant, fluxos do Node-RED, gateways e dispositivos em lugares diferentes se encontram em um único broker. O explorador de topics em tempo real do portal ajuda você a conferir o que os dispositivos estão realmente publicando, e regras de alerta por limite com registro de alertas podem avisar quando uma leitura ultrapassa um limite. A lógica de automação em si continua no Home Assistant, no Node-RED ou no seu próprio serviço, conectados como clientes MQTT comuns.

O plano Serverless (Free) suporta até 25 conexões, o que cobre com folga uma casa típica ou uma pequena estufa de hortaliças. Edifícios maiores e implantações em vários locais podem migrar para o plano Serverless (Paid), com até 1.000 conexões, ou para um cluster dedicado. Compare as opções na visão geral sobre brokers MQTT gerenciados.

Comece com a ConnectMQ

Crie protótipos das suas automações no servidor MQTT público (gratuito) e migre para um broker privado quando os dispositivos reais entrarem em operação. Cadastre-se em app.connectmq.com no plano Serverless (Free), sem cartão de crédito, crie um broker e copie o nome de usuário, a senha e o client ID gerados para o Home Assistant, o Node-RED ou os seus dispositivos. Mude a porta para 8883 com TLS e suas regras continuam funcionando sem alterações.

Perguntas frequentes

Preciso do Home Assistant para fazer automação com IoT?

Não. O Home Assistant é a camada de lógica mais comum em residências, mas o Node-RED, o openHAB ou um pequeno serviço em Python ou Node.js conectado ao mesmo broker MQTT podem executar regras idênticas. O broker e os topics continuam os mesmos, seja qual for a sua escolha.

O broker da minha automação deve ser local ou na nuvem?

Execute localmente as regras críticas em tempo e relevantes para a segurança, para que funcionem durante quedas de internet. Use um broker na nuvem para acesso remoto, configurações com vários locais e monitoramento, ou combine os dois, com regras locais e visibilidade na nuvem.

A ConnectMQ executa minhas regras de automação?

Não. A ConnectMQ é o hub de mensageria e oferece regras de alerta por limite para monitoramento, mas a lógica de automação roda em ferramentas como Home Assistant, Node-RED ou os seus próprios serviços, que se conectam ao broker como clientes MQTT.

Por que meu dispositivo liga toda vez que se reconecta?

Provavelmente você publicou o comando com a flag retain. O broker armazena as retained messages e as entrega a cada novo subscriber, então retenha os topics de estado, mas nunca os topics de comando.

Posso testar automação com IoT sem hardware?

Sim. Simule sensores com o mosquitto_pub no broker.connectmq.com, usando um client ID e um prefixo de topic únicos, e acompanhe os comandos resultantes com o mosquitto_sub antes de conectar dispositivos reais.

Artigos relacionados

Guia de Configuração do Zigbee2MQTT: do Coordenador ao Painel

Instale o Zigbee2MQTT com Docker, configure o coordenador e a conexão MQTT, pareie e renomeie dispositivos, controle-os via MQTT e veja seus estados em um painel, testando primeiro no servidor MQTT público (gratuito).

8 min de leitura

Todos os artigos →

Seu broker MQTT privado está a poucos cliques de distância

Crie uma conta, receba as credenciais do seu broker e conecte seu primeiro dispositivo — sem servidores para instalar, atualizar ou escalar.