/SparkplugNet

SparkplugNet is a library to use the Sparkplug industrial IoT (IIoT) standard in .Net. It uses MQTTnet in the background. The assembly was written and tested in .Net 5.0.

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

All Contributors

Available for

  • NetStandard 2.0
  • NetStandard 2.1
  • NetCore 3.1
  • Net 5.0
  • Net 6.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

Supported Sparkplug standards

  • Version 2.2, spAv1.0 and spBv1.0.

Special notes

  • Although it's not required to publish a BDSEQ metric with all messages according to the specification, this library includes it in any spBv1.0 message except the state messages because I think it's useful.
  • The library uses Serilog for logging purposes because it's very extendable (Log.Logger or similar stuff in the examples refers to the Serilog library).

Further resources

Change history

See the Changelog.

Contributors ✨

Thanks goes to these wonderful people (emoji key):


HansM

💻 📖 💡 🚧 📆 ⚠️

insightdocs

⚠️

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