Gêmeo digital

Ferramentas Open Source de Gêmeo Digital Comparadas: Ditto, BaSyx, Three.js e Mais

Uma comparação prática de ferramentas open source de gêmeo digital em modelagem, dados, visualização e histórico, com notas sobre como cada uma se conecta a um broker MQTT e quando combiná-las.

Caixa de ferramentas open source de gêmeo digital organizada em torno de um broker MQTT, cobrindo modelagem, visualização e histórico
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

Ferramentas open source de gêmeo digital permitem construir um gêmeo competente sem licenciar uma plataforma proprietária, mas nenhum projeto faz tudo sozinho. Este guia compara as opções mais úteis pela camada que cada uma cobre (modelagem, integração de dados, visualização e histórico) e explica como cada uma consome dados MQTT. Ao final, você será capaz de montar uma stack que se adapta ao seu caso de uso, de uma usina a uma mineradora, em vez de forçar seu caso de uso dentro de uma única ferramenta.

Se você ainda está se situando no assunto, leia primeiro o guia de tecnologia de gêmeo digital.

Pense em Camadas, Não em Plataformas

Um gêmeo funcional precisa de quatro coisas:

  1. Um modelo: o que o ativo é, suas propriedades e relacionamentos.
  2. Dados ao vivo: valores atuais chegando do campo e comandos saindo para ele.
  3. Visualização: dashboards, cenas 3D ou ambos.
  4. Histórico: séries temporais armazenadas para tendências, análises e machine learning.

Projetos open source normalmente se especializam em uma ou duas dessas camadas. O MQTT é a cola que permite que todos compartilhem um único fluxo de dados ao vivo: os gateways publicam uma vez e cada ferramenta assina o que precisa. É por isso que a coluna "como consome MQTT" na tabela abaixo importa tanto quanto a lista de recursos.

As Ferramentas em Resumo

Ferramenta Camada principal Formato do modelo Como consome MQTT Indicada para
Eclipse Ditto Modelo e API de estado do gêmeo Things com attributes e features (JSON) Conexões MQTT 3.1.1 e 5 nativas com mapeamento de payload Gêmeos de dispositivos com APIs REST/WebSocket e busca
Eclipse BaSyx Modelo (Indústria 4.0) Submodelos da Asset Administration Shell Componente data bridge assina MQTT e atualiza submodelos Interoperabilidade baseada em AAS na manufatura
FIWARE Orion-LD Modelo de contexto Entidades NGSI-LD IoT Agent para JSON ou UltraLight sobre MQTT Cidades inteligentes e dados de contexto entre domínios
Node-RED Integração e lógica Fluxos, qualquer JSON Nós MQTT in e out nativos Integração, transformações, dashboards rápidos
Three.js Visualização 3D Cenas glTF MQTT.js sobre Secure WebSocket no navegador Gêmeos 3D web personalizados
Babylon.js Visualização 3D Cenas glTF e Babylon MQTT.js sobre Secure WebSocket 3D web com inspetor e GUI integrados
Telegraf + InfluxDB Histórico Medições de séries temporais Plugin de entrada mqtt_consumer do Telegraf Armazenar telemetria para tendências
Grafana Dashboards Painéis sobre fontes de dados Via banco de dados ou plugin de fonte de dados MQTT Dashboards de operação e alertas

Eclipse Ditto

O Ditto é o serviço open source de "estado do gêmeo" mais completo. Cada gêmeo é uma Thing com attributes (em grande parte estáticos) e features (estado que muda). O Ditto armazena o estado atual, o expõe por APIs REST e WebSocket, oferece busca entre things e aplica políticas granulares sobre quem pode ler ou gravar o quê.

O Ditto se conecta a brokers MQTT por meio do seu serviço de conectividade: você define uma conexão com endereços de origem (topics a assinar), endereços de destino (topics para onde publicar alterações) e um mapeamento de payload que transforma o JSON do seu dispositivo em mensagens do protocolo Ditto. Ele funciona bem quando outras aplicações querem consultar o estado do gêmeo via HTTP em vez de assinar MQTT. Nosso guia do Eclipse Ditto com MQTT mostra uma configuração de conexão completa.

Atenção: o peso operacional. O Ditto roda como vários serviços mais um banco de dados, então combina com equipes à vontade com containers e Kubernetes.

Eclipse BaSyx

O BaSyx implementa a Asset Administration Shell (AAS), o modelo padronizado de gêmeo digital da comunidade Indústria 4.0. Uma AAS descreve um ativo por meio de submodelos como placa de identificação, dados técnicos e dados operacionais, com IDs semânticos que os tornam compreensíveis entre fornecedores.

Para dados ao vivo, o data bridge do BaSyx assina fontes como topics MQTT e grava os valores em elementos de submodelo. Se seus clientes ou parceiros esperam AAS, o BaSyx é a escolha open source óbvia. O guia da Asset Administration Shell explica o modelo.

Atenção: a curva de aprendizado dos metamodelos AAS e dos IDs semânticos. Comece com templates de submodelo padrão em vez de projetar os seus próprios.

FIWARE Orion-LD

O context broker do FIWARE armazena entidades em NGSI-LD, um formato de dados vinculados (linked data) muito adequado a cidades, concessionárias de serviços públicos e agricultura, onde dados de muitos domínios precisam ser combinados. Os IoT Agents traduzem protocolos de dispositivos, incluindo JSON sobre MQTT, em atualizações de entidades. Escolha-o quando precisar de compartilhamento de dados entre organizações e uma API padrão; ele faz menos sentido para uma única célula de fábrica.

Node-RED

O Node-RED não é uma plataforma de gêmeo, mas aparece em quase toda stack open source de gêmeo porque torna a integração rápida. Nós MQTT in e out, nós de função para transformações e um complemento de dashboard cobrem uma parte surpreendente de um primeiro gêmeo. Tarefas típicas: normalizar payloads de fornecedores para o seu schema, calcular valores derivados e fazer a ponte para um banco de dados ou um serviço de gêmeo. Consulte a documentação oficial do Node-RED para instalação e para os nós MQTT.

Atenção: fluxos grandes se tornam difíceis de versionar e revisar. Mantenha a lógica pequena e leve modelos complexos para serviços adequados.

Three.js e Babylon.js

Para 3D, as duas principais bibliotecas web open source são Three.js e Babylon.js. Ambas carregam modelos glTF exportados de CAD ou do Blender e ambas rodam em qualquer lugar onde um navegador rode. Combine qualquer uma delas com MQTT.js sobre Secure WebSocket e o navegador assina diretamente o estado ao vivo, sem necessidade de um relay no backend.

O Three.js é uma biblioteca de renderização enxuta com uma comunidade enorme; você monta controles, loaders e UI por conta própria. O Babylon.js é mais um motor completo, com inspetor, sistema de GUI e física integrados. O tutorial de gêmeo digital com Three.js e o guia de gêmeo digital com Babylon.js mostram cada um em ação.

Telegraf, InfluxDB e Grafana

A camada de histórico é a menos glamorosa e a mais esquecida. O plugin MQTT consumer do Telegraf assina topics e grava medições no InfluxDB ou em outro banco de séries temporais; o Grafana então gera os gráficos. Aqui está uma configuração funcional do Telegraf apontando para o servidor MQTT público (gratuito), usando um prefixo único. Ele serve para testes e protótipos, não para dados de produção:

[[inputs.mqtt_consumer]]
  servers = ["tcp://broker.connectmq.com:1883"]
  topics = ["connectmq/demo/ostw-3c9/site1/+/+/state"]
  client_id = "ostw-3c9-telegraf"
  qos = 0
  data_format = "json"
  topic_tag = "topic"

  [[inputs.mqtt_consumer.topic_parsing]]
    topic = "connectmq/demo/ostw-3c9/site1/+/+/state"
    tags = "_/_/_/site/line/asset/_"

[[outputs.influxdb_v2]]
  urls = ["http://localhost:8086"]
  token = "$INFLUX_TOKEN"
  organization = "plant"
  bucket = "twin"

O bloco topic_parsing transforma os níveis do topic em tags, para que o Grafana possa filtrar por linha e ativo sem fazer parsing de strings. Publique uma mensagem de teste e ela aparecerá no bucket:

mosquitto_pub -h broker.connectmq.com -p 1883 -i ostw-3c9-pub \
  -t "connectmq/demo/ostw-3c9/site1/line2/oven1/state" -m '{"temp_c":212.4,"door_open":0}'

Em produção, troque o servidor para ssl://YOUR_BROKER_HOST:8883 e adicione username = "YOUR_USERNAME" e password = "YOUR_PASSWORD" obtidos no portal do seu broker.

Stacks Recomendadas

Caso de uso Combinação sugerida
Primeiro gêmeo de ativo com dashboards Broker MQTT + Node-RED + Telegraf/InfluxDB + Grafana
Gêmeo operacional 3D interativo Broker MQTT + Three.js ou Babylon.js + Telegraf/InfluxDB
Gêmeos de dispositivos orientados a API para aplicações Broker MQTT + Eclipse Ditto + Grafana
Interoperabilidade Indústria 4.0 Broker MQTT + Eclipse BaSyx + a visualização de sua preferência
Dados de cidade inteligente entre domínios Broker MQTT + FIWARE Orion-LD e IoT Agent

Repare no elemento comum. Quaisquer que sejam as ferramentas escolhidas, um único namespace MQTT alimenta todas elas, então você pode adicionar ou trocar ferramentas depois sem mexer nos dispositivos.

Checklist de Seleção

  1. Qual camada é a sua maior lacuna hoje: modelo, dados ao vivo, visualização ou histórico?
  2. Parceiros ou clientes exigem um modelo padrão como AAS ou NGSI-LD?
  3. Quem vai operar? Plataformas com vários serviços exigem habilidades com containers; Node-RED e Telegraf não.
  4. Como cada ferramenta vai se autenticar no broker, e é possível dar a cada uma suas próprias credenciais?
  5. A ferramenta suporta MQTT 5, caso você dependa de recursos como expiração de mensagens ou assinaturas compartilhadas?
  6. Você consegue rodar uma prova de conceito em um dia com a sua estrutura real de topics?

A Peça que Você Não Deve Hospedar Sozinho

Ferramentas open source de gêmeo são fáceis de rodar em containers, mas o broker do qual todas dependem merece cuidado extra: ele precisa ficar no ar, aceitar TLS, autenticar dezenas de clientes e sobreviver a tempestades de reconexão. Muitas equipes mantêm as ferramentas self-hosted e usam um broker MQTT gerenciado como espinha dorsal, ou rodam um broker MQTT na nuvem perto de suas análises.

O ConnectMQ se encaixa nesse padrão: Ditto, o data bridge do BaSyx, Node-RED, Telegraf e visualizadores no navegador se conectam a ele como clientes MQTT comuns via TCP, TLS ou Secure WebSocket. Seu portal acrescenta um explorador de topics ao vivo e uma visão de dispositivos ISA-95 que ajudam a verificar os dados antes de conectar cada ferramenta, além de decodificação Sparkplug B caso seus dispositivos de borda falem esse protocolo.

Conecte Sua Stack Open Source ao ConnectMQ

Escolha as ferramentas para as suas lacunas e dê a elas uma espinha dorsal confiável. Crie um broker ConnectMQ Serverless gratuito, sem cartão de crédito, e aponte o Node-RED, o Telegraf ou o Ditto para ele em minutos.

Perguntas frequentes

Qual é a melhor plataforma open source de gêmeo digital?

Não existe uma única melhor. O Eclipse Ditto é mais forte em APIs de estado do gêmeo, o Eclipse BaSyx em modelos de Asset Administration Shell e o Three.js ou o Babylon.js em 3D. A maioria das stacks reais combina várias ferramentas em torno de um broker MQTT.

O Eclipse Ditto suporta MQTT 5?

Sim, o serviço de conectividade do Ditto suporta conexões MQTT 3.1.1 e MQTT 5, com origens, destinos e mapeamento de payload configuráveis.

O Node-RED pode ser um gêmeo digital sozinho?

Para gêmeos de ativos simples com dashboards, o Node-RED vai longe. À medida que o gêmeo cresce, leve os modelos e o histórico para ferramentas dedicadas e mantenha o Node-RED para integração.

Ferramentas open source de gêmeo precisam de um broker próprio?

Elas precisam de acesso a um broker MQTT, não necessariamente a um próprio. Um broker MQTT gerenciado e compartilhado permite que todas as ferramentas consumam o mesmo namespace.

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.