Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/sepppenner/sparkplugnet

SparkplugNet is a library to use the Sparkplug industrial IoT (IIoT) standard in .Net. It uses MQTTnet in the background.
https://github.com/sepppenner/sparkplugnet

mqtt mqttnet sparkplug sparkplug-b sparkplugnet

Last synced: 4 days ago
JSON representation

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

Awesome Lists containing this project

README

        

SparkplugNet
====================================

SparkplugNet is a library to use the Sparkplug industrial IoT (IIoT) standard in .Net. It uses [MQTTnet](https://github.com/chkr1011/MQTTnet) in the background.

[![Build status](https://ci.appveyor.com/api/projects/status/w6pu8fcav4n7651t?svg=true)](https://ci.appveyor.com/project/SeppPenner/sparkplugnet)
[![GitHub issues](https://img.shields.io/github/issues/SeppPenner/SparkplugNet.svg)](https://github.com/SeppPenner/SparkplugNet/issues)
[![GitHub forks](https://img.shields.io/github/forks/SeppPenner/SparkplugNet.svg)](https://github.com/SeppPenner/SparkplugNet/network)
[![GitHub stars](https://img.shields.io/github/stars/SeppPenner/SparkplugNet.svg)](https://github.com/SeppPenner/SparkplugNet/stargazers)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://raw.githubusercontent.com/SeppPenner/SparkplugNet/master/License.txt)
[![Nuget](https://img.shields.io/badge/SparkplugNet-Nuget-brightgreen.svg)](https://www.nuget.org/packages/SparkplugNet/)
[![NuGet Downloads](https://img.shields.io/nuget/dt/SparkplugNet.svg)](https://www.nuget.org/packages/SparkplugNet/)
[![Known Vulnerabilities](https://snyk.io/test/github/SeppPenner/SparkplugNet/badge.svg)](https://snyk.io/test/github/SeppPenner/SparkplugNet)
[![Gitter](https://img.shields.io/matrix/SparkplugNet_community%3Agitter.im?server_fqdn=matrix.org)](https://matrix.to/#/#SparkplugNet_community:gitter.im)
[![Blogger](https://img.shields.io/badge/Follow_me_on-blogger-orange)](https://franzhuber23.blogspot.de/)
[![Patreon](https://img.shields.io/badge/Patreon-F96854?logo=patreon&logoColor=white)](https://patreon.com/SeppPennerOpenSourceDevelopment)
[![PayPal](https://img.shields.io/badge/PayPal-00457C?logo=paypal&logoColor=white)](https://paypal.me/th070795)

[![All Contributors](https://img.shields.io/badge/all_contributors-10-orange.svg?style=flat-square)](#contributors-)

## Available for
* Net 8.0
* Net 9.0

## Net Core and Net Framework latest and LTS versions
* https://dotnet.microsoft.com/download/dotnet

## 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](./HowToUse.md) or the [example project](https://github.com/SeppPenner/SparkplugNet/blob/master/src/SparkplugNet.Examples/Program.cs).

## 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
* [MQTTnet.Server](https://github.com/chkr1011/MQTTnet.Server) for simple MQTT testing.
* [HiveMQ CE](https://github.com/hivemq/hivemq-community-edition) with the [Eclipse™ Sparkplug™ Technology Compatibility Kit](https://github.com/eclipse-sparkplug/sparkplug/blob/develop/tck/UserGuide.adoc) for Sparkplug testing, following also issue https://github.com/SeppPenner/SparkplugNet/issues/39 for more details.

## Recommended clients
* [MQTT.fx](http://www.mqttfx.jensd.de/) 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](https://github.com/chkr1011/mqttMultimeter) for general MQTT debugging. I guess, a Sparkplug decoder could be added once this library here is up-to-date.
* [MQTTExplorer](https://mqtt-explorer.com/) 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:

```log
.,\@#$%^&*()[]{}|!`~:;'"<>?
```

## Further resources
* 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/

Change history
--------------

See the [Changelog](https://github.com/SeppPenner/SparkplugNet/blob/master/Changelog.md).

## Contributors ✨

Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/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](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!