Messages
co⚡e: Sparkplug™ MQTT edge and host
home
(WikiPage)
@hermsen @i-campbell Sparkplug B Messages This Page Introduction | Topic Namespace | Message Payload & Metrics Component General Sparkplug info Infrastructure | Security | Messages Information and guides Sparkplug™ information | Preview how-to | Setup a test system with Ignition Primary Host | Add SparkplugB to an existing CODESYS project Introduction Sparkplug Messages consists of two parts; 1 Topic Namespace, 2 Message (a Payload and Metrics) The idea is simple; Basicly a Sparkplug message containing a SparkplugB encoded payload is posted in a specific Sparkplug Topic Namespace on the broker by an Edge Node or any other node that can publish messages. These message can be consumed by any other Node that is subscribed on these messages. Each EoN node can share data on a broker via a set of pre-defined topic rules (these are the namespaces). The topics follow these pre-defined rules. When your infrastucture changes, the topics will change along. If your infrastructure grows, the topics grow accordingly, if your infrastructure shrinks, your topics shrink accordingly. Each message consists of a single Topic in the form of a hierarchy and a payload which consists of one or several metrics and it's metadata. The Node decides what payload information will sent the broker (and thus shared to all other clients in the network which are subscribed) and whether this information is refreshed in a timely fashion or on change of the data (The decision of what information is shared is ultimatly determined by the goal of the software) So, it is up to the EoN node device how much information and what kind of meta data of the information is shared. Topic Namespace Sparkplug defines the Topic Namespace for a set of MQTT messages that are used to manage connection state as well as bidirectional metric information exchange that would apply to many typical real-time SCADA/IIoT, monitoring, and data collection system use cases. Using these defined messages host SCADA/IIoT applications can: 1. Discover all metadata and monitor state of any EoN/Device connected to the MQTT infrastructure. 2. Discover all metrics which include all diagnostics, properties, metadata, and current state values. 3. Issue write/command messages to any EoN/Device metric. All MQTT clients using the Sparkplug specification use the following Topic Namespace structure: namespace/group_id/message_type/edge_node_id/[device_id] Where: namespace is either “spAv1.0” or “spBv1.0” (the Sparkplug A and Sparkplug B or any new future releases of the specification), group_id is a group string reference to a logical grouping of nodes, for instance a machine, manufacturing cell or an oil pipeline section, message_type element is an name string that defines how the MQTT Server processes the message, edge_node_id is the Name ID of the MQTT Edge device that interfaces to real-world inputs and outputs or a acts as gateway device, device_id is the name ID of the end device that physically interfaces to the real-world input and outputs. The device ID is optional and not present if the edge node is the actual device interfacing to the real world inputs and outputs. namespace The root element that will define both the structure of the remaining namespace elements as well as the encoding used for the associated payload data. The current Sparkplug specification defines two namespaces Sparkplug payload definition B -> namespace element is “spBv1.0” Sparkplug payload definition A -> namespace element is “spAv1.0” (Deprecated!) group_id This provides unique logical group ID of MQTT EoN nodes. For group_id the format should be UTF-8 alphanumeric string, except for the reserved characters of ‘+’ (plus), ‘/’ (forward slash), and ‘#’ (number sign). Examples of where the group_id might be used include Cement industry where MQTT EoN nodes on different department have the different group_id message_type Element Provide the indication as to, how to handle the MQTT payload of the message. The following message_type elements are defined for the Sparkplug Topic Namespace: NBIRTH – Birth certificate for MQTT EoN nodes. NDEATH – Death certificate for MQTT EoN nodes. DBIRTH – Birth certificate for Devices. DDEATH – Death certificate for Devices. NDATA – Node data message. DDATA – Device data message. NCMD – Node command message. DCMD – Device command message. STATE – Critical application state message. edge_node_id Unique identification for the MQTT EoN nodes within the infrastructure. For edge_node_id the format should be UTF-8 alphanumeric string, except for the reserved characters of ‘+’ (plus), ‘/’ (forward slash), and ‘#’ (number sign). The edge_node_id travels with every message published, so it should be as short as possible device_id Unique ID which used to identify the device attached to the MQTT EoN node. The device_id is an optional element since some messages will be either originating or destined to the edge_node_id, in that place device_id would not be required. The format of the device_id is a valid UTF-8 alphanumeric String except for the reserved characters of ‘+’ (plus), ‘/’ (forward slash), and ‘#’ (number sign). The device_id travels with every message published, so it should be as short as possible. For an in depth overview of all namespaces see SparkPlug Specification Chapter 6. Sparkplug™ MQTT Topic Namespace Message Payload & Metrics Component As specified the second part of the message consists of a Payload and Metrics A Sparkplug B payload is the top-level component that is encoded and used in an MQTT message. It contains some basic information such as a timestamp and a sequence number as well as an array of metrics which contain key/value pairs of data. For a in depth overview of all Payload components & metrics see SparkPlug Specification Chapter 15. Sparkplug™ B v1.0 Payload Components
Last updated: 2021-05-16
Home
tansukorkem
wiki
(WikiPage)
This is the personal project of tansukorkem. This project is created automatically during user registration as an easy place to store personal data that doesn't need its own project such as cloned repositories.
Last updated: 2021-05-16
wiki Discussion
tansukorkem
wiki
(Discussion)
Forum for wiki comments
Last updated: 2021-05-16
blog Discussion
tansukorkem
blog
(Discussion)
Forum for blog comments
Last updated: 2021-05-16
(no subject)
tansukorkem
wiki
(Thread)
Last updated: 2021-05-16
Home
rstaffel
wiki
(WikiPage)
This is the personal project of rstaffel. This project is created automatically during user registration as an easy place to store personal data that doesn't need its own project such as cloned repositories.
Last updated: 2021-05-17
wiki Discussion
rstaffel
wiki
(Discussion)
Forum for wiki comments
Last updated: 2021-05-17
blog Discussion
rstaffel
blog
(Discussion)
Forum for blog comments
Last updated: 2021-05-17
(no subject)
rstaffel
wiki
(Thread)
Last updated: 2021-05-17
wiki Discussion
sean-barton
wiki
(Discussion)
Forum for wiki comments
Last updated: 2021-05-17
blog Discussion
sean-barton
blog
(Discussion)
Forum for blog comments
Last updated: 2021-05-17
Home
sean-barton
wiki
(WikiPage)
This is the personal project of sean-barton. This project is created automatically during user registration as an easy place to store personal data that doesn't need its own project such as cloned repositories.
Last updated: 2021-05-17