/SparkplugNet

SparkplugNet is a library to use the Sparkplug industrial IoT (IIoT) standard in .Net. It uses MQTTnet in the background.

Primary LanguageC#MIT LicenseMIT

SparkplugNet

SparkplugNet is a library to use the Sparkplug industrial IoT (IIoT) standard in .Net. It uses MQTTnet in the background.

Build status GitHub issues GitHub forks GitHub stars License: MIT Nuget NuGet Downloads Known Vulnerabilities Gitter Blogger Patreon PayPal

All Contributors

Available for

  • Net 6.0
  • Net 8.0

Net Core and Net Framework latest and LTS versions

Structure

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.

Basic usage

For basic usage, see the How to use file or the example project.

Requirements

  • 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

Recommended brokers

Recommended clients

  • 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.

Supported Sparkplug standards

  • 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.

Special notes

  • Version 1.3.4 renames all events from SomethingAsync to Something. (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:
.,\@#$%^&*()[]{}|!`~:;'"<>?

Further resources

Change history

See the Changelog.

Contributors ✨

Thanks goes to these wonderful people (emoji key):

HansM
HansM

💻 📖 💡 🚧 📆 ⚠️
insightdocs
insightdocs

⚠️
OffTravel
OffTravel

💻 ⚠️
cjmurph
cjmurph

💻 ⚠️
Bo Biene
Bo Biene

💻 ⚠️
Tim Jöhnk
Tim Jöhnk

💻
Patrick.GK
Patrick.GK

💻 ⚠️ 🚇
Gerald Asp
Gerald Asp

⚠️ 💻
adityashahazilen
adityashahazilen

⚠️ 💻
shouidar
shouidar

⚠️ 💻

This project follows the all-contributors specification. Contributions of any kind welcome!