Conexão · Sparkplug B

MQTT Sparkplug B em uma única plataforma de IoT industrial

Sparkplug B é a especificação aberta da Eclipse que transforma o MQTT comum em um protocolo autodescritivo e ciente de estado para a internet das coisas industrial. O Kilo fala Sparkplug B nativamente, como Sparkplug Host Application (aplicação host) e como Edge Node (nó de borda), sobre MQTT 3.1.1 e 5.0, testado com o TCK oficial do Sparkplug 3.0.0.

SPARKPLUG ONLINE

Passa no TCK oficial do Sparkplug 3.0.0 · veja os resultados

Sparkplug B · fundamentos

O que é MQTT Sparkplug B?

O MQTT leva mensagens por meio de um broker, mas deixa três perguntas em aberto: o que um tópico significa, o que um payload contém e se o remetente ainda está vivo. O Sparkplug B, a especificação aberta da Eclipse para a internet das coisas industrial, responde às três.

Tópicos

Um único namespace de tópicos

Toda mensagem fica sob spBv1.0/group/type/edge-node/device, então qualquer host sabe de onde veio um valor sem o manual do fabricante.

Payload

Payload Protocol Buffers

O “B” é a codificação: um schema protobuf compacto do Eclipse Tahu em que cada métrica carrega nome ou alias, tipo de dado, timestamp e valor.

Estado

Regras de estado de sessão

Certificados birth e death, números de sequência e pedidos de Rebirth dizem a cada host o que está online, então dado obsoleto nunca aparece como atual.

Sparkplug B · comparação

Sparkplug B vs MQTT: o que o Sparkplug acrescenta?

O Sparkplug B não substitui o MQTT: ele roda em qualquer broker MQTT 3.1.1 ou 5.0 e acrescenta o acordo que o MQTT puro deixa a cargo de cada fabricante.

MQTT puro MQTT Sparkplug B
Tópicos Escolhidos por cada fabricante Namespace spBv1.0 fixo para todo dispositivo
Payload Qualquer formato, em geral JSON próprio Métricas Protocol Buffers tipadas
Descoberta Ler o manual do fabricante O certificado birth lista cada métrica
Estado online Desconhecido, a menos que você o crie Deaths pelo Will do MQTT, na hora
Store and forward Dados perdidos, a menos que cada cliente os guarde Guardados com timestamp na borda, enviados como histórico ao reconectar
Banda Payload completo a cada publicação Envio por mudança, aliases de métricas
Integração Parsing sob medida por dispositivo Configuração, não código

Sparkplug B · tópicos

Como funciona o namespace de tópicos do Sparkplug B?

Todo tópico Sparkplug tem as mesmas cinco partes. O tipo de mensagem, no meio, diz o que a mensagem é; uma Host Application se anuncia em spBv1.0/STATE/host_id.

spBv1.0 Namespace e versão
/
group_id Um site, linha ou área
/
message_type O que a mensagem é
/
edge_node_id Gateway ou controlador
/
device_id Máquina ou sensor (opcional)
NBIRTH

Um Edge Node fica online e lista todas as suas métricas.

DBIRTH

Um dispositivo atrás do nó fica online com suas métricas.

NDATA · DDATA

Só valores alterados, envio por mudança.

NDEATH · DDEATH

Um nó ou dispositivo fica offline; seus dados ficam obsoletos.

NCMD · DCMD

Comandos de um host de volta a um nó ou dispositivo.

STATE

Uma Primary Host Application anuncia que está online.

Sparkplug B · estado de sessão

Como funcionam os certificados birth e death do Sparkplug?

Os certificados birth descrevem tudo o que um nó vai enviar; os certificados death, entregues pelo broker como Will do MQTT, o marcam offline no instante em que a conexão cai.

  1. CONNECT

    NDEATH registrado como Will

    O Edge Node se conecta com seu certificado death como Will do MQTT, com um número bdSeq.

  2. NBIRTH

    Certificado birth do nó

    Cada métrica do nó com tipo de dado e valor atual, o mesmo bdSeq e seq 0.

  3. DBIRTH

    Births dos dispositivos

    Um por dispositivo atrás do nó, para o host conhecer cada métrica antes de qualquer dado.

  4. DATA

    Só mudanças

    NDATA e DDATA trazem valores alterados; seq vai de 0 a 255 para o host notar qualquer lacuna.

  5. NDEATH

    Death ou Rebirth

    Se o link cair, o broker publica o NDEATH. Diante de uma lacuna, o host envia Rebirth.

Sparkplug B · papéis

O que é um Edge Node e uma Host Application no Sparkplug?

Um Edge Node é dono da sessão MQTT na borda; uma Host Application consome os dados. O Kilo cumpre os dois papéis, pelo broker que você escolher.

Edge Node

Gateway, PLC ou software de borda

  • Publica births, dados e deaths
  • Executa NCMD e DCMD
  • Espera o host primário, se configurado
Broker MQTT

Qualquer broker MQTT 3.1.1 ou 5.0

  • Roteia os tópicos spBv1.0
  • Entrega o Will NDEATH
  • Guarda o STATE retido
Host Application

Plataforma IIoT Kilo

  • Publica STATE como Primary Host
  • Acompanha bdSeq, seq e Rebirth
  • Transforma métricas em dispositivos, regras e alarmes

Sparkplug B · arquitetura

Como montar um Unified Namespace com MQTT Sparkplug?

Um unified namespace (UNS) é uma arquitetura IIoT em que cada sistema publica seu estado atual em uma única hierarquia compartilhada, normalmente um broker MQTT, em vez de integrações ponto a ponto.

  • Mapeie a hierarquia da planta nos IDs do Sparkplug: o grupo para um site ou área, o Edge Node para uma linha ou célula, o dispositivo para uma máquina.
  • Os certificados birth tornam cada nó autodescritivo, então um equipamento novo aparece no namespace sem mapeamento manual.
  • Os certificados death mantêm o namespace fiel: no momento em que um nó morre, cada valor dele é marcado como obsoleto.
  • O Kilo consome o mesmo namespace, então dashboards, regras e alarmes veem a planta exatamente como ela é publicada.
Empresa broker / UNS mqtts://uns.example.com
Site · área group_id plant-berlin
Linha · célula edge_node_id line-3
Máquina device_id filler
Métrica metric Motor/Temperature = 71.5 °C

Sparkplug B · comparação

OPC UA vs MQTT Sparkplug B

Eles são complementares, não rivais: uma arquitetura IIoT comum lê os equipamentos via OPC UA na borda e os publica como Sparkplug B no broker que alimenta o unified namespace.

OPC UA MQTT Sparkplug B
Onde se encaixa Nível de máquina e célula Do site à empresa e à nuvem
Padrão Cliente/servidor (mais PubSub) Publish/subscribe por um broker
Modelo de dados Modelo de informação rico e tipado Métricas tipadas, templates, datasets
Tráfego Polling ou assinaturas por cliente Envio por mudança, um fluxo para todos
Estado Por sessão Certificados birth e death para cada nó

Sparkplug B · brokers

Qual broker MQTT funciona com Sparkplug B?

Qualquer broker que implemente o MQTT corretamente pode transportar Sparkplug B. O Kilo funciona com o broker que você já opera, via mqtt:// ou mqtts://, ou com um endpoint Cloud MQTT gerenciado.

Obrigatório

Broker Sparkplug Compliant

Qualquer broker MQTT 3.1.1 ou 5.0 com QoS 0 e 1, mensagens retidas e o Will. É tudo de que Edge Nodes e hosts precisam.

Opcional

Broker Sparkplug Aware

Também guarda os últimos certificados birth para quem se conecta depois. Útil, mas nem hosts nem Edge Nodes dependem dele.

Kilo

Seu broker ou Cloud MQTT

Aponte o Kilo para o broker que seus Edge Nodes já usam, ou deixe a plataforma provisionar um endpoint gerenciado com credenciais próprias.

Sparkplug B · exemplo

Exemplo de MQTT Sparkplug B

Uma linha de envase em um site, do primeiro certificado birth até uma conexão perdida, como as mensagens aparecem no broker.

  • O Edge Node line-3 registra seu NDEATH como Will e depois publica seu NBIRTH e um DBIRTH para o dispositivo filler.
  • Daí em diante só as mudanças trafegam: um DDATA por mudança, cada um com o próximo número seq.
  • Os comandos descem pela mesma árvore como DCMD.
  • Se o gateway perder energia, o broker publica o NDEATH e todos os hosts marcam line-3 e filler como offline.
spBv1.0 · plant-berlin
NBIRTH spBv1.0/plant-berlin/NBIRTH/line-3
bdSeq=4 · seq=0 · Node Control/Rebirth (Boolean)
DBIRTH spBv1.0/plant-berlin/DBIRTH/line-3/filler
Bottles/Count (UInt64) · Motor/Temperature (Float) · State (String)
DDATA spBv1.0/plant-berlin/DDATA/line-3/filler
seq=12 · Motor/Temperature = 71.5
DCMD spBv1.0/plant-berlin/DCMD/line-3/filler
Bottles/Count = 0
NDEATH spBv1.0/plant-berlin/NDEATH/line-3
bdSeq=4 · publicado pelo broker como Will

Sparkplug B · conformidade

O que é o TCK do Eclipse Sparkplug?

O Technology Compatibility Kit é a suíte de testes oficial da Eclipse Foundation para a especificação. A implementação de Sparkplug B do Kilo passa no TCK 3.0.0 assinado para os perfis Edge Node e Host Application, em MQTT 5.0 e 3.1.1, e todos os resultados são públicos.

28/28
Execuções do TCK aprovadas
273
Requisitos aprovados
2
Perfis testados
6/6
Grupos opcionais aprovados

Conexão · Sparkplug B

Como conectar dispositivos Sparkplug B a uma plataforma IoT?

1

Aponte o Kilo para o seu broker

Adicione um conector Sparkplug B ao broker que seus Edge Nodes já usam, ou a um endpoint Cloud MQTT, e escolha os grupos que deseja assinar.

2

Births viram dispositivos

Cada NBIRTH e DBIRTH registra seu nó ou dispositivo com cada métrica, tipo de dado e unidade, então não é preciso mapear payloads.

3

Dados, deaths e comandos

As mudanças fluem para dashboards, regras e alarmes; deaths marcam os valores como obsoletos na hora; comandos voltam como NCMD e DCMD.

Conexão · Sparkplug B

O que uma plataforma IIoT deve suportar para Sparkplug B?

Sparkplug 3.0.0
Perfis Edge Node e Host Application, em MQTT 3.1.1 e MQTT 5.0, testados com o TCK oficial do Sparkplug 3.0.0.
Estado de sessão completo
Rastreamento de bdSeq e seq, deaths entregues pelo Will, pedidos de Rebirth a cada lacuna e marcação como obsoleto no momento em que um nó ou dispositivo morre.
STATE do host primário
Um STATE birth retido e um STATE death como Will, para que Edge Nodes que esperam o host primário saibam quando o Kilo está escutando.
Reordenação de mensagens
Mensagens fora de ordem são retidas e reordenadas dentro de um timeout antes de pedir um Rebirth, então um breve soluço do broker não vira perda de dados.
Todos os tipos de dados
Todos os tipos escalares e de array do Sparkplug B, datasets, templates, propriedades e aliases de métricas, decodificados conforme o que cada birth declarou.
Comandos nos dois sentidos
Escritas NCMD e DCMD em métricas de nós e dispositivos, incluindo Node Control/Rebirth, a partir de dashboards, regras ou da API.

Conexão · Sparkplug B

O que fazer com os dados Sparkplug B?

Conexão · Sparkplug B

Perguntas frequentes sobre Sparkplug B

Sparkplug B é o mesmo que MQTT?

Não. MQTT é o transporte; Sparkplug B é uma especificação sobre ele que fixa o namespace de tópicos, o payload Protocol Buffers e as regras de estado de sessão. Toda mensagem Sparkplug B é uma mensagem MQTT, mas a maior parte do tráfego MQTT não é Sparkplug.

Quais versões de MQTT o Sparkplug B suporta?

O Sparkplug 3.0.0 roda sobre MQTT 3.1.1 e MQTT 5.0. O Kilo suporta as duas e foi testado nas duas com o TCK oficial.

Preciso de um broker especial para Sparkplug B?

Não. Qualquer broker MQTT 3.1.1 ou 5.0 que trate corretamente QoS 1, mensagens retidas e o Will funciona. Um broker Sparkplug Aware é opcional.

O Sparkplug B é open source?

A especificação é um padrão aberto da Eclipse Foundation sob a Eclipse Public License, e o schema do payload é publicado no Eclipse Tahu. Os produtos a implementam de forma independente; a implementação do Kilo é própria.

Qual é a diferença entre IIoT e IoT?

IIoT, a internet das coisas industrial, é a IoT aplicada a fábricas, utilities e infraestrutura, onde os dados vêm de PLCs, medidores e máquinas e precisam ser confiáveis, ter timestamp e ser cientes de estado. Essa confiabilidade é exatamente o que o Sparkplug B acrescenta ao MQTT.

Ainda posso usar JSON sobre MQTT?

Sim. O conector MQTT do Kilo continua fazendo o parsing de payloads JSON, então dispositivos Sparkplug B e dispositivos MQTT comuns podem conviver na mesma organização.

Conectar dispositivos Sparkplug B ao Kilo

Comece grátis e aponte o Kilo para o seu broker, ou agende uma conversa e mapeamos juntos seus grupos Sparkplug, Edge Nodes e dispositivos.