SparkplugNet is a library to use the Sparkplug industrial IoT (IIoT) standard in .Net. It uses MQTTnet in the background.
- Net 6.0
- Net 8.0
Sparkplug distinguishes between 5 different types of logical parts:
Part | Description |
---|---|
Primary application | The main application that needs to be always available to work with the data and store metrics. |
Applications | Other applications that work with the sent data and metrics. |
EoN nodes (Later only called nodes) | Logical devices that bundle data from end-of-network devices and publish their data. |
MQTT enabled devices | Sensors that work as a "hybrid" version of a node and a device and publish metrics and data. |
Non MQTT-enabled devices | Sensors that push data to nodes where the nodes publish their data to MQTT on their behalf. |
For basic usage, see the How to use file or the example project.
- MQTT broker that implements 100% of the MQTT 3.1.1 specification
- MQTT broker with QoS 0 and 1 support
- MQTT broker with retained messages support
- MQTT broker with last will and testament support
- MQTT broker with a flexible security system
- MQTTnet.Server for simple MQTT testing.
- HiveMQ CE with the Eclipse™ Sparkplug™ Technology Compatibility Kit for Sparkplug testing, following also issue SeppPenner#39 for more details.
- MQTT.fx has a Sparkplug data decoder. The binaries for version 1.7.1 can also be taken from https://github.com/SeppPenner/mqttfx171-backup (The software is now under development by a company and requires a license for version 1.7.1+).
- mqttMultimeter for general MQTT debugging. I guess, a Sparkplug decoder could be added once this library here is up-to-date.
- MQTTExplorer for general MQTT debugging.
- Version 1.3.0 and above: Sparkplug, version 3.0, spAv1.0 (Marked as obsolete) and spBv1.0.
- Version 1.2.0 and below: Sparkplug, version 2.2, spAv1.0 and spBv1.0.
- Version 1.3.4 renames all events from
SomethingAsync
toSomething
. (BREAKING) - Version 1.1.0 introduces the async event pattern and deprecates the "old, synchronous" events, Version 1.2.0+ will remove the old events completely. (BREAKING)
- You can enable the global setting
SparkplugGlobals.UseStrictIdentifierChecking
which prevents users from using the following chars in identifiers:
.,\@#$%^&*()[]{}|!`~:;'"<>?
- https://www.eclipse.org/tahu/spec/Sparkplug%20Topic%20Namespace%20and%20State%20ManagementV2.2-with%20appendix%20B%20format%20-%20Eclipse.pdf
- https://documents.opto22.com/2357_Industrial_Strength_MQTT_Sparkplug_B.pdf
- https://github.com/eclipse/tahu
- https://github.com/eclipse/kura/blob/develop/kura/org.eclipse.kura.core.cloud/src/main/protobuf/kurapayload.proto
- https://github.com/eclipse/tahu/blob/master/sparkplug_b/sparkplug_b_c_sharp.proto
- https://protogen.marcgravell.com/
- https://stackoverflow.com/questions/66199386/protobuf-net-how-to-use-the-any-data-type
- http://www.steves-internet-guide.com/spsparkplug-payloads-and-messages/
See the Changelog.
Thanks goes to these wonderful people (emoji key):
HansM 💻 📖 💡 🚧 📆 |
insightdocs |
OffTravel 💻 |
cjmurph 💻 |
Bo Biene 💻 |
Tim Jöhnk 💻 |
Patrick.GK 💻 |
Gerald Asp |
adityashahazilen |
shouidar |
This project follows the all-contributors specification. Contributions of any kind welcome!