MCPcopy Index your code
hub / github.com/Cirrus-Link2/Sparkplug

github.com/Cirrus-Link2/Sparkplug @v1.1.14

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.1.14 ↗ · + Follow
3,298 symbols 8,138 edges 148 files 1,474 documented · 45%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Sparkplug

Sparkplug is a specification for MQTT enabled devices and applications to send and receive messages in a stateful way. While MQTT is stateful by nature it doesn't ensure that all data on a receiving MQTT application is current or valid. Sparkplug provides a mechanism for ensuring that remote device or application data is current and valid.

The examples here provide client libraries and reference implementations in various languages and for various devices to show how the device/remote application must connect and disconnect from the MQTT server. This includes device lifecycle messages such as the required birth and last will & testament messages that must be sent to ensure the device lifecycle state and data integrity.

The Sparkplug specification which explains these examples can be found below. There are two revisions of the specification that differ in how payloads are encoded. Both formats use Google Protocol Buffers but use different proto definitions.

(Deprecated) Sparkplug A utilizes a preexisting payload encoded definition from the Eclipse Kura IoT project. The original definition is here and is the same version that was used for the Sparplug A payload definition: https://github.com/eclipse/kura/blob/KURA_2.1.0_RELEASE/kura/org.eclipse.kura.core.cloud/src/main/protobuf/kurapayload.proto

If just starting development - it is highly recommended to use Sparkplug B.

Sparkplug B was developed to add additional features and capabilities that were not possible in the original Kura payload definition. These features include: * Complex data types using templates * Datasets * Richer metrics with the ability to add property metadata for each metric * Metric alias support to maintain rich metric naming while keeping bandwidth usage to a minimum * Historical data * File data

Sparkplug B Specification: https://s3.amazonaws.com/cirrus-link-com/Sparkplug+Topic+Namespace+and+State+ManagementV2.1+Apendix++Payload+B+format.pdf

Sparkplug A Specification (Deprecated): https://s3.amazonaws.com/cirrus-link-com/Sparkplug+Topic+Namespace+and+State+ManagementV2.1+Appendix+Payload+A+Format.pdf

Tutorials showing how to use this reference code can be found here: https://docs.chariot.io/

Extension points exported contracts — how you extend this code

MqttTraceHandler (Interface)
Interface for simple trace handling, pass the trace message to trace callback. [4 implementers]
sparkplug_b/stand_alone_examples/java_android/org.eclipse.paho.android.service/src/main/java/org/eclipse/paho/android/service/MqttTraceHandler.java
CloudPayloadEncoder (Interface)
Common interface for the PayloadEncoders [4 implementers]
client_libraries/java/src/main/java/org/eclipse/kura/core/cloud/CloudPayloadEncoder.java
OnUnsubscribeListner (Interface)
(no doc) [1 implementers]
sparkplug_b/stand_alone_examples/java_android/org.eclipse.paho.android.sample/src/main/java/org/eclipse/paho/android/sample/components/SubscriptionListItemAdapter.java
DataSetValueOrBuilder (Interface)
(no doc) [6 implementers]
client_libraries/java/src/main/java/com/cirruslink/sparkplug/protobuf/SparkplugBProto.java
ClickListener (Interface)
(no doc) [1 implementers]
sparkplug_b/stand_alone_examples/java_android/org.eclipse.paho.android.sample/src/main/java/org/eclipse/paho/android/sample/activity/FragmentDrawer.java
PayloadEncoder (Interface)
An interface for encoding payloads. @param the type of payload. [3 implementers]
client_libraries/java/src/main/java/com/cirruslink/sparkplug/message/PayloadEncoder.java
FragmentDrawerListener (Interface)
(no doc) [1 implementers]
sparkplug_b/stand_alone_examples/java_android/org.eclipse.paho.android.sample/src/main/java/org/eclipse/paho/android/sample/activity/FragmentDrawer.java
PayloadDecoder (Interface)
An interface for decoding payloads. @param the type of payload. [2 implementers]
client_libraries/java/src/main/java/com/cirruslink/sparkplug/message/PayloadDecoder.java

Core symbols most depended-on inside this repo

createMetric
called by 215
client_libraries/java/src/main/java/com/cirruslink/sparkplug/message/model/Metric.java
add
called by 195
sparkplug_b/stand_alone_examples/java_android/paho.mqtt.android.example/src/main/java/paho/mqtt/java/example/HistoryAdapter.java
get
called by 192
client_libraries/java/src/main/java/com/cirruslink/sparkplug/message/model/PropertySet.java
getDefaultInstance
called by 136
client_libraries/java/src/main/java/com/cirruslink/sparkplug/protobuf/SparkplugBProto.java
getValue
called by 114
sparkplug_b/stand_alone_examples/java_android/org.eclipse.paho.android.sample/src/main/java/org/eclipse/paho/android/sample/activity/DynamicParametersFragment.java
parseFrom
called by 113
client_libraries/java/src/main/java/com/cirruslink/sparkplug/protobuf/SparkplugBProto.java
mergeFrom
called by 102
client_libraries/java/src/main/java/com/cirruslink/sparkplug/protobuf/SparkplugBProto.java
equals
called by 97
sparkplug_b/stand_alone_examples/java_android/org.eclipse.paho.android.sample/src/main/java/org/eclipse/paho/android/sample/activity/Connection.java

Shape

Method 2,844
Class 235
Function 167
Interface 30
Enum 22

Languages

Java89%
C#5%
C4%
C++1%
Python1%
TypeScript1%

Modules by API surface

client_libraries/java/src/main/java/com/cirruslink/sparkplug/protobuf/SparkplugBProto.java1,380 symbols
client_libraries/java/src/main/java/org/eclipse/kura/core/message/protobuf/KuraPayloadProto.java323 symbols
client_libraries/c_sharp/src/SparkplugBCSharp.cs167 symbols
sparkplug_b/stand_alone_examples/java_android/org.eclipse.paho.android.sample/src/main/java/org/eclipse/paho/android/sample/activity/Connection.java49 symbols
sparkplug_b/stand_alone_examples/java_android/org.eclipse.paho.android.service/src/main/java/org/eclipse/paho/android/service/MqttAndroidClient.java48 symbols
sparkplug_b/stand_alone_examples/java_android/org.eclipse.paho.android.service/src/main/java/org/eclipse/paho/android/service/MqttConnection.java43 symbols
client_libraries/c/src/pb_decode.c42 symbols
client_libraries/java/src/main/java/com/cirruslink/sparkplug/message/model/Metric.java39 symbols
sparkplug_b/stand_alone_examples/java_android/org.eclipse.paho.android.service/src/main/java/org/eclipse/paho/android/service/MqttService.java38 symbols
sparkplug_b/stand_alone_examples/java_android/org.eclipse.paho.android.sample/src/main/java/org/eclipse/paho/android/sample/activity/MainActivity.java34 symbols
sparkplug_b/stand_alone_examples/java_android/org.eclipse.paho.android.sample/src/main/java/org/eclipse/paho/android/sample/activity/FragmentDrawer.java32 symbols
client_libraries/java/src/main/java/com/cirruslink/sparkplug/message/model/MetaData.java31 symbols

For agents

$ claude mcp add Sparkplug \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page