HomeBlog Sparkplug MQTT Datos

MQTT Simulación de datos Sparkplug con IoT Simulator

por Ponlakshmi


sparkplug B

MQTT Sparkplug proporciona una especificación abierta y libremente disponible para cómo Edge of Network (EoN) gateways or native MQTT dispositivos finales habilitados y aplicaciones MQTT comunican bidireccionalmente dentro de una infraestructura MQTT. Uno de los aspectos únicosProtocolo MQTTes que fue originalmente diseñado para tiempo real SCADA sistemas ayudar a reducir la latencia de datos sobre la infraestructura de red limitada y a menudo poco fiable. Del mismo modo, la intención de la especificación de Sparkplug es aprovechar plenamente el nativo de MQTT Capacidad de conciencia de sesión continua como se aplica a soluciones SCADA/IIoT en tiempo real.

Este artículo le ayuda a simular la codificación Sparkplug B en IoT Simulator. Es crucial aprender sobre elMQTT Sparkplug Elementos del espacio de nombresySparkplug MQTT Tipos de mensajepara simular los datos.

Sparkplug MQTT Temas y mensajes

Elementos del espacio de nombres temático Sparkplug:


Todos los clientes que usen la especificación Sparkplug utilizarán este espacio de nombres de formato UTF-8 predeterminado.

namespace/group_id/message_type/edge_node_id/[device_id]

  • namespace:Es el elemento raíz que definirá tanto la estructura el elementos del espacio de nombres restantes, así como la codificación utilizado para los datos de carga útil asociados. Formato para namespace esconstante de cadena UTF-8debería usarse. Del mismo modo corriente La especificación de Sparkplug define dos espacios de nombres:
  • Definición de la carga útil Sparkplug A
  • elemento namespace debe ser“spAv1.0”
  • Definición de la carga útil Sparkplug B
  • elemento namespace debe ser“spBv1.0”
  • group_id:Esto proporciona un ID de grupo lógico único de los nodos MQTT EoN. Para group_id el formato debe ser UTF-8 cadena alfanumérica, excepto para los caracteres reservados de ‘+’ (plus), ‘/’ (forward slash), y '# (número signo). Ejemplos de dónde se podría utilizar el [group_id] incluyen la industria del cemento donde los nodos MQTT EoN en diferentes Departamento los diferentes [group_id].
  • message_type Elemento:Proporciona la indicación de cómo manejar el MQTT carga del mensaje. Los siguientes elementos de mensaje_tipo se definen para el espacio de nombre del tema Sparkplug:
  • NBIRTH– Certificado de nacimiento para los nodos MQTT EoN.
  • NDEATH– Certificado de defunción para los nodos MQTT EoN.
  • DBIRTH– Certificado de nacimiento para dispositivos.
  • DDEATH– Certificado de defunción para Dispositivos.
  • NDATA– Mensaje de datos de nodos.
  • DDATA– Mensaje de datos del dispositivo.
  • NCMD– Mensaje de comando Node.
  • DCMD– Mensaje de comando del dispositivo.
  • ESTADO– Mensaje crítico del estado de aplicación.
  • edge_node_id:Identificación inquie para los nodos MQTT EoN dentro de los infraestructura. Para edge_node_id el formato debe ser cadena alfanumérica UTF-8, excepto para los caracteres reservados de ‘+’ (plus), ‘/’ (de frente), y "#" (número signo). El edge_node_id viaja con cada mensaje publicado, por lo que debe ser lo más corto posible
  • device_id:Unquie ID que utilizó para identificar el dispositivo conectado al MQTT Nodo EoN. device_id es un elemento opcional ya que algunos mensajes serán originarios o destinados al edge_node_id, en ese lugar dispositivo_ id no sería requerido. El formato del dispositivo_id es un anillo alfanumérico válido UTF-8 excepto para el reservado caracteres de ‘+’ (plus), ‘/’ (de frente), y ‘#’ (número signo). El dispositivo_id viaja con cada mensaje publicado, por lo que debería ser tan corto como sea posible.

Simulate Sparkplug MQTT Device & Network

Sparkplug MQTT Tipos de mensaje

Sparkplug define el espacio de nombres temático para el conjunto de mensajes MQTT que se utilizan para gestionar el estado de conexión como y bidireccional intercambio de información métrica que se aplicaría a muchos SCADA/IIoT en tiempo real típico, monitoreo y datos uso del sistema de recogida casos. Los tipos de mensajes definidos incluyen:


  • NBIRTH– Certificado de nacimiento para los nodos MQTT EoN.
  • NDEATH– Certificado de defunción para los nodos MQTT EoN.
  • DBIRTH– Certificado de nacimiento para dispositivos.
  • DDEATH– Certificado de defunción para Dispositivos.
  • NDATA– Mensaje de datos de nodos.
  • DDATA– Mensaje de datos del dispositivo.
  • NCMD– Mensaje de comando Node.
  • DCMD– Mensaje de comando del dispositivo.
  • ESTADO– Mensaje crítico del estado de aplicación.

Ventajas de usar estos mensajes definidos:

Utilizando estos mensajes definidos la aplicación SCADA/IIOT puede:


  • Descubrir inicialmente todos los metadatos y monitorizar el estado de cualquier EoN/Device conectado al MQTT infraestructura.
  • Descubre todas las métricas que incluyen todos los diagnósticos, propiedades, metadatos y estado actual valores.
  • Emitir mensajes de escritura/comandancia a cualquier métrica EoN/Device.

Creando Sparkplug MQTT Tipos de mensaje en IoT Simulator

MQTT EoN NBIRTH y NDeath Certificado:El primer mensaje de MQTT que un EoN nodos DEBE publicar sobre el éxito El establecimiento de una sesión MQTT es un certificado EoN BIRTH.

Crear NBIRTH: [namespace/group_id/NBIRTH/edge_node_id]


  • Click spBv1.0 y
  • Crear un Evento MQTTcon“Todo el día”configuración con cada intervalo de tiempo de 5 segundos.
  • En eso da el espacio de nombres de tema como

spBv1.0/kiln/NBIRTH/1

  • Seleccione QoS como 1 y conservar como 1
  • Dar mensaje como “NBIRTH” y guardarlo

Creación de NDEATH: [namespace/group_id/NDEATH/edge_node_id]

  • Click spBv1.0 y
  • Crear un MQTT eventocon“En desconexión”configuración.
  • En eso se da el tema como

spBv1.0/kiln/NDEATH/1

  • Seleccione QoS como 1 y conservar como 1
  • Dar el mensaje como "DENA" y guardarlo.

MQTT EoN Node Data (NDATA)

  • Una vez que un nodo MQTT EoN esté en línea con un NBIRTH adecuado, el NDATA se publicará.
  • Esto permite las ventajas de la conciencia de sesión continua nativa de MQTT para monitorear ESTADO todos los nodos MQTT EoN conectados y confiar en Report by Excepción (RBE) mensajes para cambios de estado métricos sobre la conexión de sesión del MQTT.
  • La carga útil de los mensajes NDATA contendrá cualquier RBE o tiempo basado valores métricos de los nodos EoN que necesitan ser reportados a cualquier subscripciónMQTT clientes.

Creación de NDATA:[namespace/group_id/NDATA/edge_node_id]

  • Click spBv1.0 y
  • Haga clic en el icono + y seleccioneComportamiento
  • En eso, dar el tema de comando como“NBIRTH topic namespace”y comando“NBIRTH”.
  • A continuación, da el espacio de nombres de tema NDATA en Event y da datos de evento como tiempo actual y haga clic en guardar.

spBv1.0/Kiln/NDATA/1

  • Ahora NDATA se publicará para suscriptor una vez que se suscriban el espacio de nombres de tema NDATA.

Certificado de nacimiento del dispositivo [DBRITH]

  • El nodo MQTT EoN es responsable de la gestión de todos los dispositivos físicos y/o lógicos adjuntos. Una vez que el nodo EoN ha publicado su NBIRTH, la aplicación de los clientes asegura que EoN Node es ONLINE
  • Pero cada dispositivo físico y/o lógico conectado a este nodo todavía necesita proporcionar este DBIRTH antes las aplicaciones de consumo crean/actualizan la estructura métrica (si es la primera vez que este dispositivo tiene han sido visto) y establecer cualquier métrica asociada en la aplicación a“GOOD”estado.

Creación del DBRITH:[namespace/group_id/DBIRTH/edge_node_id]

  • Click spBv1.0 y
  • Haga clic en el icono + y seleccioneComportamiento
  • En eso, dar tema de comando como “NBIRTH tema namespace” y comando “NBIRTH”.
  • A continuación, da el espacio de nombres de tema DBIRTH en Event y da datos de evento como DBIRTH y haga clic en guardar.

spBv1.0/Kiln/DBIRTH/1

  • Ahora DBIRTH se publicará a suscriptor una vez que se suscriba el espacio de nombres de tema DBIRTH.

Mensajes de datos del dispositivo (DDATA):

  • Una vez que un nodo MQTT EoN y dispositivos asociados están todos en línea con certificados de nacimiento adecuados es en un modo de quiescencia Report by Excepción (RBE) reporting of any métrica that changes.
  • Aprovecha para monitorear el STATE de todos los dispositivos conectados y puede confiar en Report by Excepción (RBE) mensajes para cualquier cambio de valor métrico sobre la conexión de sesión del MQTT.
  • Creación de DATOS:[namespace/group_id/DDATA/edge_node_id/device_id]
  • Click spBv1.0 y
  • Haga clic en el evento con “Duración Específica” durante 20 min de duración con intervalo de 10 segundos.
  • En eso se da el tema como

spBv1.0/kiln/DDATA/1/LSM213


  • Seleccione QoS como 1 y conservar como 1
  • Dar el mensaje aleatorio como “ON TOTENOFF” y haga clic en guardar.

Device Death Certificate [DDEATH]

  • Si el dispositivo se vuelve indisponible por cualquier motivo (sin respuesta, error de CRC, etc.) es responsabilidad del nodo EoN publicar un DDEATH en nombre de la Dispositivo final.
  • Una vez publicado el certificado DDEATH, cualquier cliente MQTT se suscribió a esto dispositivo debe establecer la calidad de los datos de todas las métricas“STALE”.

Creando DDEATH:

[namespace/group_id/DDEATH/edge_node_id/device_id]

  • Click spBv1.0 y
  • Haga clic en el icono + y seleccioneComportamiento
  • En eso, dar tema de comando como “DDDATA tema namespace” y comando “OFF”.
  • A continuación, da el espacio de nombres de tema DBIRTH en Event y da datos de evento como DDEATH y haga clic en guardar.

spBv1.0/Kiln/DDEATH/1

  • Ahora DDEATH se publicará a suscriptor una vez que se suscriba el espacio de nombres de tema DBIRTH basado en el DATOS.

SCADA/IIoT Certificados de Nacimiento y Muerte

  • El SCADA/IIoT Host Node es cualquier aplicación MQTT Client que se suscribe y publica mensajes.
  • En una infraestructura, los servidores MQTT mulitple proporcionan redundancia y escalabilidad, para ese MQTT EoN nodos necesita ser consciente de la“estado”de las principales aplicaciones SCADA/IIoT Host.
  • El “estado” puede ser aquejado por el conjunto único de certificados de nacimiento/muerte que el SCADA/IIoT Host MQTT Cliente publicar cuando se establezca una nueva sesión del MQTT.
  • Espacio de nombres para SCADA/IIOT Host :STATE/scada_host_id
  • Utiliza un aspecto del transporte MQTT llamado a"RETAINED"publicar mantener el estado actual de la primaria Host MQTT Cliente sesión estado a todos disponiblesServidores MQTT.
  • El formato de scada_host_id puede ser válido Estiramiento con la excepción de los caracteres reservados de ‘+’ (plus), ‘/’ (de frente), y ‘#’ (número signo).

Creación del certificado de nacimiento SCADA/IIoT

  • Haga clic en SCADA/IIOT y
  • Crear eventos con configuración “On Connect”.
  • En ese tema como SCADA/IIOT Host tema namespace/scada_host_id]: ESTADO/SCADABIRTH
  • Set Retener la bandera como “1” y QoS como “1”
  • Seleccione el tipo de mensaje como “Texto” y variante como “Constant”.
  • Dar carga o mensaje como"ONLINE".

SCADA/IIoT Certificado de Muerte Anfitriona Payload (STATE):

  • Cuando el cliente SCADA/IIoT Host MQTT establece una sesión MQTT al servidor(s), el Certificado de Muerte será parte delWill TopicyWill Payloadregistrados en el transacción MQTT CONNECT.
  • El tema de la voluntad debe ser:STATE/scada_host_id

Creación de SCADA/IIoT DEATHCertificate Payload (STATE):

  • Haga clic en SCADA/IIOT y
  • Haga clic en el botón de interruptor directamente paraLo sé.
  • En ese tema dan como:STATE/SCADADEATH
  • Dar mensaje o carga útil“OFFLINE”
  • Set Retener la bandera como “1” y QoS como “1”

MQTT EoN Node Command (NCMD)

  • El tema de comando NCMD proporciona el espacio de nombres del tema utilizado para enviar comandos a cualquier EoN conectado nodos.
  • Esto significa enviar un valor métrico actualizado a una métrica asociada incluida en la métrica NBIRTH lista.
  • Espacio de nombre del tema:namespace/group_id/NCMD/edge_node_id

Creación de MQTT EoN Node Command (NCMD)

spBv1.0/Kiln/NCMD/1

  • Establecer QoS a “1” y Retener a “1”
  • Seleccione el tipo de mensaje como JSON y haga clic en + botón.
  • En eso añadir NBIRTH métrica como:
  • ONLINE_STATE y TIEMPO ONLINE.
  • Dar la clave como ONLINE_STATE, seleccione “constant”, dar valor como TRUE y haga clic en ADD
  • Siguiente clic + botón y
  • Dar la llave como ONLINE_TIME, seleccione "variable sistema" y seleccione "$Current_time de la lista
  • siguiente clic ADD y guardar el JSON
  • Una vez que ocurrió el NBIRTH, publicar el NCMD haciendo clic en el icono de acción
  • en el lado izquierdo, ahora el NCMD enviará comandos a los nodos EoN conectados.
  • SiguienteSuscríbeteel tema NCMD en SCADA/IIOT para obtener la métrica de actualización de spBv1.0.

Comando de dispositivo (DCMD)

  • El tema DCMD proporciona el espacio de nombres temático utilizado para publicar métricas a cualquier dispositivo conectado.
  • Esto significa enviar un nuevo valor métrico a una métrica asociada incluida en la lista métrica DBIRTH.
  • Espacio de nombre del tema:namespace/group_id/DCMD/edge_node_id/device_id

Creación del Comando de Dispositivos (DCMD)

spBv1.0/Kiln/DCMD/1/LSM213

  • Establecer QoS a “1” y Retener a “1”
  • Seleccione el tipo de mensaje como JSON y haga clic en + botón.
  • En eso añadir NBIRTH métrica como:
  • ONLINE_STATE y TIEMPO ONLINE.
  • Dar la clave como ONLINE_STATE, seleccione “constant”, dar valor como TRUE y haga clic en ADD
  • Siguiente clic + botón y
  • Dar la llave como ONLINE_TIME, seleccione "variable sistema" y seleccione "$Current_time de la lista
  • siguiente clic ADD y guardar el JSON.
  • Una vez que ocurrió el DBIRTH, publicar el DCMD haciendo clic en el icono de acción
  • en el lado izquierdo, ahora el NCMD enviará comandos a los nodos EoN conectados.
  • SiguienteSuscríbeteel tema DCMD en SCADA/IIOT para obtener la métrica de actualización de spBv1.0.
  • Estos son el conjunto Sparkplug de MQTT Mensaje Tipos que se utilizan para gestionar el estado de conexión. Siguienteadjunto el Simulador de IoT Bevywisea incorporadoMQTT Brokero conectarse a cualquier MQTTBroker para iniciar la simulación Spatkplug. También crea el tipo de mensaje Sparkplug para otros Nodos.

Especificaciones de MQTT Sparkplug

Actualmente hay dos esquemas de codificación definidos Sparkplug que esta especificación soporta.


  • Primero elSparkplug A codificaciónesquema basado en la muy popular Kura open source Google Protocol Buffer definición.
  • Segundo,Sparkplug B codificaciónesquema que proporciona un modelo de datos más rico desarrollado con la retroalimentación de muchos integradores del sistema y final usuario clientes usando MQTT.

Consigue que tu entorno sea validado

Generar datos sin código

simplifica la simulación del Nodo y dispositivos EoN con un fácil interfaz de usuario