Asesoría Agenda una llamada de descubrimiento técnico hoy mismo »

· IIoT  · 2 min de lectura

Diseño de Payloads MQTT para IIoT: JSON vs Sparkplug B

JSON es fácil, pero Sparkplug B es el estándar industrial. Aprende cuándo usar cada uno y cómo estructurar tus tópicos para no crear deuda técnica.

JSON es fácil, pero Sparkplug B es el estándar industrial. Aprende cuándo usar cada uno y cómo estructurar tus tópicos para no crear deuda técnica.

El protocolo MQTT es solo el transporte (el camión). El payload es la carga. Si cargás el camión tirando cajas al azar (JSONs mal formados), tu sistema de destino (SCADA, MES, Nube) va a ser un caos de parsers insostenible.

Para sistemas IIoT serios, hay dos caminos: JSON Estructurado o Sparkplug B.

1. El Costo del JSON “Croto”

Es tentador enviar esto desde un ESP32:

{"temp": 24, "status": "ok"}

Pero cuando tengas 100 máquinas, ¿qué significa “temp”? ¿Es del motor o del gabinete? ¿Está en Celsius o Fahrenheit? ¿Cuándo se midió?

La Estructura Mínima Viable (JSON)

Si vas a usar JSON, imponé un contrato de datos estricto. Recomiendo seguir el patrón Unified Namespace (UNS) para los tópicos y un payload con metadatos:

Topic: empresa/planta1/linea4/maquina2/telemetria

Payload:

{
  "ts": 1699982000000,    // Timestamp ISO o Epoch (Obligatorio)
  "values": {
    "motor_temp_c": 45.2, // Unidad en el nombre
    "vibracion_mm_s": 1.2
  },
  "q": 192,               // Calidad (OPC UA style: Good)
  "seq": 1042             // Secuencia para detectar pérdida de paquetes
}

2. Sparkplug B: El Estándar Industrial

Sparkplug B no es otro protocolo. Es una especificación sobre cómo usar MQTT para que los dispositivos industriales se entiendan automáticamente. Define:

  1. Tópicos Rígidos: spBv1.0/GRUPO/MENSAJE/NODO/DISPOSITIVO
  2. Gestión de Estado (State Management): El famoso “Birth Certificate” (NBIRTH) y “Death Certificate” (NDEATH). El SCADA sabe INSTANTÁNEAMENTE si el PLC se desconectó, gracias al mecanismo de Last Will and Testament (LWT) de MQTT.
  3. Compresión: Usa Google Protobuf. El payload es binario, pesando 10 veces menos que JSON. Ideal para redes celulares (4G/LTE).

¿Cuándo usar Sparkplug B?

  • ✅ Tienes un SCADA moderno (Ignition, FrameworX) que lo soporta nativamente.
  • ✅ Necesitas “Plug and Play”: El SCADA descubre los tags automáticamente cuando el PLC se conecta.
  • ✅ El ancho de banda es crítico (Satélite, Radio, 4G).

¿Cuándo usar JSON?

  • ✅ Tu destino es una Web App, Dashboard de Grafana directo o AWS IoT Core.
  • ✅ Quieres debuggear leyendo los mensajes con el ojo humano.
  • ✅ No tienes un “Primary Host” (SCADA central) que gestione el estado.

3. Estrategia de “Report by Exception” (RBE)

No envíes datos porque sí cada 1 segundo. Eso satura el broker y te cobra fortuna en la nube. Usa RBE: Solo publica si el valor cambió más allá de una banda muerta (deadband) o si pasó un tiempo máximo (heartbeat).

  • Temperatura: Cambia > 0.5°C -> Publicar.
  • Estado: Cambia de 0 a 1 -> Publicar Inmediatamente (Priority).

Conclusión

  • Si estás haciendo un prototipo o dashboard web: JSON Estructurado (con Timestamp y Calidad).
  • Si estás integrando una planta completa con un SCADA central: Sparkplug B.

No inventes tu propio formato. La interoperabilidad paga las cuentas.

Volver al blog

Related Posts

View All Posts »