Gêmeo digital

Gêmeo Digital de HVAC para Otimização Energética: AHUs e Chillers via MQTT

Como construir um gêmeo digital de HVAC que espelha unidades de tratamento de ar e chillers em tempo real, usando gateways BACnet para MQTT, um broker MQTT na nuvem e análises simples em Python para otimização energética.

Dashboard de gêmeo digital de HVAC mostrando uma unidade de tratamento de ar e uma central de água gelada com dados de energia ao vivo
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

Um gêmeo digital de HVAC é um modelo de software vivo das suas unidades de tratamento de ar, chillers e bombas, alimentado por dados reais de sensores, para que você veja como a central se comporta e onde ela desperdiça energia. Neste artigo você vai projetar um de ponta a ponta: extrair pontos de controladores BACnet, publicá-los via MQTT, estruturar a árvore de topics e executar análises que encontram aquecimento e resfriamento simultâneos, delta-T baixo no chiller e setpoints à deriva. Tudo usa ferramentas abertas e um broker MQTT padrão.

Por Que o HVAC Combina Naturalmente com um Gêmeo Digital

O aquecimento, ventilação e ar-condicionado costuma ser um dos maiores consumidores de energia em edifícios comerciais, como torres corporativas, shoppings e hospitais em cidades quentes como São Paulo ou Manaus, e grande parte do desperdício é invisível. Uma válvula com vazamento, um damper do economizador travado fechado ou um chiller operando com uma diferença de temperatura ruim raramente disparam um alarme no sistema de gerenciamento predial (BMS). O edifício continua confortável enquanto o medidor de energia sobe silenciosamente.

Um gêmeo digital torna esses problemas visíveis combinando três coisas:

  1. Dados ao vivo de todos os pontos relevantes: temperaturas, pressões, posições de válvulas e dampers, velocidades de ventiladores e potência.
  2. Um modelo de como cada ativo deveria se comportar: delta-T de projeto, potência esperada do ventilador em determinada velocidade, a sequência de operação.
  3. Uma lógica de comparação que sinaliza a diferença entre o comportamento esperado e o real.

O gêmeo não substitui o BMS. O BMS continua controlando a central; o gêmeo observa, analisa e recomenda. Se você é novo no conceito, comece pelo nosso guia principal sobre tecnologia de gêmeo digital.

Arquitetura de Referência

BACnet/IP controllers (AHU, chiller, VAV, meters)
        |
        |  BACnet ReadProperty / COV
        v
BACnet-to-MQTT gateway (edge PC, industrial gateway or Node-RED)
        |
        |  MQTT over TLS, port 8883
        v
Cloud MQTT broker (ConnectMQ)
        |
        +--> Python analytics service (subscriber) -> publishes KPIs and faults
        +--> Dashboards and 3D views (WebSocket, port 8084)
        +--> Time-series database via Telegraf or a custom subscriber

O gateway é o único componente que fala BACnet. Tudo acima dele fala MQTT, o que desacopla análises, dashboards e armazenamento da rede do edifício. Vários gateways comerciais e opções open source conseguem fazer polling de objetos BACnet e publicá-los como mensagens MQTT; Node-RED com um nó BACnet da comunidade é uma escolha popular para pilotos.

Mantenha o gateway somente leitura no início. Gravar setpoints de volta no BMS é possível, mas deve vir depois, quando as recomendações do gêmeo tiverem conquistado confiança, e com um controle de mudanças adequado.

Pontos a Coletar

Você não precisa de todos os pontos do BMS. Comece pelos que determinam energia e conforto:

Ativo Pontos principais O que revelam
Unidade de tratamento de ar Temperatura do ar de insuflamento, do ar de retorno, do ar de mistura e do ar externo Desempenho do economizador, aquecimento e resfriamento simultâneos
Unidade de tratamento de ar Posições das válvulas de resfriamento e de aquecimento, posição do damper de ar externo Válvulas com vazamento, dampers travados
Unidade de tratamento de ar Velocidade e potência do ventilador de insuflamento, pressão estática no duto, pressão diferencial do filtro Energia do ventilador, oportunidades de reset da pressão estática, saturação do filtro
Chiller Temperatura de alimentação e retorno da água gelada, temperaturas da água de condensação, potência (kW), status Eficiência (kW por TR), síndrome do delta-T baixo
Bombas Velocidade, potência, pressão diferencial Bombeamento excessivo, válvulas competindo entre si
Zonas e VAVs Temperatura da zona, setpoint, vazão de ar, posição do damper Zonas problemáticas que comandam todo o sistema

Um intervalo de polling prático para a maioria desses pontos é de um minuto. Valores que mudam rapidamente, como a potência do ventilador, podem usar assinaturas de mudança de valor (COV) do lado BACnet, com uma banda morta para que o gateway não inunde o broker.

Design de Topics para um Gêmeo Digital de HVAC

Uma hierarquia de topics consistente é o que permite que o gêmeo, os dashboards e as análises encontrem os dados sem configuração ponto a ponto. Uma estrutura no estilo ISA-95 também funciona bem para edifícios: empresa, site, área, ativo.

acme/hq-building/plant/chiller-1/telemetry
acme/hq-building/plant/chwp-1/telemetry
acme/hq-building/floor-3/ahu-3/telemetry
acme/hq-building/floor-3/ahu-3/faults
acme/hq-building/floor-3/ahu-3/kpi

Agrupe os pontos relacionados de um ativo em uma única mensagem JSON, publicada no intervalo de polling:

{
  "ts": "2026-10-16T09:42:00Z",
  "sat": 13.1,
  "rat": 23.4,
  "mat": 17.9,
  "oat": 9.6,
  "clg_valve": 42,
  "htg_valve": 18,
  "oa_damper": 20,
  "fan_speed": 78,
  "fan_kw": 11.2,
  "filter_dp": 185
}

Os chillers seguem o mesmo padrão, com campos como chws e chwr (temperatura de alimentação e de retorno da água gelada), flow_lps (vazão em litros por segundo), kw e status, dos quais as análises abaixo dependem.

Usar uma mensagem por ativo, em vez de uma mensagem por ponto, mantém os carimbos de tempo alinhados, o que importa quando suas regras comparam vários valores no mesmo instante. A ConnectMQ reconhece hierarquias de topics no estilo ISA-95, então a visão de dispositivos do portal agrupa os ativos por nível. Nosso artigo sobre gêmeos digitais ISA-95 explica o modelo de nomenclatura em profundidade.

Análises que Encontram Desperdício de Energia

O valor do gêmeo vem de regras simples e explicáveis. O serviço Python abaixo assina todas as AHUs e chillers do edifício, aplica três verificações clássicas e publica os resultados de volta no MQTT, onde dashboards e regras de alerta podem utilizá-los.

import json
import time
import paho.mqtt.client as mqtt

BROKER = "broker.connectmq.com"
PORT = 8883
SITE = "acme/hq-building"

DESIGN_CHW_DELTA_T = 5.5      # graus C, dos dados de projeto do chiller
VALVE_OVERLAP_PCT = 10        # ambas as válvulas abertas acima disso = desperdício
ECON_OAT_MAX = 15.0           # free cooling esperado abaixo desta temperatura externa


def check_ahu(asset, d):
    faults = []
    if d["clg_valve"] > VALVE_OVERLAP_PCT and d["htg_valve"] > VALVE_OVERLAP_PCT:
        faults.append("simultaneous_heating_cooling")
    if d["oat"] < ECON_OAT_MAX and d["clg_valve"] > 20 and d["oa_damper"] < 30:
        faults.append("economizer_not_used")
    if d["filter_dp"] > 250:
        faults.append("filter_loaded")
    return {"faults": faults, "fan_kw": d["fan_kw"]}


def check_chiller(asset, d):
    delta_t = d["chwr"] - d["chws"]
    tons = d["flow_lps"] * 4.19 * delta_t / 3.517     # kW térmico para toneladas de refrigeração
    kw_per_ton = d["kw"] / tons if tons > 1 else None
    faults = []
    if d["status"] == "on" and delta_t < 0.6 * DESIGN_CHW_DELTA_T:
        faults.append("low_delta_t")
    return {"delta_t": round(delta_t, 2),
            "kw_per_ton": round(kw_per_ton, 3) if kw_per_ton else None,
            "faults": faults}


def on_connect(client, userdata, flags, reason_code, properties):
    print("Connected:", reason_code)
    client.subscribe(f"{SITE}/+/+/telemetry", qos=1)


def on_message(client, userdata, msg):
    parts = msg.topic.split("/")
    area, asset = parts[2], parts[3]
    data = json.loads(msg.payload)

    if asset.startswith("ahu"):
        result = check_ahu(asset, data)
    elif asset.startswith("chiller"):
        result = check_chiller(asset, data)
    else:
        return

    base = f"{SITE}/{area}/{asset}"
    client.publish(f"{base}/kpi", json.dumps(result), qos=1, retain=True)
    if result["faults"]:
        client.publish(f"{base}/faults", json.dumps({"ts": time.time(), "faults": result["faults"]}), qos=1)


client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id="YOUR_CLIENT_ID")
client.username_pw_set("YOUR_USERNAME", "YOUR_PASSWORD")
client.tls_set()   # o repositório de CAs do sistema confia no certificado Let's Encrypt do broker
client.on_connect = on_connect
client.on_message = on_message
client.connect(BROKER, PORT, keepalive=60)
client.loop_forever()

As três verificações miram problemas de energia bem conhecidos em HVAC:

  1. Aquecimento e resfriamento simultâneos. Quando as duas válvulas de uma AHU estão abertas, a unidade está brigando consigo mesma. As causas vão de uma válvula com vazamento a uma malha de controle mal sintonizada.
  2. Economizador não utilizado. Se está fresco lá fora e a unidade continua em resfriamento mecânico com o damper de ar externo perto do mínimo, o free cooling está sendo desperdiçado.
  3. Delta-T baixo na água gelada. Um circuito de água gelada operando bem abaixo da diferença de temperatura de projeto exige mais bombeamento e muitas vezes chillers extras em operação. É uma das ineficiências mais comuns e caras em centrais de água gelada.

Cada limite aqui é um ponto de partida. Ajuste-os por ativo usando os documentos de projeto e algumas semanas de dados observados. O artigo sobre gêmeo digital de energia aprofunda o tema de linhas de base e medição de economias.

Alertas e Visualização

Como os resultados são mensagens MQTT simples, qualquer assinante pode consumi-los. No portal da ConnectMQ, você pode criar regras de alerta por limite sobre valores numéricos, por exemplo kw_per_ton ou uma temperatura do ar de insuflamento, e revisar os alertas disparados no log de alertas. As próprias mensagens de falha são melhor roteadas pelas suas próprias ferramentas: o Node-RED pode transformá-las em e-mails ou chamados, e um dashboard Grafana apoiado em um banco de dados de séries temporais pode mostrar tendências.

Para a visualização, um navegador se conecta via WebSocket seguro na porta 8084 (caminho /mqtt) e assina os topics kpi e telemetry. Uma planta baixa 2D com AHUs coloridas costuma ser mais útil para as equipes de facilities do que um modelo fotorrealista. Se você quer ver como é um gêmeo 3D ao vivo, a demo web de gêmeo digital da ConnectMQ anima uma fábrica com máquinas, tanques, bombas e esteiras atualizados via WSS, e o mesmo padrão se aplica a uma casa de máquinas.

Checklist de Implantação

  1. Inventário: exporte a lista de pontos do BMS e escolha os pontos da tabela acima para uma AHU e um chiller.
  2. Gateway: instale um gateway BACnet para MQTT na rede do edifício, somente leitura, publicando via TLS.
  3. Topics: defina a hierarquia e os nomes dos campos JSON antes de conectar o segundo ativo.
  4. Broker: crie um broker privado com credenciais por gateway e por serviço de análise.
  5. Validação: compare os valores do gêmeo com a interface do BMS durante um dia; corrija escalas e unidades.
  6. Regras: habilite as três verificações, revise as constatações semanalmente com a equipe de facilities e ajuste os limites.
  7. Escala: adicione as demais AHUs, bombas e zonas e depois considere casos de uso preditivos, como desgaste de filtros e rolamentos.

Para o lado da manutenção, veja gêmeo digital para manutenção preditiva e, para o panorama mais amplo do edifício, o guia de gêmeo digital de edifícios.

Considerações de Segurança

As redes prediais muitas vezes são antigas, planas e mal segmentadas, então o gateway é um ponto sensível. Coloque-o em um segmento de rede próprio, permita apenas conexões de saída para o broker na porta 8883, nunca exponha o BACnet à internet e dê a cada gateway suas próprias credenciais. Um broker MQTT gerenciado elimina totalmente a necessidade de abrir portas de entrada na rede do edifício, porque todas as conexões partem do site. Nunca publique dados reais do edifício no servidor MQTT público (gratuito); use-o apenas com valores sintéticos durante a prototipagem.

Construa Seu Gêmeo Digital de HVAC na ConnectMQ

A ConnectMQ é um broker MQTT na nuvem que transporta os dados ao vivo dos quais o seu gêmeo de HVAC depende: MQTT 3.1.1 e 5.0, TLS, WebSockets para dashboards, visões de dispositivos compatíveis com ISA-95 e alertas por limite no portal. Seus gateways, análises e dashboards se conectam como clientes MQTT padrão. Crie um broker no plano Serverless (Free) em app.connectmq.com, sem cartão de crédito, e transmita sua primeira AHU hoje mesmo.

Perguntas frequentes

O que é um gêmeo digital de HVAC?

É um modelo vivo de equipamentos de HVAC, como unidades de tratamento de ar e chillers, atualizado continuamente com dados reais de sensores e comparado com o comportamento esperado para encontrar falhas e desperdício de energia.

Preciso substituir meu BMS para construir um gêmeo digital de HVAC?

Não. O gêmeo lê os dados do BMS existente por meio de um gateway BACnet para MQTT e deixa o controle com o BMS. Ele acrescenta análise, não um novo sistema de controle.

Por que usar MQTT em vez de ler o BACnet diretamente?

O BACnet foi projetado para redes prediais locais. O MQTT transporta os dados com segurança para a nuvem por meio de conexões de saída e permite que muitos consumidores, como análises, dashboards e armazenamento, compartilhem o mesmo fluxo.

Em quanto tempo um gêmeo digital de HVAC mostra resultados?

Regras simples, como aquecimento e resfriamento simultâneos ou delta-T baixo no chiller, podem revelar problemas já nas primeiras semanas de dados, mas as economias dependem do edifício e de agir com base nas constatações.

Artigos relacionados

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.