Conexión · Sparkplug B

MQTT Sparkplug B en una sola plataforma de IoT industrial

Sparkplug B es la especificación abierta de Eclipse que convierte el MQTT estándar en un protocolo autodescriptivo y consciente del estado para el internet industrial de las cosas. Kilo lo habla de forma nativa, como Sparkplug Host Application (aplicación host) y como Edge Node (nodo de borde), sobre MQTT 3.1.1 y 5.0, probado con el TCK oficial de Sparkplug 3.0.0.

SPARKPLUG EN LÍNEA

Supera el TCK oficial de Sparkplug 3.0.0 · ver los resultados

Sparkplug B · fundamentos

¿Qué es MQTT Sparkplug B?

MQTT mueve mensajes a través de un broker, pero deja tres preguntas abiertas: qué significa un topic, qué contiene un payload y si el emisor sigue vivo. Sparkplug B, la especificación abierta de Eclipse para el internet industrial de las cosas, responde a las tres.

Topics

Un único namespace de topics

Cada mensaje vive bajo spBv1.0/group/type/edge-node/device, así que cualquier host sabe de dónde viene un valor sin el manual del fabricante.

Payload

Payload Protocol Buffers

La «B» es la codificación: un esquema protobuf compacto de Eclipse Tahu donde cada métrica lleva nombre o alias, tipo de dato, marca de tiempo y valor.

Estado

Reglas de estado de sesión

Certificados birth y death, números de secuencia y peticiones de Rebirth indican a cada host qué está online, así que un dato obsoleto nunca se muestra como actual.

Sparkplug B · comparativa

Sparkplug B vs MQTT: ¿qué añade Sparkplug?

Sparkplug B no sustituye a MQTT: funciona sobre cualquier broker MQTT 3.1.1 o 5.0 y añade el acuerdo que MQTT a secas deja en manos de cada fabricante.

MQTT a secas MQTT Sparkplug B
Topics Los elige cada fabricante Namespace spBv1.0 fijo para todo dispositivo
Payload Cualquier formato, a menudo JSON propio Métricas Protocol Buffers tipadas
Descubrimiento Leer el manual del fabricante El certificado birth lista cada métrica
Estado online Desconocido salvo que lo construyas Deaths vía el Will de MQTT, al instante
Store and forward Datos perdidos salvo que cada cliente los guarde Guardados con marca de tiempo en el borde, enviados como histórico al reconectar
Ancho de banda Payload completo en cada publicación Envío por cambio, alias de métricas
Integración Parseo a medida por dispositivo Configuración, no código

Sparkplug B · topics

¿Cómo funciona el namespace de topics de Sparkplug B?

Todos los topics de Sparkplug tienen las mismas cinco partes. El tipo de mensaje, en el centro, dice qué es el mensaje; una Host Application se anuncia en spBv1.0/STATE/host_id.

spBv1.0 Namespace y versión
/
group_id Un sitio, línea o área
/
message_type Qué es el mensaje
/
edge_node_id Gateway o controlador
/
device_id Máquina o sensor (opcional)
NBIRTH

Un Edge Node se conecta y lista todas sus métricas.

DBIRTH

Un dispositivo detrás del nodo se conecta con sus métricas.

NDATA · DDATA

Solo los valores que cambian, envío por cambio.

NDEATH · DDEATH

Un nodo o dispositivo pasa a offline; sus datos quedan obsoletos.

NCMD · DCMD

Comandos de un host de vuelta a un nodo o dispositivo.

STATE

Una Primary Host Application anuncia que está online.

Sparkplug B · estado de sesión

¿Cómo funcionan los certificados birth y death de Sparkplug?

Los certificados birth describen todo lo que enviará un nodo; los certificados death, que el broker entrega como Will de MQTT, lo marcan offline en cuanto cae la conexión.

  1. CONNECT

    NDEATH registrado como Will

    El Edge Node se conecta con su certificado death como Will de MQTT, con un número bdSeq.

  2. NBIRTH

    Certificado birth del nodo

    Cada métrica del nodo con su tipo de dato y valor actual, el mismo bdSeq y seq 0.

  3. DBIRTH

    Births de dispositivos

    Uno por dispositivo tras el nodo: el host conoce cada métrica antes de que llegue un dato.

  4. DATA

    Solo cambios

    NDATA y DDATA llevan valores cambiados; seq va de 0 a 255 para detectar cualquier hueco.

  5. NDEATH

    Death o Rebirth

    Si cae el enlace, el broker publica el NDEATH. Ante un hueco, un host envía Rebirth.

Sparkplug B · roles

¿Qué es un Edge Node y una Host Application de Sparkplug?

Un Edge Node posee la sesión MQTT en el borde; una Host Application consume los datos. Kilo cumple ambos roles, sobre el broker que elijas.

Edge Node

Gateway, PLC o software edge

  • Publica births, datos y deaths
  • Ejecuta NCMD y DCMD
  • Espera al host primario si se configura
Broker MQTT

Cualquier broker MQTT 3.1.1 o 5.0

  • Enruta los topics spBv1.0
  • Entrega el Will NDEATH
  • Guarda el STATE retenido
Host Application

Plataforma IIoT Kilo

  • Publica STATE como Primary Host
  • Sigue bdSeq, seq y Rebirth
  • Convierte métricas en dispositivos, reglas y alarmas

Sparkplug B · arquitectura

¿Cómo crear un Unified Namespace con MQTT Sparkplug?

Un unified namespace (UNS) es una arquitectura IIoT en la que cada sistema publica su estado actual en una única jerarquía compartida, normalmente un broker MQTT, en lugar de integraciones punto a punto.

  • Traslada la jerarquía de la planta a los IDs de Sparkplug: el grupo para un sitio o área, el Edge Node para una línea o celda, el dispositivo para una máquina.
  • Los certificados birth hacen que cada nodo se describa a sí mismo, así que un equipo nuevo aparece en el namespace sin mapeo manual.
  • Los certificados death mantienen el namespace fiel: en cuanto muere un nodo, cada valor que posee se marca como obsoleto.
  • Kilo consume ese mismo namespace, así que paneles, reglas y alarmas ven la planta exactamente como se publica.
Empresa broker / UNS mqtts://uns.example.com
Sitio · área group_id plant-berlin
Línea · celda edge_node_id line-3
Máquina device_id filler
Métrica metric Motor/Temperature = 71.5 °C

Sparkplug B · comparativa

OPC UA vs MQTT Sparkplug B

Son complementarios, no rivales: una arquitectura IIoT habitual lee los equipos por OPC UA en el borde y los publica como Sparkplug B en el broker que alimenta el unified namespace.

OPC UA MQTT Sparkplug B
Dónde encaja Nivel de máquina y celda Del sitio a la empresa y la nube
Patrón Cliente/servidor (más PubSub) Publicación/suscripción vía broker
Modelo de datos Modelo de información rico y tipado Métricas tipadas, templates, datasets
Tráfico Sondeo o suscripciones por cliente Envío por cambio, un flujo para todos
Estado Por sesión Certificados birth y death para cada nodo

Sparkplug B · brokers

¿Qué broker MQTT funciona con Sparkplug B?

Cualquier broker que implemente MQTT correctamente puede transportar Sparkplug B. Kilo funciona con el broker que ya operas, por mqtt:// o mqtts://, o con un endpoint Cloud MQTT gestionado.

Necesario

Broker Sparkplug Compliant

Cualquier broker MQTT 3.1.1 o 5.0 con QoS 0 y 1, mensajes retenidos y el Will. Es todo lo que necesitan Edge Nodes y hosts.

Opcional

Broker Sparkplug Aware

Además guarda los últimos certificados birth para quienes se conectan tarde. Útil, pero ni hosts ni Edge Nodes dependen de él.

Kilo

Tu broker o Cloud MQTT

Apunta Kilo al broker que ya usan tus Edge Nodes, o deja que la plataforma cree un endpoint gestionado con sus propias credenciales.

Sparkplug B · ejemplo

Ejemplo de MQTT Sparkplug B

Una línea de llenado en un sitio, del primer certificado birth a una conexión perdida, tal como aparecen los mensajes en el broker.

  • El Edge Node line-3 registra su NDEATH como Will y luego publica su NBIRTH y un DBIRTH para el dispositivo filler.
  • A partir de ahí solo viajan los cambios: un DDATA por cambio, cada uno con el siguiente número seq.
  • Los comandos bajan por el mismo árbol como DCMD.
  • Si el gateway se queda sin energía, el broker publica el NDEATH y todos los hosts marcan line-3 y 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 por el broker como Will

Sparkplug B · conformidad

¿Qué es el TCK de Eclipse Sparkplug?

El Technology Compatibility Kit es el conjunto de pruebas oficial de la Eclipse Foundation para la especificación. La implementación de Sparkplug B de Kilo supera el TCK 3.0.0 firmado para los perfiles Edge Node y Host Application, sobre MQTT 5.0 y 3.1.1, y todos los resultados son públicos.

28/28
Ejecuciones del TCK superadas
273
Requisitos superados
2
Perfiles probados
6/6
Grupos opcionales superados

Conexión · Sparkplug B

¿Cómo conectar dispositivos Sparkplug B a una plataforma IoT?

1

Apunta Kilo a tu broker

Añade un conector Sparkplug B al broker que ya usan tus Edge Nodes, o a un endpoint Cloud MQTT, y elige los grupos a los que suscribirte.

2

Los births se convierten en dispositivos

Cada NBIRTH y DBIRTH registra su nodo o dispositivo con cada métrica, tipo de dato y unidad, así que no hace falta mapear payloads.

3

Datos, deaths y comandos

Los cambios fluyen a paneles, reglas y alarmas; los deaths marcan los valores como obsoletos al instante; los comandos vuelven como NCMD y DCMD.

Conexión · Sparkplug B

¿Qué debe soportar una plataforma IIoT para Sparkplug B?

Sparkplug 3.0.0
Perfiles Edge Node y Host Application, sobre MQTT 3.1.1 y MQTT 5.0, probados con el TCK oficial de Sparkplug 3.0.0.
Estado de sesión completo
Seguimiento de bdSeq y seq, deaths entregados por el Will, peticiones de Rebirth ante cualquier hueco y marcado como obsoleto en cuanto muere un nodo o dispositivo.
STATE del host principal
Un STATE birth retenido y un STATE death como Will, para que los Edge Nodes que esperan al host principal sepan cuándo Kilo está escuchando.
Reordenación de mensajes
Los mensajes que llegan desordenados se retienen y reordenan dentro de un plazo antes de pedir un Rebirth, así que un breve tropiezo del broker no es pérdida de datos.
Todos los tipos de datos
Todos los tipos escalares y de array de Sparkplug B, datasets, plantillas, propiedades y alias de métricas, decodificados según lo que declaró cada birth.
Comandos en ambos sentidos
Escrituras NCMD y DCMD en métricas de nodos y dispositivos, incluido Node Control/Rebirth, desde paneles, reglas o la API.

Conexión · Sparkplug B

¿Qué se puede hacer con los datos de Sparkplug B?

Conexión · Sparkplug B

Preguntas frecuentes sobre Sparkplug B

¿Sparkplug B es lo mismo que MQTT?

No. MQTT es el transporte; Sparkplug B es una especificación encima de él que fija el namespace de topics, el payload Protocol Buffers y las reglas de estado de sesión. Todo mensaje Sparkplug B es un mensaje MQTT, pero la mayor parte del tráfico MQTT no es Sparkplug.

¿Qué versiones de MQTT soporta Sparkplug B?

Sparkplug 3.0.0 funciona sobre MQTT 3.1.1 y MQTT 5.0. Kilo soporta ambas y se probó en ambas con el TCK oficial.

¿Necesito un broker especial para Sparkplug B?

No. Sirve cualquier broker MQTT 3.1.1 o 5.0 que gestione correctamente QoS 1, los mensajes retenidos y el Will. Un broker Sparkplug Aware es opcional.

¿Sparkplug B es open source?

La especificación es un estándar abierto de la Eclipse Foundation bajo la Eclipse Public License, y el esquema del payload está publicado en Eclipse Tahu. Los productos la implementan de forma independiente; la implementación de Kilo es propia.

¿Cuál es la diferencia entre IIoT e IoT?

El IIoT, el internet industrial de las cosas, es el IoT aplicado a plantas, servicios públicos e infraestructuras, donde los datos vienen de PLCs, contadores y máquinas y deben ser fiables, llevar marca de tiempo y ser conscientes del estado. Esa fiabilidad es justo lo que Sparkplug B añade a MQTT.

¿Puedo seguir usando JSON sobre MQTT?

Sí. El conector MQTT de Kilo sigue parseando payloads JSON, así que dispositivos Sparkplug B y dispositivos MQTT normales pueden convivir en una misma organización.

Conectar dispositivos Sparkplug B a Kilo

Empieza gratis y apunta Kilo a tu broker, o reserva una llamada y mapeamos juntos tus grupos Sparkplug, Edge Nodes y dispositivos.